api/openapi.snapshot.json
Rama master · réplica de lectura del repositorio original.
{
"components": {
"schemas": {
"Application": {
"description": "A Hook0 application.",
"properties": {
"application_id": {
"description": "Unique identifier of the application.",
"format": "uuid",
"type": "string"
},
"name": {
"description": "Name of the application. Length: 2-50 characters.",
"type": "string"
},
"organization_id": {
"description": "UUID of the organization this application belongs to.",
"format": "uuid",
"type": "string"
}
},
"required": [
"application_id",
"name",
"organization_id"
],
"type": "object"
},
"ApplicationInfo": {
"description": "Detailed information about a Hook0 application.",
"properties": {
"application_id": {
"description": "Unique identifier of the application.",
"format": "uuid",
"type": "string"
},
"consumption": {
"description": "Current consumption metrics for this application.",
"properties": {
"events_per_day": {
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"name": {
"description": "Name of the application. Length: 2-50 characters.",
"type": "string"
},
"onboarding_steps": {
"description": "Onboarding completion status for this application.",
"properties": {
"event": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
},
"event_type": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
},
"subscription": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
}
},
"required": [
"event",
"event_type",
"subscription"
],
"type": "object"
},
"organization_id": {
"description": "UUID of the organization this application belongs to.",
"format": "uuid",
"type": "string"
},
"quotas": {
"description": "Quota limits for this application.",
"properties": {
"days_of_events_retention_limit": {
"format": "int32",
"type": "integer"
},
"events_per_day_limit": {
"format": "int32",
"type": "integer"
}
},
"required": [
"days_of_events_retention_limit",
"events_per_day_limit"
],
"type": "object"
}
},
"required": [
"application_id",
"consumption",
"name",
"onboarding_steps",
"organization_id",
"quotas"
],
"type": "object"
},
"ApplicationPost": {
"description": "Request body to create a new application.",
"properties": {
"name": {
"description": "Name of the application. Length: 2-50 characters.",
"type": "string"
},
"organization_id": {
"description": "UUID of the organization this application belongs to.",
"format": "uuid",
"type": "string"
}
},
"required": [
"name",
"organization_id"
],
"type": "object"
},
"ApplicationSecret": {
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"deleted_at": {
"format": "date-time",
"type": "string"
},
"name": {
"type": "string"
},
"token": {
"format": "uuid",
"type": "string"
}
},
"required": [
"created_at",
"token"
],
"type": "object"
},
"ApplicationSecretPost": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"application_id"
],
"type": "object"
},
"Event": {
"properties": {
"event_id": {
"format": "uuid",
"type": "string"
},
"event_type_name": {
"type": "string"
},
"ip": {
"type": "string"
},
"labels": {
"type": "object"
},
"metadata": {
"type": "object"
},
"occurred_at": {
"format": "date-time",
"type": "string"
},
"payload_content_type": {
"type": "string"
},
"received_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"event_id",
"event_type_name",
"ip",
"labels",
"occurred_at",
"payload_content_type",
"received_at"
],
"type": "object"
},
"EventPost": {
"description": "Event to be ingested into Hook0.",
"properties": {
"application_id": {
"description": "UUID of the application this event belongs to.",
"format": "uuid",
"type": "string"
},
"event_id": {
"description": "Optional unique identifier for this event (client-generated UUID). If not provided, a UUIDv7 will be generated by the server.",
"format": "uuid",
"type": "string"
},
"event_type": {
"description": "The type of event (e.g., 'user.created', 'order.completed'). Length: 1-200 characters.",
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"description": "Labels for event filtering and routing to subscriptions.",
"type": "object"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Optional metadata key-value pairs associated with the event.",
"type": "object"
},
"occurred_at": {
"description": "Timestamp when the event occurred.",
"format": "date-time",
"type": "string"
},
"payload": {
"description": "The event payload. For binary content, use base64 encoding. Max length: 699050 characters (512 KiB base64-encoded).",
"type": "string"
},
"payload_content_type": {
"description": "Content type of the payload. Valid values: text/plain, application/json, application/octet-stream+base64. Length: 1-100 characters.",
"type": "string"
}
},
"required": [
"application_id",
"event_type",
"labels",
"occurred_at",
"payload",
"payload_content_type"
],
"type": "object"
},
"EventType": {
"properties": {
"event_type_name": {
"type": "string"
},
"resource_type_name": {
"type": "string"
},
"service_name": {
"type": "string"
},
"verb_name": {
"type": "string"
}
},
"required": [
"event_type_name",
"resource_type_name",
"service_name",
"verb_name"
],
"type": "object"
},
"EventTypePost": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
},
"resource_type": {
"type": "string"
},
"service": {
"type": "string"
},
"verb": {
"type": "string"
}
},
"required": [
"application_id",
"resource_type",
"service",
"verb"
],
"type": "object"
},
"EventWithPayload": {
"properties": {
"event_id": {
"format": "uuid",
"type": "string"
},
"event_type_name": {
"type": "string"
},
"ip": {
"type": "string"
},
"labels": {
"type": "object"
},
"metadata": {
"type": "object"
},
"occurred_at": {
"format": "date-time",
"type": "string"
},
"payload": {
"type": "string"
},
"payload_content_type": {
"type": "string"
},
"received_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"event_id",
"event_type_name",
"ip",
"labels",
"occurred_at",
"payload",
"payload_content_type",
"received_at"
],
"type": "object"
},
"EventsPerDayEntry": {
"properties": {
"amount": {
"format": "int32",
"type": "integer"
},
"application_id": {
"format": "uuid",
"type": "string"
},
"application_name": {
"type": "string"
},
"date": {
"format": "date",
"type": "string"
},
"is_provisional": {
"type": "boolean"
}
},
"required": [
"amount",
"application_id",
"application_name",
"date",
"is_provisional"
],
"type": "object"
},
"IngestedEvent": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
},
"event_id": {
"format": "uuid",
"type": "string"
},
"received_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"application_id",
"event_id",
"received_at"
],
"type": "object"
},
"InstanceConfig": {
"properties": {
"application_secret_compatibility": {
"type": "boolean"
},
"auto_db_migration": {
"type": "boolean"
},
"biscuit_public_key": {
"type": "string"
},
"cloudflare_turnstile_site_key": {
"type": "string"
},
"formbricks": {
"properties": {
"api_host": {
"type": "string"
},
"environment_id": {
"type": "string"
}
},
"required": [
"api_host",
"environment_id"
],
"type": "object"
},
"matomo": {
"properties": {
"site_id": {
"format": "int32",
"type": "integer"
},
"url": {
"type": "string"
}
},
"required": [
"site_id",
"url"
],
"type": "object"
},
"password_minimum_length": {
"format": "int32",
"type": "integer"
},
"quota_enforcement": {
"type": "boolean"
},
"registration_disabled": {
"type": "boolean"
},
"support_email_address": {
"type": "string"
}
},
"required": [
"application_secret_compatibility",
"auto_db_migration",
"biscuit_public_key",
"password_minimum_length",
"quota_enforcement",
"registration_disabled",
"support_email_address"
],
"type": "object"
},
"Organization": {
"properties": {
"name": {
"type": "string"
},
"organization_id": {
"format": "uuid",
"type": "string"
},
"plan": {
"properties": {
"label": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"label",
"name"
],
"type": "object"
},
"role": {
"type": "string"
}
},
"required": [
"name",
"organization_id",
"role"
],
"type": "object"
},
"OrganizationInfo": {
"properties": {
"consumption": {
"properties": {
"applications": {
"format": "int64",
"type": "integer"
},
"events_per_day": {
"format": "int64",
"type": "integer"
},
"members": {
"format": "int64",
"type": "integer"
}
},
"type": "object"
},
"name": {
"type": "string"
},
"onboarding_steps": {
"properties": {
"application": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
},
"event": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
},
"event_type": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
},
"subscription": {
"enum": [
"ToDo",
"Done"
],
"type": "string"
}
},
"required": [
"application",
"event",
"event_type",
"subscription"
],
"type": "object"
},
"organization_id": {
"format": "uuid",
"type": "string"
},
"plan": {
"properties": {
"label": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"label",
"name"
],
"type": "object"
},
"quotas": {
"properties": {
"applications_per_organization_limit": {
"format": "int32",
"type": "integer"
},
"days_of_events_retention_limit": {
"format": "int32",
"type": "integer"
},
"events_per_day_limit": {
"format": "int32",
"type": "integer"
},
"members_per_organization_limit": {
"format": "int32",
"type": "integer"
}
},
"required": [
"applications_per_organization_limit",
"days_of_events_retention_limit",
"events_per_day_limit",
"members_per_organization_limit"
],
"type": "object"
},
"users": {
"items": {
"properties": {
"email": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"role": {
"type": "string"
},
"user_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"email",
"first_name",
"last_name",
"role",
"user_id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"consumption",
"name",
"onboarding_steps",
"organization_id",
"quotas",
"users"
],
"type": "object"
},
"Problem": {
"description": "The body every Hook0 error answers with, in RFC 7807 problem format.\n\n Its members are exactly the ones the API writes on the wire, so a client generated from the\n published schema can read an error response whole rather than the part of it somebody\n remembered to declare.",
"properties": {
"detail": {
"type": "string"
},
"id": {
"description": "Identifier of the problem that occurred, stable across releases",
"enum": [
"OrganizationNameMissing",
"UserAlreadyExist",
"RegistrationDisabled",
"PasswordTooShort",
"PasswordTooLong",
"PasswordSimilarToEmail",
"PasswordSimilarToName",
"PasswordTooCommon",
"PasswordNotDiverseEnough",
"OrganizationIsNotEmpty",
"InvitedUserDoesNotExist",
"InvitedUserAlreadyInOrganization",
"ApplicationNameMissing",
"InvalidRole",
"EventTypeAlreadyExist",
"EventTypeDoesNotExist",
"UnauthorizedWorkers",
"EventAlreadyIngested",
"EventInvalidPayloadContentType",
"EventInvalidBase64Payload",
"EventInvalidJsonPayload",
"LabelsAmbiguity",
"InvalidDateRange",
"AuthNoAuthorizationHeader",
"AuthInvalidAuthorizationHeader",
"AuthApplicationSecretLookupError",
"AuthInvalidApplicationSecret",
"AuthBiscuitLookupError",
"AuthInvalidBiscuit",
"AuthFailedLogin",
"AuthEmailNotVerified",
"AuthEmailAlreadyVerified",
"AuthFailedRefresh",
"AuthEmailExpired",
"TooManyOrganizationsPerUser",
"TooManyMembersPerOrganization",
"TooManyApplicationsPerOrganization",
"TooManyEventsToday",
"TooManySubscriptionsPerApplication",
"TooManyEventTypesPerApplication",
"JsonPayload",
"Validation",
"NotFound",
"InternalServerError",
"Forbidden",
"RateLimited",
"ServiceUnavailable"
],
"type": "string"
},
"status": {
"format": "int32",
"type": "integer"
},
"title": {
"type": "string"
},
"type": {
"description": "Documentation page of this problem, which is also what distinguishes one problem type from\n another as RFC 7807 asks. Prefer matching on `id`: it says the same thing without parsing\n a URL.",
"type": "string"
},
"validation": {
"description": "Which submitted values were rejected and why, keyed by the name of the field they were\n submitted under. Carried by validation failures (`Validation`, status 422) and `null` for\n every other problem, as nothing else has a field to point at.\n\n The value of a key is either the list of failures on that field — each one a `code`, an\n optional `message` and the `params` the check was run with — or the same structure again\n for a nested object, or a map from index to that structure for a list. Nesting follows the\n shape of the submitted body and is therefore left free-form rather than modelled.",
"type": "object"
}
},
"required": [
"detail",
"id",
"status",
"title",
"type"
],
"type": "object"
},
"QuotasResponse": {
"properties": {
"enabled": {
"type": "boolean"
},
"limits": {
"properties": {
"global_applications_per_organization_limit": {
"format": "int32",
"type": "integer"
},
"global_days_of_events_retention_limit": {
"format": "int32",
"type": "integer"
},
"global_event_types_per_application_limit": {
"format": "int32",
"type": "integer"
},
"global_events_per_day_limit": {
"format": "int32",
"type": "integer"
},
"global_free_organizations_per_user_limit": {
"format": "int32",
"type": "integer"
},
"global_members_per_organization_limit": {
"format": "int32",
"type": "integer"
},
"global_subscriptions_per_application_limit": {
"format": "int32",
"type": "integer"
}
},
"required": [
"global_applications_per_organization_limit",
"global_days_of_events_retention_limit",
"global_event_types_per_application_limit",
"global_events_per_day_limit",
"global_free_organizations_per_user_limit",
"global_members_per_organization_limit",
"global_subscriptions_per_application_limit"
],
"type": "object"
}
},
"required": [
"enabled",
"limits"
],
"type": "object"
},
"ReplayEvent": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"application_id"
],
"type": "object"
},
"RequestAttempt": {
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"delay_until": {
"format": "date-time",
"type": "string"
},
"event": {
"properties": {
"event_id": {
"format": "uuid",
"type": "string"
},
"event_type_name": {
"type": "string"
}
},
"required": [
"event_id",
"event_type_name"
],
"type": "object"
},
"event_id": {
"format": "uuid",
"type": "string"
},
"failed_at": {
"format": "date-time",
"type": "string"
},
"http_response_status": {
"format": "int32",
"type": "integer"
},
"picked_at": {
"format": "date-time",
"type": "string"
},
"request_attempt_id": {
"format": "uuid",
"type": "string"
},
"response_id": {
"format": "uuid",
"type": "string"
},
"retry_count": {
"format": "int32",
"type": "integer"
},
"status": {
"description": "Status of a request attempt. The 'type' field indicates the status variant. - waiting: {type, since, until} - Scheduled for future delivery - pending: {type, since} - Ready to be processed - paused: {type, since} - Held back because the subscription's endpoint has recently been failing; released gradually - in_progress: {type, since} - Currently being delivered - successful: {type, at, full_processing_ms} - Delivered successfully - failed: {type, at, full_processing_ms} - Delivery failed",
"properties": {
"at": {
"description": "Timestamp when completed (present in successful, failed)",
"format": "date-time",
"type": "string"
},
"full_processing_ms": {
"description": "Total processing time in milliseconds (present in successful, failed)",
"format": "int64",
"type": "integer"
},
"since": {
"description": "Timestamp when the status started (present in waiting, pending, paused, in_progress)",
"format": "date-time",
"type": "string"
},
"type": {
"description": "Status type discriminator. One of: waiting, pending, paused, in_progress, successful, failed",
"enum": [
"waiting",
"pending",
"paused",
"in_progress",
"successful",
"failed"
],
"type": "string"
},
"until": {
"description": "Timestamp until which waiting (only present in waiting status)",
"format": "date-time",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"subscription": {
"properties": {
"description": {
"type": "string"
},
"subscription_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"subscription_id"
],
"type": "object"
},
"succeeded_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"created_at",
"event",
"event_id",
"request_attempt_id",
"retry_count",
"status",
"subscription"
],
"type": "object"
},
"Response": {
"properties": {
"body": {
"type": "string"
},
"elapsed_time_ms": {
"format": "int32",
"type": "integer"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"http_code": {
"format": "int32",
"type": "integer"
},
"response_error_name": {
"type": "string"
},
"response_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"response_id"
],
"type": "object"
},
"ServiceToken": {
"properties": {
"biscuit": {
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"name": {
"type": "string"
},
"token_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"biscuit",
"created_at",
"name",
"token_id"
],
"type": "object"
},
"ServiceTokenPost": {
"properties": {
"name": {
"type": "string"
},
"organization_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"name",
"organization_id"
],
"type": "object"
},
"Subscription": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"dedicated_workers": {
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"type": "string"
},
"event_types": {
"items": {
"type": "string"
},
"type": "array"
},
"is_enabled": {
"type": "boolean"
},
"label_key": {
"description": "_Kept for backward compatibility, you should use `labels`_",
"type": "string"
},
"label_value": {
"description": "_Kept for backward compatibility, you should use `labels`_",
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"secret": {
"description": "HMAC signing secret shared with the receiver. Present only for\n configuration-capable callers (Editor, service or master token); omitted\n entirely for a read-only Viewer. Absent field, never `null`.",
"format": "uuid",
"type": "string"
},
"subscription_id": {
"format": "uuid",
"type": "string"
},
"target": {
"properties": {
"headers": {
"type": "object"
},
"method": {
"type": "string"
},
"type": {
"example": "http",
"type": "string"
},
"url": {
"format": "url",
"type": "string"
}
},
"required": [
"headers",
"method",
"type",
"url"
],
"type": "object"
},
"updated_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"application_id",
"created_at",
"dedicated_workers",
"event_types",
"is_enabled",
"label_key",
"label_value",
"labels",
"metadata",
"subscription_id",
"target",
"updated_at"
],
"type": "object"
},
"SubscriptionPost": {
"properties": {
"application_id": {
"format": "uuid",
"type": "string"
},
"dedicated_workers": {
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"type": "string"
},
"event_types": {
"items": {
"type": "string"
},
"type": "array"
},
"is_enabled": {
"type": "boolean"
},
"label_key": {
"description": "_Kept for backward compatibility, you should use `labels`_",
"type": "string"
},
"label_value": {
"description": "_Kept for backward compatibility, you should use `labels`_",
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"target": {
"properties": {
"headers": {
"type": "object"
},
"method": {
"type": "string"
},
"type": {
"example": "http",
"type": "string"
},
"url": {
"format": "url",
"type": "string"
}
},
"required": [
"headers",
"method",
"type",
"url"
],
"type": "object"
}
},
"required": [
"application_id",
"event_types",
"is_enabled",
"target"
],
"type": "object"
}
},
"securitySchemes": {
"biscuit": {
"description": "Authentication using a Biscuit token (use the format `Bearer TOKEN`)",
"in": "header",
"name": "Authorization",
"type": "apiKey"
}
}
},
"info": {
"description": "Core REST API of Hook0 — Open-Source Webhooks as a service for SaaS",
"title": "Hook0 API",
"version": "3.0.0"
},
"openapi": "3.0.0",
"paths": {
"/api/v1/application_secrets/": {
"get": {
"description": "Retrieves all active API tokens for a given application.",
"operationId": "applicationSecrets.read",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ApplicationSecret"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List application secrets",
"tags": [
"Applications Management",
"sdk"
]
},
"post": {
"description": "Generates a new API token for an application.",
"operationId": "applicationSecrets.create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationSecretPost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationSecret"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Create a new application secret",
"tags": [
"Applications Management",
"sdk"
]
}
},
"/api/v1/application_secrets/{application_secret_token}": {
"delete": {
"description": "Marks an API token as revoked, preventing any further use. This operation is irreversible.",
"operationId": "applicationSecrets.delete",
"parameters": [
{
"in": "path",
"name": "application_secret_token",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Delete an application secret",
"tags": [
"Applications Management",
"sdk"
]
},
"put": {
"description": "Updates the name of an existing API token.",
"operationId": "applicationSecrets.update",
"parameters": [
{
"in": "path",
"name": "application_secret_token",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationSecretPost"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationSecret"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Update an application secret",
"tags": [
"Applications Management",
"sdk"
]
}
},
"/api/v1/applications/": {
"get": {
"description": "Retrieves all applications within an organization. Each application contains event types, subscriptions, and events. Use organization_id query parameter to filter by organization.",
"operationId": "applications.list",
"parameters": [
{
"in": "query",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Application"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List applications",
"tags": [
"Applications Management",
"mcp",
"sdk"
]
},
"post": {
"description": "Creates a new Hook0 application within an organization. An application is the container for event types, subscriptions, and events. Use this when setting up a new service that will emit or receive webhook events. Creation also provisions an application secret named 'Default', so there is no need to create a first API key afterwards: read it with applicationSecrets.read. That secret is scoped to this application alone, but within it grants full control (sending events, and managing event types, subscriptions and secrets), so it must be handled as a credential.",
"operationId": "applications.create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationPost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Application"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Create a new application",
"tags": [
"Applications Management",
"mcp",
"sdk"
]
}
},
"/api/v1/applications/{application_id}": {
"delete": {
"description": "Permanently deletes an application. No more events will be emitted, and all active webhook subscriptions will be removed. All pending request attempts will be automatically marked as failed. This action is irreversible.",
"operationId": "applications.delete",
"parameters": [
{
"in": "path",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Delete an application",
"tags": [
"Applications Management",
"mcp",
"sdk"
]
},
"get": {
"description": "Retrieves details about a specific application, including quotas, consumption statistics, and onboarding progress. Use this to check application health and usage limits.",
"operationId": "applications.get",
"parameters": [
{
"in": "path",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationInfo"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get an application by its ID",
"tags": [
"Applications Management",
"mcp",
"sdk"
]
},
"put": {
"description": "Updates the name of an existing application. Use this to rename applications for better organization.",
"operationId": "applications.update",
"parameters": [
{
"in": "path",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationPost"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Application"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Edit an application",
"tags": [
"Applications Management",
"mcp",
"sdk"
]
}
},
"/api/v1/errors/": {
"get": {
"description": "List of every possible errors that Hook0 can return. Each error is in RFC7807 problem format.",
"operationId": "errors.list",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Problem"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"summary": "List errors",
"tags": [
"Hook0",
"sdk"
]
}
},
"/api/v1/event/": {
"post": {
"description": "Sends an event to Hook0 for processing. The event will be matched against active subscriptions based on event type and labels, triggering webhook deliveries to matching endpoints. Requires event_type, payload, payload_content_type, labels, and occurred_at.",
"operationId": "events.ingest",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventPost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IngestedEvent"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Ingest an event",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/event_types/": {
"get": {
"description": "Retrieves all active event types for an application. Event types follow the pattern 'service.resource.verb'. Use application_id query parameter to filter by application.",
"operationId": "eventTypes.list",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/EventType"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List event types",
"tags": [
"Events Management",
"mcp",
"sdk"
]
},
"post": {
"description": "Registers a new event type for an application. Event types follow the pattern 'service.resource.verb' (e.g., 'order.payment.completed'). Subscriptions can filter which event types trigger webhooks.",
"operationId": "eventTypes.create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypePost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventType"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Create a new event type",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/event_types/{event_type_name}": {
"delete": {
"description": "Deactivates an event type, preventing it from being used for new events. Existing events using this type remain unaffected. Use this to clean up unused event types.",
"operationId": "eventTypes.delete",
"parameters": [
{
"in": "path",
"name": "event_type_name",
"required": true,
"schema": {
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Delete an event type",
"tags": [
"Events Management",
"mcp",
"sdk"
]
},
"get": {
"description": "Retrieves details of a specific event type by its name (e.g., 'order.payment.completed'). Returns the service, resource type, and verb components.",
"operationId": "eventTypes.get",
"parameters": [
{
"in": "path",
"name": "event_type_name",
"required": true,
"schema": {
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventType"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get an event type by its name",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/events/": {
"get": {
"description": "Retrieves the 100 most recently ingested events for an application. Each event includes its type, payload content type, metadata, labels, and timestamps. Use application_id query parameter to filter by application.",
"operationId": "events.list",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Event"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List latest events",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/events/{event_id}": {
"get": {
"description": "Retrieves full details of a specific event including its payload (base64-encoded), event type, content type, metadata, labels, and timestamps. The event must belong to the specified application.",
"operationId": "events.get",
"parameters": [
{
"in": "path",
"name": "event_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventWithPayload"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get an event by its ID",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/events/{event_id}/replay": {
"post": {
"description": "Re-triggers webhook deliveries for an existing event. All active subscriptions matching the event type and labels will receive the event again. Useful for retrying failed deliveries or testing webhooks.",
"operationId": "events.replay",
"parameters": [
{
"in": "path",
"name": "event_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReplayEvent"
}
}
},
"required": true
},
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Replay an event",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/events_per_day/application": {
"get": {
"description": "Retrieves the number of events ingested per day for a specific application.",
"operationId": "events_per_day.list_for_application",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"description": "Start of date range (inclusive). Defaults to 30 days before `to`.",
"in": "query",
"name": "from",
"schema": {
"format": "date",
"type": "string"
},
"style": "form"
},
{
"description": "End of date range (inclusive). Defaults to today.",
"in": "query",
"name": "to",
"schema": {
"format": "date",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/EventsPerDayEntry"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List events per day for an application",
"tags": [
"Events Management",
"sdk"
]
}
},
"/api/v1/events_per_day/organization": {
"get": {
"description": "Retrieves the number of events ingested per day across all applications in an organization.",
"operationId": "events_per_day.list_for_organization",
"parameters": [
{
"description": "Start of date range (inclusive). Defaults to 30 days before `to`.",
"in": "query",
"name": "from",
"schema": {
"format": "date",
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"description": "End of date range (inclusive). Defaults to today.",
"in": "query",
"name": "to",
"schema": {
"format": "date",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/EventsPerDayEntry"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List events per day for an organization",
"tags": [
"Events Management",
"sdk"
]
}
},
"/api/v1/instance/": {
"get": {
"description": "Get an object that shows how this instance is configured.",
"operationId": "instance.get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InstanceConfig"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"summary": "Get instance configuration",
"tags": [
"Hook0",
"sdk"
]
}
},
"/api/v1/organizations/": {
"get": {
"description": "Retrieves all organizations the current API token has access to, with the associated roles and plan information. Use this to discover which organizations you can manage.",
"operationId": "organizations.list",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Organization"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List organizations",
"tags": [
"Organizations Management",
"mcp"
]
}
},
"/api/v1/organizations/{organization_id}/": {
"get": {
"description": "Retrieves details about a specific organization, including members, quotas, consumption statistics, and onboarding progress. Use this to check organization health and usage limits.",
"operationId": "organizations.get",
"parameters": [
{
"in": "path",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationInfo"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get organization's info by its ID",
"tags": [
"Organizations Management",
"mcp"
]
}
},
"/api/v1/payload_content_types/": {
"get": {
"description": "Returns the list of valid content types for event payloads: 'text/plain' for plain text, 'application/json' for JSON data, 'application/octet-stream+base64' for binary data encoded as base64.",
"operationId": "payload_content_types.list",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"type": "string"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"summary": "List supported event payload content types",
"tags": [
"Events Management",
"mcp",
"sdk"
]
}
},
"/api/v1/quotas/": {
"get": {
"description": "Get the current quotas limitations on the instance.",
"operationId": "quotas.get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuotasResponse"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"summary": "Get quotas",
"tags": [
"Hook0",
"sdk"
]
}
},
"/api/v1/request_attempts/": {
"get": {
"description": "Retrieves webhook delivery attempts for an application. Each attempt shows the delivery status (pending, paused, in_progress, successful, failed, waiting), retry count, and timestamps. Filter by event_id, subscription_id, date range, or event types. Paginated via Link header.",
"operationId": "requestAttempts.read",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"description": "Comma-separated event types",
"in": "query",
"name": "event.event_type_names",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "event_id",
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "max_created_at",
"schema": {
"format": "date-time",
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "min_created_at",
"schema": {
"format": "date-time",
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "pagination_cursor",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "subscription_id",
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/RequestAttempt"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List request attempts",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
}
},
"/api/v1/request_attempts/{request_attempt_id}": {
"get": {
"description": "Retrieves a single webhook delivery attempt by ID, including delivery status, retry count, timestamps, and HTTP response status.",
"operationId": "requestAttempts.get",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"in": "path",
"name": "request_attempt_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestAttempt"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get a request attempt by its ID",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
}
},
"/api/v1/responses/{response_id}": {
"get": {
"description": "A response is produced when a request attempt is processed. Response IDs can be obtained from request attempts details.",
"operationId": "response.get",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
},
{
"in": "path",
"name": "response_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Response"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get a response by its ID",
"tags": [
"Subscriptions Management",
"sdk"
]
}
},
"/api/v1/service_token/": {
"get": {
"description": "Retrieves all active service tokens for a given organization. Expired or revoked tokens are not included in the response.",
"operationId": "serviceToken.list",
"parameters": [
{
"in": "query",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ServiceToken"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List service tokens",
"tags": [
"Service Tokens Management",
"sdk"
]
},
"post": {
"description": "Creates a new organization-wide API key (service token) that allows external applications to send API requests to Hook0. The token can be attenuated to limit its scope for better security.",
"operationId": "serviceToken.create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceTokenPost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceToken"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Create a new service token",
"tags": [
"Service Tokens Management",
"sdk"
]
}
},
"/api/v1/service_token/{service_token_id}": {
"delete": {
"description": "Marks a service token as expired, effectively revoking its access. This operation is irreversible.",
"operationId": "serviceToken.delete",
"parameters": [
{
"in": "path",
"name": "service_token_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Delete a service token",
"tags": [
"Service Tokens Management",
"sdk"
]
},
"get": {
"description": "Retrieves details of a specific service token if it belongs to the specified organization and is still active.",
"operationId": "serviceToken.get",
"parameters": [
{
"in": "path",
"name": "service_token_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "organization_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceToken"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get a service token",
"tags": [
"Service Tokens Management",
"sdk"
]
},
"put": {
"description": "Updates the name of an existing service token. The token must belong to the specified organization and still be active (not expired or revoked).",
"operationId": "serviceToken.edit",
"parameters": [
{
"in": "path",
"name": "service_token_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceTokenPost"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceToken"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Edit a service token",
"tags": [
"Service Tokens Management",
"sdk"
]
}
},
"/api/v1/subscriptions/": {
"get": {
"description": "Retrieves all active webhook subscriptions for an application. Each subscription defines which event types to listen for and where to deliver them (HTTP endpoint). Use application_id query parameter to filter by application.",
"operationId": "subscriptions.list",
"parameters": [
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Subscription"
},
"type": "array"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "List subscriptions",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
},
"post": {
"description": "Creates a webhook subscription that listens for specific event types and delivers them to an HTTP endpoint. Configure the target URL, HTTP method, headers, event type filters, labels for routing, and optional metadata.",
"operationId": "subscriptions.create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPost"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Subscription"
}
}
},
"description": "Created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Create a new subscription",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
}
},
"/api/v1/subscriptions/{subscription_id}": {
"delete": {
"description": "Permanently deletes a webhook subscription. No more events will be delivered to this endpoint, and all pending deliveries are marked as failed. This action is irreversible.",
"operationId": "subscriptions.delete",
"parameters": [
{
"in": "path",
"name": "subscription_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
},
{
"in": "query",
"name": "application_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "form"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Delete a subscription",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
},
"get": {
"description": "Retrieves full details of a specific webhook subscription including target URL, HTTP method, headers, event types, labels, and metadata. The subscription must exist and not be deleted.",
"operationId": "subscriptions.get",
"parameters": [
{
"in": "path",
"name": "subscription_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Subscription"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Get a subscription by its ID",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
},
"put": {
"description": "Modifies an existing webhook subscription. You can update the target URL, HTTP method, headers, event types, labels, metadata, and enabled status. Disabling a subscription marks all pending webhook deliveries as failed (they won't retry if re-enabled).",
"operationId": "subscriptions.update",
"parameters": [
{
"in": "path",
"name": "subscription_id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
},
"style": "simple"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionPost"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Subscription"
}
}
},
"description": "OK"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Bad Request"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unauthorized"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Forbidden"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Too Many Requests"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Internal Server Error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
},
"description": "Service Unavailable"
}
},
"security": [
{
"biscuit": []
}
],
"summary": "Update a subscription",
"tags": [
"Subscriptions Management",
"mcp",
"sdk"
]
}
}
},
"servers": [
{
"url": "https://app.hook0.com"
}
]
}