diff --git a/.github/prompts/update_catalog_prompt.txt b/.github/prompts/update_catalog_prompt.txt new file mode 100644 index 0000000..0b964af --- /dev/null +++ b/.github/prompts/update_catalog_prompt.txt @@ -0,0 +1,6 @@ +Review the catalog changes and provide a concise one-line title for a PR, and a summary of the changes to be used as body. +Report field additions, removals, and changes by stream (e.g. 'Added field `name` to stream `customers`'). +The stream name is part of the filename in tests/__snapshots__. +The output should have the title on the first line, and the body on subsequent lines, separated by a blank line. +Start the title with 'fix: ' and make sure it is a single line. Use backticks for stream and field names. +Do not add any preamble. diff --git a/.github/workflows/update_catalog.yml b/.github/workflows/update_catalog.yml new file mode 100644 index 0000000..3676f71 --- /dev/null +++ b/.github/workflows/update_catalog.yml @@ -0,0 +1,82 @@ +name: Update Catalog for Hookdeck + +on: + workflow_dispatch: + schedule: + # On Fridays + - cron: '0 12 * * 5' + +env: + FORCE_COLOR: "1" + # renovate: datasource=pypi depName=llm + LLM_VERSION: 0.29 + # renovate: datasource=pypi depName=llm-github-models + LLM_GITHUB_MODELS_VERSION: 0.18.0 + # renovate: datasource=pypi depName=uv + UV_VERSION: 0.10.11 + +jobs: + update_openapi_specification: + name: Update Catalog + runs-on: ubuntu-24.04 + permissions: + contents: write # Required by peter-evans/create-pull-request + models: read # Required by llm-github-models + pull-requests: write # Required by peter-evans/create-pull-request + steps: + - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 + id: generate-token + with: + app-id: ${{ vars.RESERVOIR_GITHUB_APP_ID }} + private-key: ${{ secrets.RESERVOIR_GITHUB_APP_PKEY }} + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0 + with: + version: ${{ env.UV_VERSION }} + - run: uv run scripts/update_openapi.py + - run: uv run pytest --snapshot-update tests/test_schema_evolution.py + - id: check_snapshot_changes + continue-on-error: true + run: git diff --quiet tests/__snapshots__ + - name: Install LLM with GitHub Models + if: steps.check_snapshot_changes.outcome == 'failure' + run: uv tool install --with llm-github-models==${{ env.LLM_GITHUB_MODELS_VERSION }} --with llm==${{ env.LLM_VERSION }} llm + - name: Review catalog changes + if: steps.check_snapshot_changes.outcome == 'failure' + id: review-catalog-changes + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WORKSPACE_PATH: ${{ github.workspace }} + run: | + SYSTEM_PROMPT=$(cat $WORKSPACE_PATH/.github/prompts/update_catalog_prompt.txt) + GENERATED_CONTENT=$(git --no-pager diff -p --no-color HEAD tests/__snapshots__ | llm prompt -m github/gpt-4o-mini -s "$SYSTEM_PROMPT") + + PR_TITLE=$(echo "$GENERATED_CONTENT" | head -n 1) + PR_BODY=$(echo "$GENERATED_CONTENT" | tail -n +3) + + { + echo 'title<> "$GITHUB_OUTPUT" + + { + echo 'body<> "$GITHUB_OUTPUT" + + { + echo 'commit_message<> "$GITHUB_OUTPUT" + - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + if: steps.check_snapshot_changes.outcome == 'failure' + with: + title: ${{ steps.review-catalog-changes.outputs.title }} + commit-message: ${{ steps.review-catalog-changes.outputs.commit_message }} + body: ${{ steps.review-catalog-changes.outputs.body }} + token: ${{ steps.generate-token.outputs.token }} + sign-commits: true + signoff: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 587c90f..a4b74ef 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,8 +1,8 @@ ci: - autofix_commit_msg: 'chore: pre-commit.ci auto fixes' + autofix_commit_msg: "chore: pre-commit.ci auto fixes" autofix_prs: true autoupdate_schedule: monthly - autoupdate_commit_msg: 'chore(deps): pre-commit autoupdate' + autoupdate_commit_msg: "chore(deps): pre-commit autoupdate" repos: - repo: https://github.com/pre-commit/pre-commit-hooks @@ -35,12 +35,12 @@ repos: - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.37.0 hooks: - - id: check-github-workflows - - id: check-meltano - - id: check-renovate - language: python - additional_dependencies: - - pyjson5==2.0.0 + - id: check-github-workflows + - id: check-meltano + - id: check-renovate + language: python + additional_dependencies: + - pyjson5==2.0.0 - repo: https://github.com/hukkin/mdformat rev: 1.0.0 diff --git a/pyproject.toml b/pyproject.toml index 9ec6382..46a4a9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,8 @@ dynamic = [ "version", ] dependencies = [ - "singer-sdk~=0.54.0a2", + "requests~=2.32", + "singer-sdk~=0.54.0a8", ] [[project.authors]] name = "Edgar Ramírez-Mondragón" @@ -50,7 +51,7 @@ dev = [ testing = [ "deptry>=0.12", "pytest>=7.4", - "singer-sdk[testing]~=0.54.0a2", + "singer-sdk[testing]", "syrupy>=5.1", ] typing = [ @@ -62,8 +63,11 @@ typing = [ [tool.hatch.version] source = "vcs" +[tool.uv.sources] +singer-sdk = { git = "https://github.com/meltano/sdk.git", rev = "main" } + [tool.ruff] -line-length = 100 +line-length = 120 preview = true [tool.ruff.lint] select = [ diff --git a/scripts/update_catalog.py b/scripts/update_catalog.py new file mode 100755 index 0000000..0ca799d --- /dev/null +++ b/scripts/update_catalog.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +"""Update the OpenAPI schema from the Hook API. + +Copyright (c) 2026 Edgar Ramírez-Mondragón +""" + +from __future__ import annotations + +import http +import json +import logging +import pathlib +import sys + +import requests + +from tap_hookdeck.client import API_VERSION + +OPENAPI_URL = f"https://api.hookdeck.com/{API_VERSION}/openapi" +PATH = "tap_hookdeck/openapi.json" + +logging.basicConfig(format="%(levelname)s - %(message)s", level=logging.INFO) +logger = logging.getLogger() + + +def main() -> None: + """Update the OpenAPI schema from the Hookdeck API.""" + logger.info("Updating OpenAPI schema from %s", OPENAPI_URL) + response = requests.get(OPENAPI_URL, timeout=60, allow_redirects=True) + if response.status_code != http.HTTPStatus.OK: + logger.error("Failed to fetch OpenAPI spec: %s", response.reason) + sys.exit(1) + + spec = response.json() + content = json.dumps(spec, indent=2) + "\n" + pathlib.Path(PATH).write_text(content, encoding="utf-8") + + +if __name__ == "__main__": + main() diff --git a/tap_hookdeck/client.py b/tap_hookdeck/client.py index a0f67c1..4a1d502 100644 --- a/tap_hookdeck/client.py +++ b/tap_hookdeck/client.py @@ -12,10 +12,13 @@ from singer_sdk.helpers.types import Context +API_VERSION = "2025-07-01" + + class HookdeckStream(RESTStream[str]): """Hookdeck stream class.""" - url_base = "https://api.hookdeck.com" + url_base = f"https://api.hookdeck.com/{API_VERSION}" records_jsonpath = "$.models[*]" next_page_token_jsonpath = "$.pagination.next" # noqa: S105 @@ -36,17 +39,9 @@ def authenticator(self) -> APIKeyAuthenticator: ) @override - def get_url_params( - self, - context: Context | None, - next_page_token: str | None, - ) -> dict[str, Any]: + def get_url_params(self, context: Context | None, next_page_token: str | None) -> dict[str, Any]: """Get URL query parameters. - Args: - context: Stream sync context. - next_page_token: Next offset. - Returns: Mapping of URL query parameters. """ diff --git a/tap_hookdeck/openapi.json b/tap_hookdeck/openapi.json new file mode 100644 index 0000000..e7b901d --- /dev/null +++ b/tap_hookdeck/openapi.json @@ -0,0 +1,27373 @@ +{ + "openapi": "3.0.1", + "info": { + "version": "1.0.0", + "title": "Hookdeck Admin REST API", + "termsOfService": "https://hookdeck.com/terms", + "contact": { + "name": "Hookdeck Support", + "url": "https://hookdeck.com/contact-us", + "email": "info@hookdeck.com" + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + }, + "basicAuth": { + "type": "http", + "scheme": "basic" + } + }, + "schemas": { + "OrderByDirection": { + "anyOf": [ + { + "enum": [ + "asc" + ] + }, + { + "enum": [ + "desc" + ] + }, + { + "enum": [ + "ASC" + ] + }, + { + "enum": [ + "DESC" + ] + } + ] + }, + "SeekPagination": { + "type": "object", + "properties": { + "order_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "dir": { + "anyOf": [ + { + "$ref": "#/components/schemas/OrderByDirection" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderByDirection" + } + } + ] + }, + "limit": { + "type": "integer" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + } + }, + "additionalProperties": false + }, + "IssueType": { + "type": "string", + "enum": [ + "delivery", + "transformation", + "backpressure", + "request" + ], + "description": "Issue type" + }, + "IssueTriggerStrategy": { + "type": "string", + "enum": [ + "first_attempt", + "final_attempt" + ], + "description": "The strategy uses to open the issue" + }, + "IssueTriggerDeliveryConfigs": { + "type": "object", + "properties": { + "strategy": { + "$ref": "#/components/schemas/IssueTriggerStrategy" + }, + "connections": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "A pattern to match on the connection name or array of connection IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "strategy", + "connections" + ], + "additionalProperties": false, + "description": "Configurations for a 'delivery' issue trigger" + }, + "TransformationExecutionLogLevel": { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ], + "description": "The minimum log level to open the issue on" + }, + "IssueTriggerTransformationConfigs": { + "type": "object", + "properties": { + "log_level": { + "$ref": "#/components/schemas/TransformationExecutionLogLevel" + }, + "transformations": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "A pattern to match on the transformation name or array of transformation IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "log_level", + "transformations" + ], + "additionalProperties": false, + "description": "Configurations for a 'Transformation' issue trigger" + }, + "IssueTriggerBackpressureDelay": { + "type": "integer", + "minimum": 60000, + "maximum": 86400000, + "description": "The minimum delay (backpressure) to open the issue for min of 1 minute (60000) and max of 1 day (86400000)", + "x-docs-type": "integer" + }, + "IssueTriggerBackpressureConfigs": { + "type": "object", + "properties": { + "delay": { + "$ref": "#/components/schemas/IssueTriggerBackpressureDelay" + }, + "destinations": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "A pattern to match on the destination name or array of destination IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "delay", + "destinations" + ], + "additionalProperties": false, + "description": "Configurations for a 'Backpressure' issue trigger" + }, + "RequestRejectionCause": { + "type": "string", + "enum": [ + "SOURCE_DISABLED", + "NO_CONNECTION", + "VERIFICATION_FAILED", + "UNSUPPORTED_HTTP_METHOD", + "UNSUPPORTED_CONTENT_TYPE", + "UNPARSABLE_JSON", + "PAYLOAD_TOO_LARGE", + "INGESTION_FATAL", + "UNKNOWN" + ], + "x-docs-type": "string" + }, + "IssueTriggerRequestConfigs": { + "type": "object", + "properties": { + "rejection_causes": { + "anyOf": [ + { + "type": "string", + "enum": [ + "*" + ] + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ], + "description": "An array of rejection causes to match on, or '*' to match all rejection causes.", + "x-docs-force-simple-type": true + }, + "sources": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "A pattern to match on the source name or array of source IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "rejection_causes", + "sources" + ], + "additionalProperties": false, + "description": "Configurations for a 'Request' issue trigger" + }, + "IssueTriggerReference": { + "anyOf": [ + { + "$ref": "#/components/schemas/IssueTriggerDeliveryConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerTransformationConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerBackpressureConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerRequestConfigs" + } + ], + "description": "Configuration object for the specific issue type selected" + }, + "IssueTriggerSlackChannel": { + "type": "object", + "properties": { + "channel_name": { + "type": "string" + } + }, + "required": [ + "channel_name" + ], + "additionalProperties": false, + "description": "Channel for a 'Slack' issue trigger" + }, + "IssueTriggerMicrosoftTeamsChannel": { + "type": "object", + "properties": { + "channel_name": { + "type": "string" + } + }, + "required": [ + "channel_name" + ], + "additionalProperties": false, + "description": "Channel for a 'Microsoft Teams' issue trigger" + }, + "IssueTriggerIntegrationChannel": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "description": "Integration channel for an issue trigger", + "x-docs-type": "object" + }, + "IssueTriggerEmailChannel": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "description": "Email channel for an issue trigger", + "x-docs-type": "object" + }, + "IssueTriggerChannels": { + "type": "object", + "properties": { + "slack": { + "$ref": "#/components/schemas/IssueTriggerSlackChannel" + }, + "microsoft_teams": { + "$ref": "#/components/schemas/IssueTriggerMicrosoftTeamsChannel" + }, + "pagerduty": { + "$ref": "#/components/schemas/IssueTriggerIntegrationChannel" + }, + "opsgenie": { + "$ref": "#/components/schemas/IssueTriggerIntegrationChannel" + }, + "email": { + "$ref": "#/components/schemas/IssueTriggerEmailChannel" + } + }, + "additionalProperties": false, + "nullable": true, + "description": "Notification channels object for the specific channel type" + }, + "IssueTrigger": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the issue trigger" + }, + "team_id": { + "type": "string", + "nullable": true, + "description": "ID of the project" + }, + "name": { + "type": "string", + "nullable": true, + "description": "Optional unique name to use as reference when using the API" + }, + "type": { + "$ref": "#/components/schemas/IssueType" + }, + "configs": { + "$ref": "#/components/schemas/IssueTriggerReference" + }, + "channels": { + "$ref": "#/components/schemas/IssueTriggerChannels" + }, + "disabled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue trigger was disabled" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue trigger was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue trigger was created" + }, + "deleted_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue trigger was deleted" + } + }, + "required": [ + "id", + "type", + "configs", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "IssueTriggerPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + }, + "additionalProperties": false + }, + "APIErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Error code" + }, + "status": { + "type": "number", + "format": "float", + "description": "Status code" + }, + "message": { + "type": "string", + "description": "Error description" + }, + "data": { + "type": "object", + "properties": {}, + "nullable": true + } + }, + "required": [ + "code", + "status", + "message" + ], + "additionalProperties": false, + "description": "Error response model" + }, + "Operators": { + "type": "object", + "properties": { + "gt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "gte": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "le": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lte": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DeletedIssueTriggerResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "AttemptTrigger": { + "type": "string", + "enum": [ + "INITIAL", + "MANUAL", + "BULK_RETRY", + "UNPAUSE", + "AUTOMATIC" + ], + "nullable": true, + "description": "How the attempt was triggered" + }, + "AttemptErrorCodes": { + "type": "string", + "enum": [ + "BAD_RESPONSE", + "CANCELLED", + "TIMEOUT", + "NOT_FOUND", + "CANCELLED_PAST_RETENTION", + "CONNECTION_REFUSED", + "CONNECTION_RESET", + "MISSING_URL", + "CLI", + "CLI_UNAVAILABLE", + "SELF_SIGNED_CERT", + "ERR_TLS_CERT_ALTNAME_INVALID", + "ERR_SSL_WRONG_VERSION_NUMBER", + "NETWORK_ERROR", + "NETWORK_REQUEST_CANCELED", + "NETWORK_UNREACHABLE", + "TOO_MANY_REDIRECTS", + "INVALID_CHARACTER", + "INVALID_URL", + "SSL_ERROR_CA_UNKNOWN", + "DATA_ARCHIVED", + "SSL_CERT_EXPIRED", + "BULK_RETRY_CANCELLED", + "DNS_LOOKUP_FAILED", + "HOST_UNREACHABLE", + "PROTOCOL_ERROR", + "PAYLOAD_MISSING", + "UNABLE_TO_GET_ISSUER_CERT", + "SOCKET_CLOSED", + "OAUTH2_HANDSHAKE_FAILED", + "Z_DATA_ERROR", + "UNKNOWN" + ], + "description": "Error code of the delivery attempt" + }, + "AttemptStatus": { + "type": "string", + "enum": [ + "FAILED", + "SUCCESSFUL" + ], + "description": "Attempt status" + }, + "EventAttempt": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Attempt ID" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "event_id": { + "type": "string", + "description": "Event ID" + }, + "destination_id": { + "type": "string", + "description": "Destination ID" + }, + "response_status": { + "type": "integer", + "nullable": true, + "description": "Attempt's HTTP response code" + }, + "attempt_number": { + "type": "integer", + "nullable": true, + "description": "Sequential number of attempts (up to and including this one) made for the associated event" + }, + "trigger": { + "$ref": "#/components/schemas/AttemptTrigger" + }, + "error_code": { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + "body": { + "anyOf": [ + { + "type": "object", + "properties": {}, + "nullable": true, + "description": "Response body from the destination" + }, + { + "type": "string", + "nullable": true, + "description": "Response body from the destination" + } + ] + }, + "requested_url": { + "type": "string", + "nullable": true, + "description": "URL of the destination where delivery was attempted" + }, + "http_method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "nullable": true, + "description": "HTTP method used to deliver the attempt" + }, + "bulk_retry_id": { + "type": "string", + "nullable": true, + "description": "ID of associated bulk retry" + }, + "status": { + "$ref": "#/components/schemas/AttemptStatus" + }, + "successful_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the attempt was successful" + }, + "delivered_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the attempt was delivered" + }, + "responded_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the destination responded to this attempt" + }, + "delivery_latency": { + "type": "integer", + "nullable": true, + "description": "Time elapsed between attempt initiation and final delivery (in ms)" + }, + "response_latency": { + "type": "integer", + "nullable": true, + "description": "Time elapsed between attempt initiation and a response from the destination (in ms)" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the attempt was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the attempt was created" + } + }, + "required": [ + "id", + "team_id", + "event_id", + "destination_id", + "status", + "updated_at", + "created_at" + ], + "additionalProperties": false, + "nullable": true + }, + "EventAttemptPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventAttempt" + } + } + }, + "additionalProperties": false + }, + "ShortEventData": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Request path" + }, + "query": { + "type": "string", + "nullable": true, + "description": "Raw query param string" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "object", + "properties": {} + } + ], + "nullable": true, + "description": "JSON representation of query params" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string", + "nullable": true + } + } + ], + "nullable": true, + "description": "JSON representation of the headers" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {} + }, + { + "type": "array", + "items": {} + } + ], + "nullable": true, + "description": "JSON or string representation of the body" + }, + "is_large_payload": { + "type": "boolean", + "nullable": true, + "description": "Whether the payload is considered large payload and not searchable" + } + }, + "required": [ + "path", + "query", + "parsed_query", + "headers", + "body" + ], + "additionalProperties": false, + "nullable": true, + "description": "Request data" + }, + "Bookmark": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the bookmark" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "webhook_id": { + "type": "string", + "description": "ID of the associated connection (webhook)" + }, + "event_data_id": { + "type": "string", + "description": "ID of the bookmarked event data" + }, + "label": { + "type": "string", + "description": "Descriptive name of the bookmark" + }, + "alias": { + "type": "string", + "nullable": true, + "description": "Alternate alias for the bookmark" + }, + "data": { + "$ref": "#/components/schemas/ShortEventData" + }, + "last_used_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the bookmark was last manually triggered" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the bookmark was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the bookmark was created" + } + }, + "required": [ + "id", + "team_id", + "webhook_id", + "event_data_id", + "label", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "BookmarkPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Bookmark" + } + } + }, + "additionalProperties": false + }, + "RawBody": { + "type": "object", + "properties": { + "body": { + "type": "string" + } + }, + "required": [ + "body" + ], + "additionalProperties": false + }, + "EventStatus": { + "type": "string", + "enum": [ + "SCHEDULED", + "QUEUED", + "HOLD", + "SUCCESSFUL", + "FAILED", + "CANCELLED" + ] + }, + "EventData": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "method": { + "type": "string" + }, + "path": { + "type": "string", + "nullable": true, + "description": "Raw path string" + }, + "query": { + "type": "string", + "nullable": true, + "description": "Raw query param string" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "object", + "properties": {} + } + ], + "nullable": true, + "description": "JSON representation of query params" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string", + "nullable": true + } + } + ], + "nullable": true, + "description": "JSON representation of the headers" + }, + "appended_headers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of headers that were added by Hookdeck" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {} + }, + { + "type": "array", + "items": {} + } + ], + "nullable": true, + "description": "JSON or string representation of the body" + }, + "is_large_payload": { + "type": "boolean", + "description": "Whether the payload is considered large payload and not searchable" + } + }, + "required": [ + "url", + "method", + "path", + "query", + "parsed_query", + "headers", + "body" + ], + "additionalProperties": false, + "nullable": true, + "description": "Event data if included" + }, + "Event": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the event" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "webhook_id": { + "type": "string", + "description": "ID of the associated connection (webhook)" + }, + "source_id": { + "type": "string", + "description": "ID of the associated source" + }, + "destination_id": { + "type": "string", + "description": "ID of the associated destination" + }, + "event_data_id": { + "type": "string", + "description": "ID of the event data" + }, + "request_id": { + "type": "string", + "description": "ID of the request that created the event" + }, + "attempts": { + "type": "integer", + "description": "Number of delivery attempts made" + }, + "last_attempt_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the most recently attempted retry" + }, + "next_attempt_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the next scheduled retry" + }, + "response_status": { + "type": "integer", + "nullable": true, + "description": "Event status" + }, + "error_code": { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + "status": { + "$ref": "#/components/schemas/EventStatus" + }, + "successful_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the latest successful attempt" + }, + "cli_id": { + "type": "string", + "nullable": true, + "description": "ID of the CLI the event is sent to" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the event was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the event was created" + }, + "data": { + "$ref": "#/components/schemas/EventData" + } + }, + "required": [ + "id", + "team_id", + "webhook_id", + "source_id", + "destination_id", + "event_data_id", + "request_id", + "attempts", + "last_attempt_at", + "next_attempt_at", + "status", + "successful_at", + "cli_id", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "EventArray": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event" + } + }, + "DeletedBookmarkResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Bookmark ID" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "DestinationConfigHTTPAuthHookdeckSignatureDefault": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "x-docs-type": "HOOKDECK_SIGNATURE" + }, + "DestinationConfigHTTPAuthCustomSHA256HMACSignature": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "signing_secret": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "CUSTOM_SIGNATURE" + }, + "DestinationConfigHTTPAuthBasicAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BASIC_AUTH" + }, + "DestinationConfigHTTPAuthAPIKey": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "api_key": { + "type": "string" + }, + "to": { + "type": "string", + "enum": [ + "header", + "query" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "API_KEY" + }, + "DestinationConfigHTTPAuthBearerToken": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BEARER_TOKEN" + }, + "DestinationConfigHTTPAuthOAuth2ClientCredentials": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "authentication_type": { + "type": "string", + "enum": [ + "basic", + "bearer", + "x-www-form-urlencoded" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_CLIENT_CREDENTIALS" + }, + "DestinationConfigHTTPAuthOAuth2AuthorizationCode": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_AUTHORIZATION_CODE" + }, + "DestinationConfigHTTPAuthAWSSignature": { + "type": "object", + "properties": { + "access_key_id": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "region": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "AWS_SIGNATURE" + }, + "DestinationConfigHTTPAuthGCPServiceAccount": { + "type": "object", + "properties": { + "service_account_key": { + "type": "string" + }, + "scope": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "x-docs-type": "GCP_SERVICE_ACCOUNT" + }, + "DestinationConfigHTTPAuthEmpty": { + "nullable": true, + "x-docs-hide": true, + "x-docs-nullable": true + }, + "DestinationConfigHTTPAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthHookdeckSignatureDefault" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthCustomSHA256HMACSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthBasicAuth" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthAPIKey" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthBearerToken" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthOAuth2ClientCredentials" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthOAuth2AuthorizationCode" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthAWSSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthGCPServiceAccount" + }, + { + "$ref": "#/components/schemas/DestinationConfigHTTPAuthEmpty" + } + ] + }, + "DestinationTypeConfigHTTP": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "URL" + }, + "rate_limit": { + "type": "number", + "format": "float", + "nullable": true + }, + "rate_limit_period": { + "type": "string", + "enum": [ + "second", + "minute", + "hour", + "concurrent" + ], + "nullable": true + }, + "path_forwarding_disabled": { + "type": "boolean" + }, + "http_method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "nullable": true + }, + "auth_type": { + "type": "string", + "enum": [ + "HOOKDECK_SIGNATURE", + "CUSTOM_SIGNATURE", + "BASIC_AUTH", + "API_KEY", + "BEARER_TOKEN", + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_AUTHORIZATION_CODE", + "AWS_SIGNATURE", + "GCP_SERVICE_ACCOUNT" + ], + "nullable": true + }, + "auth": { + "$ref": "#/components/schemas/DestinationConfigHTTPAuth" + } + }, + "required": [ + "url" + ], + "additionalProperties": false, + "description": "The type config for HTTP. Requires type to be `HTTP`.", + "x-docs-type": "HTTP" + }, + "DestinationConfigCLIAuthHookdeckSignatureDefault": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "x-docs-type": "HOOKDECK_SIGNATURE" + }, + "DestinationConfigCLIAuthCustomSHA256HMACSignature": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "signing_secret": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "CUSTOM_SIGNATURE" + }, + "DestinationConfigCLIAuthBasicAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BASIC_AUTH" + }, + "DestinationConfigCLIAuthAPIKey": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "api_key": { + "type": "string" + }, + "to": { + "type": "string", + "enum": [ + "header", + "query" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "API_KEY" + }, + "DestinationConfigCLIAuthBearerToken": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BEARER_TOKEN" + }, + "DestinationConfigCLIAuthOAuth2ClientCredentials": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "authentication_type": { + "type": "string", + "enum": [ + "basic", + "bearer", + "x-www-form-urlencoded" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_CLIENT_CREDENTIALS" + }, + "DestinationConfigCLIAuthOAuth2AuthorizationCode": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_AUTHORIZATION_CODE" + }, + "DestinationConfigCLIAuthAWSSignature": { + "type": "object", + "properties": { + "access_key_id": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "region": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "AWS_SIGNATURE" + }, + "DestinationConfigCLIAuthGCPServiceAccount": { + "type": "object", + "properties": { + "service_account_key": { + "type": "string" + }, + "scope": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "x-docs-type": "GCP_SERVICE_ACCOUNT" + }, + "DestinationConfigCLIAuthEmpty": { + "nullable": true, + "x-docs-hide": true, + "x-docs-nullable": true + }, + "DestinationConfigCLIAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthHookdeckSignatureDefault" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthCustomSHA256HMACSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthBasicAuth" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthAPIKey" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthBearerToken" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthOAuth2ClientCredentials" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthOAuth2AuthorizationCode" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthAWSSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthGCPServiceAccount" + }, + { + "$ref": "#/components/schemas/DestinationConfigCLIAuthEmpty" + } + ] + }, + "DestinationTypeConfigCLI": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Path for the CLI destination" + }, + "path_forwarding_disabled": { + "type": "boolean" + }, + "http_method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "nullable": true + }, + "auth_type": { + "type": "string", + "enum": [ + "HOOKDECK_SIGNATURE", + "CUSTOM_SIGNATURE", + "BASIC_AUTH", + "API_KEY", + "BEARER_TOKEN", + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_AUTHORIZATION_CODE", + "AWS_SIGNATURE", + "GCP_SERVICE_ACCOUNT" + ], + "nullable": true + }, + "auth": { + "$ref": "#/components/schemas/DestinationConfigCLIAuth" + } + }, + "required": [ + "path" + ], + "additionalProperties": false, + "description": "The type config for CLI. Requires type to be `CLI`.", + "x-docs-type": "CLI" + }, + "DestinationConfigMockAPIAuthHookdeckSignatureDefault": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "x-docs-type": "HOOKDECK_SIGNATURE" + }, + "DestinationConfigMockAPIAuthCustomSHA256HMACSignature": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "signing_secret": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "CUSTOM_SIGNATURE" + }, + "DestinationConfigMockAPIAuthBasicAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BASIC_AUTH" + }, + "DestinationConfigMockAPIAuthAPIKey": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "api_key": { + "type": "string" + }, + "to": { + "type": "string", + "enum": [ + "header", + "query" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "API_KEY" + }, + "DestinationConfigMockAPIAuthBearerToken": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BEARER_TOKEN" + }, + "DestinationConfigMockAPIAuthOAuth2ClientCredentials": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "authentication_type": { + "type": "string", + "enum": [ + "basic", + "bearer", + "x-www-form-urlencoded" + ] + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_CLIENT_CREDENTIALS" + }, + "DestinationConfigMockAPIAuthOAuth2AuthorizationCode": { + "type": "object", + "properties": { + "auth_server": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "OAUTH2_AUTHORIZATION_CODE" + }, + "DestinationConfigMockAPIAuthAWSSignature": { + "type": "object", + "properties": { + "access_key_id": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "region": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "AWS_SIGNATURE" + }, + "DestinationConfigMockAPIAuthGCPServiceAccount": { + "type": "object", + "properties": { + "service_account_key": { + "type": "string" + }, + "scope": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "x-docs-type": "GCP_SERVICE_ACCOUNT" + }, + "DestinationConfigMockAPIAuthEmpty": { + "nullable": true, + "x-docs-hide": true, + "x-docs-nullable": true + }, + "DestinationConfigMockAPIAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthHookdeckSignatureDefault" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthCustomSHA256HMACSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthBasicAuth" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthAPIKey" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthBearerToken" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthOAuth2ClientCredentials" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthOAuth2AuthorizationCode" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthAWSSignature" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthGCPServiceAccount" + }, + { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuthEmpty" + } + ] + }, + "DestinationTypeConfigMOCK_API": { + "type": "object", + "properties": { + "rate_limit": { + "type": "number", + "format": "float", + "nullable": true + }, + "rate_limit_period": { + "type": "string", + "enum": [ + "second", + "minute", + "hour", + "concurrent" + ], + "nullable": true + }, + "path_forwarding_disabled": { + "type": "boolean" + }, + "http_method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "nullable": true + }, + "auth_type": { + "type": "string", + "enum": [ + "HOOKDECK_SIGNATURE", + "CUSTOM_SIGNATURE", + "BASIC_AUTH", + "API_KEY", + "BEARER_TOKEN", + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_AUTHORIZATION_CODE", + "AWS_SIGNATURE", + "GCP_SERVICE_ACCOUNT" + ], + "nullable": true + }, + "auth": { + "$ref": "#/components/schemas/DestinationConfigMockAPIAuth" + } + }, + "additionalProperties": false, + "description": "The type config for MOCK_API. Requires type to be `MOCK_API`.", + "x-docs-type": "MOCK_API" + }, + "DestinationConfig": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/DestinationTypeConfigHTTP" + }, + { + "$ref": "#/components/schemas/DestinationTypeConfigCLI" + }, + { + "$ref": "#/components/schemas/DestinationTypeConfigMOCK_API" + } + ], + "description": "Configuration object for the destination type", + "default": {} + }, + "Destination": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the destination" + }, + "name": { + "type": "string", + "description": "A unique, human-friendly name for the destination" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Description of the destination" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination" + }, + "config": { + "$ref": "#/components/schemas/DestinationConfig" + }, + "disabled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the destination was disabled" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the destination was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the destination was created" + } + }, + "required": [ + "id", + "name", + "team_id", + "type", + "disabled_at", + "updated_at", + "created_at" + ], + "additionalProperties": false, + "description": "Associated [Destination](#destination-object) object" + }, + "DestinationPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Destination" + } + } + }, + "additionalProperties": false + }, + "VerificationConfig": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/DestinationTypeConfigHTTP", + "x-required": true + }, + { + "$ref": "#/components/schemas/DestinationTypeConfigCLI", + "x-required": true + }, + { + "$ref": "#/components/schemas/DestinationTypeConfigMOCK_API" + } + ], + "description": "The type configs for the specified type", + "default": {} + }, + "BatchOperation": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the bulk retry" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "type": { + "type": "string", + "description": "Type of the bulk operation" + }, + "query": { + "anyOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": { + "nullable": true + } + }, + { + "type": "string", + "nullable": true + } + ], + "nullable": true, + "description": "Query object to filter records", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the bulk retry was created" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Last time the bulk retry was updated" + }, + "cancelled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the bulk retry was cancelled" + }, + "completed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the bulk retry was completed" + }, + "estimated_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches required to complete the bulk retry" + }, + "estimated_count": { + "type": "integer", + "nullable": true, + "description": "Number of estimated events to be retried" + }, + "processed_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches currently processed" + }, + "completed_count": { + "type": "integer", + "nullable": true, + "description": "Number of events that were successfully delivered" + }, + "in_progress": { + "type": "boolean", + "description": "Indicates if the bulk retry is currently in progress" + }, + "progress": { + "type": "number", + "format": "float", + "nullable": true, + "description": "Progression of the batch operations, values 0 - 1" + }, + "failed_count": { + "type": "integer", + "nullable": true, + "description": "Number of events that failed to be delivered" + }, + "number": { + "type": "number", + "format": "float", + "nullable": true, + "x-docs-hide": true + } + }, + "required": [ + "id", + "team_id", + "type", + "created_at", + "updated_at", + "in_progress" + ], + "additionalProperties": false + }, + "BatchOperationPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BatchOperation" + } + } + }, + "additionalProperties": false + }, + "EventPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event" + } + } + }, + "additionalProperties": false + }, + "RetriedEvent": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the event" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "webhook_id": { + "type": "string", + "description": "ID of the associated connection (webhook)" + }, + "source_id": { + "type": "string", + "description": "ID of the associated source" + }, + "destination_id": { + "type": "string", + "description": "ID of the associated destination" + }, + "event_data_id": { + "type": "string", + "description": "ID of the event data" + }, + "request_id": { + "type": "string", + "description": "ID of the request that created the event" + }, + "attempts": { + "type": "integer", + "description": "Number of delivery attempts made" + }, + "last_attempt_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the most recently attempted retry" + }, + "next_attempt_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the next scheduled retry" + }, + "response_status": { + "type": "integer", + "nullable": true, + "description": "Event status" + }, + "error_code": { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + "status": { + "$ref": "#/components/schemas/EventStatus" + }, + "successful_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date of the latest successful attempt" + }, + "cli_id": { + "type": "string", + "nullable": true, + "description": "ID of the CLI the event is sent to" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the event was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the event was created" + }, + "data": { + "$ref": "#/components/schemas/EventData" + } + }, + "required": [ + "id", + "team_id", + "webhook_id", + "source_id", + "destination_id", + "event_data_id", + "request_id", + "attempts", + "last_attempt_at", + "next_attempt_at", + "status", + "successful_at", + "cli_id", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "IntegrationProvider": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "HMAC", + "BASIC_AUTH", + "API_KEY", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "UTILA", + "ZEROHASH", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ] + }, + "IntegrationFeature": { + "type": "string", + "enum": [ + "VERIFICATION", + "HANDSHAKE" + ] + }, + "HMACAlgorithms": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha512" + ] + }, + "HMACIntegrationConfigs": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + }, + "algorithm": { + "$ref": "#/components/schemas/HMACAlgorithms" + }, + "header_key": { + "type": "string" + }, + "encoding": { + "type": "string", + "enum": [ + "base64", + "hex" + ] + } + }, + "required": [ + "webhook_secret_key", + "algorithm", + "header_key", + "encoding" + ], + "additionalProperties": false + }, + "APIKeyIntegrationConfigs": { + "type": "object", + "properties": { + "header_key": { + "type": "string" + }, + "api_key": { + "type": "string" + } + }, + "required": [ + "header_key", + "api_key" + ], + "additionalProperties": false + }, + "HandledAPIKeyIntegrationConfigs": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false + }, + "HandledHMACConfigs": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false + }, + "BasicAuthIntegrationConfigs": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + }, + "ShopifyIntegrationConfigs": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false + }, + "VercelLogDrainsIntegrationConfigs": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string", + "nullable": true + }, + "vercel_log_drains_secret": { + "type": "string" + } + }, + "required": [ + "vercel_log_drains_secret" + ], + "additionalProperties": false + }, + "Integration": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the integration" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "label": { + "type": "string", + "description": "Label of the integration" + }, + "provider": { + "$ref": "#/components/schemas/IntegrationProvider" + }, + "features": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationFeature" + }, + "description": "List of features to enable (see features list below)", + "x-docs-force-simple-type": true, + "x-docs-type": "Array of string" + }, + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/HMACIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/APIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledAPIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledHMACConfigs" + }, + { + "$ref": "#/components/schemas/BasicAuthIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/ShopifyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/VercelLogDrainsIntegrationConfigs" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "Decrypted Key/Value object of the associated configuration for that provider", + "x-docs-force-simple-type": true, + "x-docs-type": "object" + }, + "sources": { + "type": "array", + "items": { + "type": "string", + "description": "ID of the source" + }, + "description": "List of source IDs the integration is attached to" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the integration was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the integration was created" + } + }, + "required": [ + "id", + "team_id", + "label", + "provider", + "features", + "configs", + "sources", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "IntegrationPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Integration" + } + } + }, + "additionalProperties": false + }, + "AttachedIntegrationToSource": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + }, + "required": [ + "success" + ], + "additionalProperties": false + }, + "DetachedIntegrationFromSource": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "DeletedIntegration": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "IssueStatus": { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "Issue status" + }, + "DeliveryIssueAggregationKeys": { + "type": "object", + "properties": { + "webhook_id": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_status": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "error_code": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + }, + "required": [ + "webhook_id", + "response_status", + "error_code" + ], + "additionalProperties": false, + "description": "Keys used as the aggregation keys a 'delivery' type issue" + }, + "DeliveryIssueReference": { + "type": "object", + "properties": { + "event_id": { + "type": "string" + }, + "attempt_id": { + "type": "string" + } + }, + "required": [ + "event_id", + "attempt_id" + ], + "additionalProperties": false, + "description": "Reference to the event and attempt an issue is being created for." + }, + "DeliveryIssueData": { + "type": "object", + "properties": { + "trigger_event": { + "$ref": "#/components/schemas/Event" + }, + "trigger_attempt": { + "$ref": "#/components/schemas/EventAttempt" + } + }, + "additionalProperties": false, + "nullable": true, + "description": "Delivery issue data" + }, + "DeliveryIssueWithData": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "delivery" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/DeliveryIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/DeliveryIssueReference" + }, + "data": { + "$ref": "#/components/schemas/DeliveryIssueData" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Delivery issue" + }, + "TransformationIssueAggregationKeys": { + "type": "object", + "properties": { + "transformation_id": { + "type": "array", + "items": { + "type": "string" + } + }, + "log_level": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TransformationExecutionLogLevel" + } + } + }, + "required": [ + "transformation_id", + "log_level" + ], + "additionalProperties": false, + "description": "Keys used as the aggregation keys a 'transformation' type issue" + }, + "TransformationIssueReference": { + "type": "object", + "properties": { + "transformation_execution_id": { + "type": "string" + }, + "trigger_event_request_transformation_id": { + "type": "string", + "nullable": true, + "description": "Deprecated but still found on historical issues" + } + }, + "required": [ + "transformation_execution_id" + ], + "additionalProperties": false, + "description": "Reference to the event request transformation an issue is being created for." + }, + "ConsoleLine": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "error", + "log", + "warn", + "info", + "debug" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "type", + "message" + ], + "additionalProperties": false + }, + "TransformationExecution": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "transformed_event_data_id": { + "type": "string", + "nullable": true + }, + "original_event_data_id": { + "type": "string" + }, + "transformation_id": { + "type": "string" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "webhook_id": { + "type": "string", + "description": "ID of the associated connection (webhook)" + }, + "log_level": { + "$ref": "#/components/schemas/TransformationExecutionLogLevel" + }, + "logs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ConsoleLine" + } + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "original_event_data": { + "$ref": "#/components/schemas/ShortEventData" + }, + "transformed_event_data": { + "$ref": "#/components/schemas/ShortEventData" + }, + "issue_id": { + "type": "string", + "nullable": true + } + }, + "required": [ + "id", + "original_event_data_id", + "transformation_id", + "team_id", + "webhook_id", + "log_level", + "logs", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "TransformationIssueData": { + "type": "object", + "properties": { + "transformation_execution": { + "$ref": "#/components/schemas/TransformationExecution" + }, + "trigger_attempt": { + "$ref": "#/components/schemas/EventAttempt" + } + }, + "required": [ + "transformation_execution" + ], + "additionalProperties": false, + "nullable": true, + "description": "Transformation issue data" + }, + "TransformationIssueWithData": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "transformation" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/TransformationIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/TransformationIssueReference" + }, + "data": { + "$ref": "#/components/schemas/TransformationIssueData" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Transformation issue" + }, + "BackpressureIssueAggregationKeys": { + "type": "object", + "properties": { + "destination_id": { + "type": "array", + "items": { + "type": "string" + } + }, + "delay": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IssueTriggerBackpressureDelay" + } + } + }, + "required": [ + "destination_id", + "delay" + ], + "additionalProperties": false, + "description": "Keys used as the aggregation keys a 'backpressure' type issue" + }, + "BackpressureIssueReference": { + "type": "object", + "properties": { + "destination_id": { + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "additionalProperties": false, + "description": "Reference to the destination backpressure an issue is being created for." + }, + "BackpressureIssueData": { + "type": "object", + "properties": { + "destination": { + "$ref": "#/components/schemas/Destination" + } + }, + "additionalProperties": false, + "nullable": true, + "description": "Backpressure issue data" + }, + "BackpressureIssueWithData": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "backpressure" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/BackpressureIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/BackpressureIssueReference" + }, + "data": { + "$ref": "#/components/schemas/BackpressureIssueData" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Backpressure issue" + }, + "RequestIssueAggregationKeys": { + "type": "object", + "properties": { + "source_id": { + "type": "array", + "items": { + "type": "string" + } + }, + "rejection_cause": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + }, + "required": [ + "source_id", + "rejection_cause" + ], + "additionalProperties": false, + "description": "Keys used as the aggregation keys a 'request' type issue" + }, + "RequestIssueReference": { + "type": "object", + "properties": { + "request_id": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "additionalProperties": false, + "description": "Reference to the request an issue is being created for." + }, + "Request": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the request" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "verified": { + "type": "boolean", + "nullable": true, + "description": "Whether or not the request was verified when received" + }, + "original_event_data_id": { + "type": "string", + "nullable": true, + "description": "ID of the request data" + }, + "rejection_cause": { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + "ingested_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "The time the request was originally received" + }, + "source_id": { + "type": "string", + "description": "ID of the associated source" + }, + "events_count": { + "type": "integer", + "nullable": true, + "description": "The count of events created from this request (CLI events not included)" + }, + "cli_events_count": { + "type": "integer", + "nullable": true, + "description": "The count of CLI events created from this request" + }, + "ignored_count": { + "type": "integer", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the event was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "\tDate the event was created" + }, + "data": { + "$ref": "#/components/schemas/ShortEventData" + } + }, + "required": [ + "id", + "team_id", + "verified", + "original_event_data_id", + "rejection_cause", + "ingested_at", + "source_id", + "events_count", + "cli_events_count", + "ignored_count", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "RequestIssueData": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/Request" + } + }, + "additionalProperties": false, + "nullable": true, + "description": "Request issue data" + }, + "RequestIssueWithData": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "request" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/RequestIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/RequestIssueReference" + }, + "data": { + "$ref": "#/components/schemas/RequestIssueData" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Request issue" + }, + "IssueWithData": { + "anyOf": [ + { + "$ref": "#/components/schemas/DeliveryIssueWithData" + }, + { + "$ref": "#/components/schemas/TransformationIssueWithData" + }, + { + "$ref": "#/components/schemas/BackpressureIssueWithData" + }, + { + "$ref": "#/components/schemas/RequestIssueWithData" + } + ] + }, + "IssueWithDataPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IssueWithData" + } + } + }, + "additionalProperties": false + }, + "IssueCount": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "description": "Number of issues", + "example": 5 + } + }, + "required": [ + "count" + ], + "additionalProperties": false + }, + "DeliveryIssue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "delivery" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/DeliveryIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/DeliveryIssueReference" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Delivery issue" + }, + "TransformationIssue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "transformation" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/TransformationIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/TransformationIssueReference" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Transformation issue" + }, + "BackpressureIssue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "backpressure" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/BackpressureIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/BackpressureIssueReference" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Backpressure issue" + }, + "RequestIssue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Issue ID", + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "status": { + "$ref": "#/components/schemas/IssueStatus" + }, + "opened_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was last opened" + }, + "first_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue was first opened" + }, + "last_seen_at": { + "type": "string", + "format": "date-time", + "description": "ISO timestamp for when the issue last occured" + }, + "last_updated_by": { + "type": "string", + "nullable": true, + "description": "Deprecated, will always be set to null" + }, + "dismissed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "ISO timestamp for when the issue was dismissed" + }, + "auto_resolved_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "x-docs-hide": true + }, + "merged_with": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "updated_at": { + "type": "string", + "description": "ISO timestamp for when the issue was last updated" + }, + "created_at": { + "type": "string", + "description": "ISO timestamp for when the issue was created" + }, + "type": { + "type": "string", + "enum": [ + "request" + ] + }, + "aggregation_keys": { + "$ref": "#/components/schemas/RequestIssueAggregationKeys" + }, + "reference": { + "$ref": "#/components/schemas/RequestIssueReference" + } + }, + "required": [ + "id", + "team_id", + "status", + "opened_at", + "first_seen_at", + "last_seen_at", + "updated_at", + "created_at", + "type", + "aggregation_keys", + "reference" + ], + "additionalProperties": false, + "description": "Request issue" + }, + "Issue": { + "anyOf": [ + { + "$ref": "#/components/schemas/DeliveryIssue" + }, + { + "$ref": "#/components/schemas/TransformationIssue" + }, + { + "$ref": "#/components/schemas/BackpressureIssue" + }, + { + "$ref": "#/components/schemas/RequestIssue" + } + ], + "description": "Issue" + }, + "MetricDataPoint": { + "type": "object", + "properties": { + "time_bucket": { + "type": "string", + "nullable": true, + "description": "Time bucket for the metric data point" + }, + "dimensions": { + "type": "object", + "properties": {}, + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number", + "format": "float" + }, + { + "type": "boolean" + } + ] + }, + "description": "Key-value pairs of dimension names and their values." + }, + "metrics": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "number", + "format": "float" + }, + "description": "Key-value pairs of metric names and their calculated values." + } + }, + "additionalProperties": false, + "description": "A single metric data point with time bucket, dimensions, and metrics" + }, + "MetricsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricDataPoint" + }, + "description": "Array of metric data points" + }, + "metadata": { + "type": "object", + "properties": { + "granularity": { + "type": "string", + "nullable": true, + "description": "Time granularity used in the query" + }, + "query_time_ms": { + "type": "number", + "format": "float", + "description": "Query execution time in milliseconds" + }, + "row_count": { + "type": "number", + "format": "float", + "description": "Number of rows returned" + }, + "row_limit": { + "type": "number", + "format": "float", + "description": "Maximum number of rows that can be returned" + }, + "truncated": { + "type": "boolean", + "description": "Whether results were truncated due to row limit" + }, + "warning": { + "type": "string", + "description": "Warning message if results were truncated" + } + }, + "additionalProperties": false, + "description": "Query metadata" + } + }, + "additionalProperties": false, + "description": "Metrics query response with data and metadata" + }, + "RequestPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Request" + } + } + }, + "additionalProperties": false + }, + "RetryRequest": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/Request" + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event" + }, + "nullable": true + } + }, + "required": [ + "request" + ], + "additionalProperties": false + }, + "IgnoredEventCause": { + "type": "string", + "enum": [ + "DISABLED", + "FILTERED", + "TRANSFORMATION_FAILED", + "CLI_DISCONNECTED" + ] + }, + "FilteredMeta": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "body", + "headers", + "path", + "query" + ] + } + }, + "TransformationFailedMeta": { + "type": "object", + "properties": { + "transformation_id": { + "type": "string" + } + }, + "required": [ + "transformation_id" + ], + "additionalProperties": false + }, + "IgnoredEvent": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "webhook_id": { + "type": "string", + "description": "ID of the associated connection (webhook)" + }, + "cause": { + "$ref": "#/components/schemas/IgnoredEventCause" + }, + "request_id": { + "type": "string" + }, + "meta": { + "anyOf": [ + { + "$ref": "#/components/schemas/FilteredMeta" + }, + { + "$ref": "#/components/schemas/TransformationFailedMeta" + } + ], + "nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "id", + "team_id", + "webhook_id", + "cause", + "request_id", + "created_at" + ], + "additionalProperties": false + }, + "IgnoredEventPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IgnoredEvent" + } + } + }, + "additionalProperties": false + }, + "SourceConfigAipriseAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Aiprise" + }, + "SourceAllowedHTTPMethod": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ] + }, + "description": "List of allowed HTTP methods. Defaults to PUT, POST, PATCH, DELETE." + }, + "SourceCustomResponseContentType": { + "type": "string", + "enum": [ + "json", + "text", + "xml" + ], + "description": "Content type of the custom response" + }, + "SourceCustomResponse": { + "type": "object", + "properties": { + "content_type": { + "$ref": "#/components/schemas/SourceCustomResponseContentType" + }, + "body": { + "type": "string", + "maxLength": 1000, + "description": "Body of the custom response" + } + }, + "required": [ + "content_type", + "body" + ], + "additionalProperties": false, + "nullable": true, + "description": "Custom response object" + }, + "SourceTypeConfigAIPRISE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAipriseAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for AIPRISE. Requires type to be `AIPRISE`.", + "x-docs-type": "AIPRISE", + "x-docs-external-url": "https://docs.aiprise.com/docs/callbacks-authentication" + }, + "SourceConfigDocuSignAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "DocuSign" + }, + "SourceTypeConfigDOCUSIGN": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigDocuSignAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for DOCUSIGN. Requires type to be `DOCUSIGN`.", + "x-docs-type": "DOCUSIGN", + "x-docs-external-url": "https://developers.docusign.com/platform/webhooks/connect/validate/" + }, + "SourceConfigIntercomAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Intercom" + }, + "SourceTypeConfigINTERCOM": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigIntercomAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for INTERCOM. Requires type to be `INTERCOM`.", + "x-docs-type": "INTERCOM", + "x-docs-external-url": "https://developers.intercom.com/docs/references/webhooks/webhook-models#signed-notifications" + }, + "SourceConfigHookdeckPublishAPIAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Hookdeck Publish API" + }, + "SourceTypeConfigPUBLISH_API": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigHookdeckPublishAPIAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PUBLISH_API. Requires type to be `PUBLISH_API`.", + "x-docs-type": "PUBLISH_API" + }, + "SourceConfigWebhookAuthHMAC": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sha1", + "sha256", + "sha512", + "md5" + ] + }, + "encoding": { + "type": "string", + "enum": [ + "base64", + "base64url", + "hex" + ] + }, + "header_key": { + "type": "string" + }, + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "algorithm", + "encoding", + "header_key", + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "HMAC" + }, + "SourceConfigWebhookAuthBasicAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "x-docs-type": "BASIC_AUTH" + }, + "SourceConfigWebhookAuthAPIKey": { + "type": "object", + "properties": { + "header_key": { + "type": "string" + }, + "api_key": { + "type": "string" + } + }, + "required": [ + "header_key", + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "API_KEY" + }, + "SourceConfigWebhookAuthAiprise": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "AIPRISE" + }, + "SourceConfigWebhookAuthDocuSign": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "DOCUSIGN" + }, + "SourceConfigWebhookAuthIntercom": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "INTERCOM" + }, + "SourceConfigWebhookAuthSanity": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SANITY" + }, + "SourceConfigWebhookAuthBigCommerce": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "BIGCOMMERCE" + }, + "SourceConfigWebhookAuthOpenAI": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "OPENAI" + }, + "SourceConfigWebhookAuthPolar": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "POLAR" + }, + "SourceConfigWebhookAuthBridgeStablecoins": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "BRIDGE_XYZ" + }, + "SourceConfigWebhookAuthBridgeAPI": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "BRIDGE_API" + }, + "SourceConfigWebhookAuthChargebeeBilling": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "x-docs-type": "CHARGEBEE_BILLING" + }, + "SourceConfigWebhookAuthChaindots": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "CHAINDOTS" + }, + "SourceConfigWebhookAuthCloudSignal": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "CLOUDSIGNAL" + }, + "SourceConfigWebhookAuthCoinbase": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "COINBASE" + }, + "SourceConfigWebhookAuthCourier": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "COURIER" + }, + "SourceConfigWebhookAuthCursor": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "CURSOR" + }, + "SourceConfigWebhookAuthMeraki": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "MERAKI" + }, + "SourceConfigWebhookAuthFireblocks": { + "type": "object", + "properties": { + "environment": { + "type": "string", + "enum": [ + "US_PRODUCTION", + "EU", + "EU2", + "SANDBOX" + ] + } + }, + "required": [ + "environment" + ], + "additionalProperties": false, + "x-docs-type": "FIREBLOCKS" + }, + "SourceConfigWebhookAuthFrontApp": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FRONTAPP" + }, + "SourceConfigWebhookAuthZoom": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ZOOM" + }, + "SourceConfigWebhookAuthX": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "TWITTER" + }, + "SourceConfigWebhookAuthRecharge": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "RECHARGE" + }, + "SourceConfigWebhookAuthRecurly": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "RECURLY" + }, + "SourceConfigWebhookAuthRingCentral": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "required": [ + "token" + ], + "additionalProperties": false, + "x-docs-type": "RING_CENTRAL" + }, + "SourceConfigWebhookAuthStripe": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "STRIPE" + }, + "SourceConfigWebhookAuthPropertyFinder": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PROPERTY-FINDER" + }, + "SourceConfigWebhookAuthQuoter": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "QUOTER" + }, + "SourceConfigWebhookAuthShopify": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SHOPIFY" + }, + "SourceConfigWebhookAuthTwilio": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TWILIO" + }, + "SourceConfigWebhookAuthGitHub": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "GITHUB" + }, + "SourceConfigWebhookAuthPostmark": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "x-docs-type": "POSTMARK" + }, + "SourceConfigWebhookAuthTally": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TALLY" + }, + "SourceConfigWebhookAuthTypeform": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TYPEFORM" + }, + "SourceConfigWebhookAuthPicqer": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PICQER" + }, + "SourceConfigWebhookAuthXero": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "XERO" + }, + "SourceConfigWebhookAuthSvix": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SVIX" + }, + "SourceConfigWebhookAuthResend": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "RESEND" + }, + "SourceConfigWebhookAuthAdyen": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ADYEN" + }, + "SourceConfigWebhookAuthAkeneo": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "AKENEO" + }, + "SourceConfigWebhookAuthGitLab": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "GITLAB" + }, + "SourceConfigWebhookAuthWooCommerce": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "WOOCOMMERCE" + }, + "SourceConfigWebhookAuthOkta": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "OKTA" + }, + "SourceConfigWebhookAuthOura": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "OURA" + }, + "SourceConfigWebhookAuthCommerceLayer": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "COMMERCELAYER" + }, + "SourceConfigWebhookAuthHubspot": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "HUBSPOT" + }, + "SourceConfigWebhookAuthMailgun": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "MAILGUN" + }, + "SourceConfigWebhookAuthPersona": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PERSONA" + }, + "SourceConfigWebhookAuthPipedrive": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "x-docs-type": "PIPEDRIVE" + }, + "SourceConfigWebhookAuthSendgrid": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SENDGRID" + }, + "SourceConfigWebhookAuthWorkOS": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "WORKOS" + }, + "SourceConfigWebhookAuthSynctera": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SYNCTERA" + }, + "SourceConfigWebhookAuthAWSSNS": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "x-docs-type": "AWS_SNS" + }, + "SourceConfigWebhookAuth3dEye": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "THREE_D_EYE" + }, + "SourceConfigWebhookAuthTwitch": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TWITCH" + }, + "SourceConfigWebhookAuthEnode": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ENODE" + }, + "SourceConfigWebhookAuthFaundit": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FAUNDIT" + }, + "SourceConfigWebhookAuthFavro": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FAVRO" + }, + "SourceConfigWebhookAuthLinear": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "LINEAR" + }, + "SourceConfigWebhookAuthShipHero": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SHIPHERO" + }, + "SourceConfigWebhookAuthShopline": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SHOPLINE" + }, + "SourceConfigWebhookAuthWix": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "WIX" + }, + "SourceConfigWebhookAuthNMIPaymentGateway": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "NMI" + }, + "SourceConfigWebhookAuthOrb": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ORB" + }, + "SourceConfigWebhookAuthPylon": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PYLON" + }, + "SourceConfigWebhookAuthRazorpay": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "RAZORPAY" + }, + "SourceConfigWebhookAuthRepay": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "REPAY" + }, + "SourceConfigWebhookAuthSquare": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SQUARE" + }, + "SourceConfigWebhookAuthSolidgate": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SOLIDGATE" + }, + "SourceConfigWebhookAuthTrello": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TRELLO" + }, + "SourceConfigWebhookAuthEbay": { + "type": "object", + "properties": { + "environment": { + "type": "string", + "enum": [ + "PRODUCTION", + "SANDBOX" + ] + }, + "dev_id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "verification_token": { + "type": "string" + } + }, + "required": [ + "environment", + "dev_id", + "client_id", + "client_secret", + "verification_token" + ], + "additionalProperties": false, + "x-docs-type": "EBAY" + }, + "SourceConfigWebhookAuthTelnyx": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "TELNYX" + }, + "SourceConfigWebhookAuthDiscord": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "DISCORD" + }, + "SourceConfigWebhookAuthTokenIO": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "TOKENIO" + }, + "SourceConfigWebhookAuthFiserv": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + }, + "store_name": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FISERV" + }, + "SourceConfigWebhookAuthFusionAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FUSIONAUTH" + }, + "SourceConfigWebhookAuthBondsmith": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "BONDSMITH" + }, + "SourceConfigWebhookAuthVercelLogDrains": { + "type": "object", + "properties": { + "log_drains_secret": { + "type": "string", + "nullable": true + }, + "webhook_secret_key": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "VERCEL_LOG_DRAINS" + }, + "SourceConfigWebhookAuthVercelWebhooks": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "VERCEL" + }, + "SourceConfigWebhookAuthTebex": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TEBEX" + }, + "SourceConfigWebhookAuthSlack": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SLACK" + }, + "SourceConfigWebhookAuthSmartcar": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SMARTCAR" + }, + "SourceConfigWebhookAuthMailchimp": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "MAILCHIMP" + }, + "SourceConfigWebhookAuthNuvemshop": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "NUVEMSHOP" + }, + "SourceConfigWebhookAuthPaddle": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PADDLE" + }, + "SourceConfigWebhookAuthPaypal": { + "type": "object", + "properties": { + "webhook_id": { + "type": "string" + } + }, + "required": [ + "webhook_id" + ], + "additionalProperties": false, + "x-docs-type": "PAYPAL" + }, + "SourceConfigWebhookAuthPortal": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PORTAL" + }, + "SourceConfigWebhookAuthTreezor": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TREEZOR" + }, + "SourceConfigWebhookAuthPraxis": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PRAXIS" + }, + "SourceConfigWebhookAuthCustomer.IO": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "CUSTOMERIO" + }, + "SourceConfigWebhookAuthExactOnline": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "EXACT_ONLINE" + }, + "SourceConfigWebhookAuthFacebook": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FACEBOOK" + }, + "SourceConfigWebhookAuthWhatsApp": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "WHATSAPP" + }, + "SourceConfigWebhookAuthReplicate": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "REPLICATE" + }, + "SourceConfigWebhookAuthTikTok": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "TIKTOK" + }, + "SourceConfigWebhookAuthTikTokShop": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + }, + "app_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key", + "app_key" + ], + "additionalProperties": false, + "x-docs-type": "TIKTOK_SHOP" + }, + "SourceConfigWebhookAuthAirwallex": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "AIRWALLEX" + }, + "SourceConfigWebhookAuthAscend": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ASCEND" + }, + "SourceConfigWebhookAuthAlipay": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "ALIPAY" + }, + "SourceConfigWebhookAuthZendesk": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ZENDESK" + }, + "SourceConfigWebhookAuthUpollo": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "UPOLLO" + }, + "SourceConfigWebhookAuthSmile": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "SMILE" + }, + "SourceConfigWebhookAuthNylas": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "NYLAS" + }, + "SourceConfigWebhookAuthClio": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "CLIO" + }, + "SourceConfigWebhookAuthGoCardless": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "GOCARDLESS" + }, + "SourceConfigWebhookAuthLinkedIn": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "LINKEDIN" + }, + "SourceConfigWebhookAuthLithic": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "LITHIC" + }, + "SourceConfigWebhookAuthUtila": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "x-docs-type": "UTILA" + }, + "SourceConfigWebhookAuthZeroHash": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ZEROHASH" + }, + "SourceConfigWebhookAuthAirtable": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "AIRTABLE" + }, + "SourceConfigWebhookAuthAsana": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "ASANA" + }, + "SourceConfigWebhookAuthFastSpring": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FASTSPRING" + }, + "SourceConfigWebhookAuthPayProGlobal": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "PAYPRO_GLOBAL" + }, + "SourceConfigWebhookAuthUSPS": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "USPS" + }, + "SourceConfigWebhookAuthFlexport": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "x-docs-type": "FLEXPORT" + }, + "SourceConfigWebhookAuthCircle": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "x-docs-type": "CIRCLE" + }, + "SourceConfigWebhookAuthEmpty": { + "nullable": true, + "x-docs-hide": true, + "x-docs-nullable": true + }, + "SourceConfigWebhookAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthHMAC" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthBasicAuth" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAPIKey" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAiprise" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthDocuSign" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthIntercom" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSanity" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthBigCommerce" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthOpenAI" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPolar" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthBridgeStablecoins" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthBridgeAPI" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthChargebeeBilling" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthChaindots" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCloudSignal" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCoinbase" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCourier" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCursor" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthMeraki" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFireblocks" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFrontApp" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthZoom" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthX" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthRecharge" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthRecurly" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthRingCentral" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthStripe" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPropertyFinder" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthQuoter" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthShopify" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTwilio" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthGitHub" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPostmark" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTally" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTypeform" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPicqer" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthXero" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSvix" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthResend" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAdyen" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAkeneo" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthGitLab" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthWooCommerce" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthOkta" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthOura" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCommerceLayer" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthHubspot" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthMailgun" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPersona" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPipedrive" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSendgrid" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthWorkOS" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSynctera" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAWSSNS" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuth3dEye" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTwitch" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthEnode" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFaundit" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFavro" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthLinear" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthShipHero" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthShopline" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthWix" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthNMIPaymentGateway" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthOrb" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPylon" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthRazorpay" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthRepay" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSquare" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSolidgate" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTrello" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthEbay" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTelnyx" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthDiscord" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTokenIO" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFiserv" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFusionAuth" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthBondsmith" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthVercelLogDrains" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthVercelWebhooks" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTebex" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSlack" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSmartcar" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthMailchimp" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthNuvemshop" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPaddle" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPaypal" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPortal" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTreezor" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPraxis" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCustomer.IO" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthExactOnline" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFacebook" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthWhatsApp" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthReplicate" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTikTok" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthTikTokShop" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAirwallex" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAscend" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAlipay" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthZendesk" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthUpollo" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthSmile" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthNylas" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthClio" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthGoCardless" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthLinkedIn" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthLithic" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthUtila" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthZeroHash" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAirtable" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthAsana" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFastSpring" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthPayProGlobal" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthUSPS" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthFlexport" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthCircle" + }, + { + "$ref": "#/components/schemas/SourceConfigWebhookAuthEmpty" + } + ] + }, + "SourceTypeConfigWEBHOOK": { + "type": "object", + "properties": { + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + }, + "auth_type": { + "type": "string", + "enum": [ + "HMAC", + "BASIC_AUTH", + "API_KEY", + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "nullable": true + }, + "auth": { + "$ref": "#/components/schemas/SourceConfigWebhookAuth" + } + }, + "additionalProperties": false, + "description": "The type config for WEBHOOK. Requires type to be `WEBHOOK`.", + "x-docs-type": "WEBHOOK" + }, + "SourceConfigHTTPAuthHMAC": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sha1", + "sha256", + "sha512", + "md5" + ] + }, + "encoding": { + "type": "string", + "enum": [ + "base64", + "base64url", + "hex" + ] + }, + "header_key": { + "type": "string" + }, + "webhook_secret_key": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "HMAC" + }, + "SourceConfigHTTPAuthBasicAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "BASIC_AUTH" + }, + "SourceConfigHTTPAuthAPIKey": { + "type": "object", + "properties": { + "header_key": { + "type": "string" + }, + "api_key": { + "type": "string" + } + }, + "additionalProperties": false, + "x-docs-type": "API_KEY" + }, + "SourceConfigHTTPAuthEmpty": { + "nullable": true, + "x-docs-hide": true, + "x-docs-nullable": true + }, + "SourceConfigHTTPAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/SourceConfigHTTPAuthHMAC" + }, + { + "$ref": "#/components/schemas/SourceConfigHTTPAuthBasicAuth" + }, + { + "$ref": "#/components/schemas/SourceConfigHTTPAuthAPIKey" + }, + { + "$ref": "#/components/schemas/SourceConfigHTTPAuthEmpty" + } + ] + }, + "SourceTypeConfigHTTP": { + "type": "object", + "properties": { + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + }, + "auth_type": { + "type": "string", + "enum": [ + "HMAC", + "BASIC_AUTH", + "API_KEY" + ], + "nullable": true + }, + "auth": { + "$ref": "#/components/schemas/SourceConfigHTTPAuth" + } + }, + "additionalProperties": false, + "description": "The type config for HTTP. Requires type to be `HTTP`.", + "x-docs-type": "HTTP" + }, + "SourceTypeConfigMANAGED": { + "type": "object", + "properties": { + "auth": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "required": [ + "token" + ], + "additionalProperties": false + } + }, + "additionalProperties": false, + "x-docs-type": "MANAGED" + }, + "SourceConfigManagedAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Managed" + }, + "SourceTypeConfigHOOKDECK_OUTPOST": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigManagedAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for HOOKDECK_OUTPOST. Requires type to be `HOOKDECK_OUTPOST`.", + "x-docs-type": "HOOKDECK_OUTPOST" + }, + "SourceConfigSanityAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Sanity" + }, + "SourceTypeConfigSANITY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSanityAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SANITY. Requires type to be `SANITY`.", + "x-docs-type": "SANITY", + "x-docs-external-url": "https://www.sanity.io/docs/webhooks" + }, + "SourceConfigBigCommerceAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "BigCommerce" + }, + "SourceTypeConfigBIGCOMMERCE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigBigCommerceAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for BIGCOMMERCE. Requires type to be `BIGCOMMERCE`.", + "x-docs-type": "BIGCOMMERCE" + }, + "SourceConfigOpenAIAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "OpenAI" + }, + "SourceTypeConfigOPENAI": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigOpenAIAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for OPENAI. Requires type to be `OPENAI`.", + "x-docs-type": "OPENAI" + }, + "SourceConfigPolarAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Polar" + }, + "SourceTypeConfigPOLAR": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPolarAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for POLAR. Requires type to be `POLAR`.", + "x-docs-type": "POLAR" + }, + "SourceConfigBridgeStablecoinsAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Bridge (Stablecoins)" + }, + "SourceTypeConfigBRIDGE_XYZ": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigBridgeStablecoinsAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for BRIDGE_XYZ. Requires type to be `BRIDGE_XYZ`.", + "x-docs-type": "BRIDGE_XYZ", + "x-docs-external-url": "https://apidocs.bridge.xyz/docs/webhook-event-signature-verification" + }, + "SourceConfigBridgeAPIAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Bridge API" + }, + "SourceTypeConfigBRIDGE_API": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigBridgeAPIAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for BRIDGE_API. Requires type to be `BRIDGE_API`.", + "x-docs-type": "BRIDGE_API", + "x-docs-external-url": "https://docs.bridgeapi.io/docs/secure-your-webhooks" + }, + "SourceConfigChargebeeBillingAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Chargebee Billing" + }, + "SourceTypeConfigCHARGEBEE_BILLING": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigChargebeeBillingAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CHARGEBEE_BILLING. Requires type to be `CHARGEBEE_BILLING`.", + "x-docs-type": "CHARGEBEE_BILLING", + "x-docs-external-url": "https://www.chargebee.com/docs/billing/2.0/site-configuration/webhook_settings#basic-authentication" + }, + "SourceConfigChaindotsAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Chaindots" + }, + "SourceTypeConfigCHAINDOTS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigChaindotsAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CHAINDOTS. Requires type to be `CHAINDOTS`.", + "x-docs-type": "CHAINDOTS" + }, + "SourceConfigCloudSignalAuth": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Cloud Signal" + }, + "SourceTypeConfigCLOUDSIGNAL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCloudSignalAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CLOUDSIGNAL. Requires type to be `CLOUDSIGNAL`.", + "x-docs-type": "CLOUDSIGNAL" + }, + "SourceConfigCoinbaseAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Coinbase" + }, + "SourceTypeConfigCOINBASE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCoinbaseAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for COINBASE. Requires type to be `COINBASE`.", + "x-docs-type": "COINBASE", + "x-docs-external-url": "https://docs.cdp.coinbase.com/data/webhooks/verify-signatures" + }, + "SourceConfigCourierAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Courier" + }, + "SourceTypeConfigCOURIER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCourierAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for COURIER. Requires type to be `COURIER`.", + "x-docs-type": "COURIER" + }, + "SourceConfigCursorAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Cursor" + }, + "SourceTypeConfigCURSOR": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCursorAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CURSOR. Requires type to be `CURSOR`.", + "x-docs-type": "CURSOR", + "x-docs-external-url": "https://cursor.com/docs/cloud-agent/api/webhooks" + }, + "SourceConfigMerakiAuth": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Meraki" + }, + "SourceTypeConfigMERAKI": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigMerakiAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for MERAKI. Requires type to be `MERAKI`.", + "x-docs-type": "MERAKI", + "x-docs-external-url": "https://developer.cisco.com/meraki/webhooks/introduction/#shared-secret" + }, + "SourceConfigFireblocksAuth": { + "type": "object", + "properties": { + "environment": { + "type": "string", + "enum": [ + "US_PRODUCTION", + "EU", + "EU2", + "SANDBOX" + ] + } + }, + "required": [ + "environment" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Fireblocks" + }, + "SourceTypeConfigFIREBLOCKS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFireblocksAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FIREBLOCKS. Requires type to be `FIREBLOCKS`.", + "x-docs-type": "FIREBLOCKS", + "x-docs-external-url": "https://developers.fireblocks.com/reference/validating-webhooks" + }, + "SourceConfigFrontAppAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "FrontApp" + }, + "SourceTypeConfigFRONTAPP": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFrontAppAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FRONTAPP. Requires type to be `FRONTAPP`.", + "x-docs-type": "FRONTAPP", + "x-docs-external-url": "https://dev.frontapp.com/docs/webhooks-1#verifying-integrity" + }, + "SourceConfigZoomAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Zoom" + }, + "SourceTypeConfigZOOM": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigZoomAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ZOOM. Requires type to be `ZOOM`.", + "x-docs-type": "ZOOM", + "x-docs-external-url": "https://developers.zoom.us/docs/api/webhooks/#verify-webhook-events" + }, + "SourceConfigXAuth": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "X" + }, + "SourceTypeConfigTWITTER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigXAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TWITTER. Requires type to be `TWITTER`.", + "x-docs-type": "TWITTER", + "x-docs-external-url": "https://developer.x.com/en/docs/x-api/enterprise/account-activity-api/guides/securing-webhooks" + }, + "SourceConfigRechargeAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Recharge" + }, + "SourceTypeConfigRECHARGE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigRechargeAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for RECHARGE. Requires type to be `RECHARGE`.", + "x-docs-type": "RECHARGE", + "x-docs-external-url": "https://docs.getrecharge.com/docs/webhooks-overview#validating-webhooks" + }, + "SourceConfigRecurlyAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Recurly" + }, + "SourceTypeConfigRECURLY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigRecurlyAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for RECURLY. Requires type to be `RECURLY`.", + "x-docs-type": "RECURLY", + "x-docs-external-url": "https://docs.recurly.com/recurly-subscriptions/docs/signature-verification" + }, + "SourceConfigRingCentralAuth": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "required": [ + "token" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "RingCentral" + }, + "SourceTypeConfigRING_CENTRAL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigRingCentralAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for RING_CENTRAL. Requires type to be `RING_CENTRAL`.", + "x-docs-type": "RING_CENTRAL", + "x-docs-external-url": "https://developer.ringcentral.com/api-docs/latest/index.html#webhooks" + }, + "SourceConfigStripeAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Stripe" + }, + "SourceTypeConfigSTRIPE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigStripeAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for STRIPE. Requires type to be `STRIPE`.", + "x-docs-type": "STRIPE", + "x-docs-external-url": "https://docs.stripe.com/webhooks?verify=verify-manually" + }, + "SourceConfigPropertyFinderAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Property Finder" + }, + "SourceTypeConfigPROPERTYFINDER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPropertyFinderAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PROPERTY-FINDER. Requires type to be `PROPERTY-FINDER`.", + "x-docs-type": "PROPERTY-FINDER" + }, + "SourceConfigQuoterAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Quoter" + }, + "SourceTypeConfigQUOTER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigQuoterAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for QUOTER. Requires type to be `QUOTER`.", + "x-docs-type": "QUOTER", + "x-docs-external-url": "https://help.quoter.com/hc/en-us/articles/32085971955355-Integrate-with-Webhooks#h_73bb393dfd" + }, + "SourceConfigShopifyAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Shopify" + }, + "SourceTypeConfigSHOPIFY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigShopifyAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SHOPIFY. Requires type to be `SHOPIFY`.", + "x-docs-type": "SHOPIFY", + "x-docs-external-url": "https://shopify.dev/docs/apps/build/webhooks/subscribe/https#step-2-validate-the-origin-of-your-webhook-to-ensure-its-coming-from-shopify" + }, + "SourceConfigTwilioAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Twilio" + }, + "SourceTypeConfigTWILIO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTwilioAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TWILIO. Requires type to be `TWILIO`.", + "x-docs-type": "TWILIO", + "x-docs-external-url": "https://www.twilio.com/docs/usage/webhooks/webhooks-security#validating-signatures-from-twilio" + }, + "SourceConfigGitHubAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "GitHub" + }, + "SourceTypeConfigGITHUB": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigGitHubAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for GITHUB. Requires type to be `GITHUB`.", + "x-docs-type": "GITHUB", + "x-docs-external-url": "https://docs.github.com/en/webhooks/using-webhooks/validating-webhook-deliveries" + }, + "SourceConfigPostmarkAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Postmark" + }, + "SourceTypeConfigPOSTMARK": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPostmarkAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for POSTMARK. Requires type to be `POSTMARK`.", + "x-docs-type": "POSTMARK" + }, + "SourceConfigTallyAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Tally" + }, + "SourceTypeConfigTALLY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTallyAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TALLY. Requires type to be `TALLY`.", + "x-docs-type": "TALLY", + "x-docs-external-url": "https://tally.so/help/webhooks" + }, + "SourceConfigTypeformAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Typeform" + }, + "SourceTypeConfigTYPEFORM": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTypeformAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TYPEFORM. Requires type to be `TYPEFORM`.", + "x-docs-type": "TYPEFORM", + "x-docs-external-url": "https://www.typeform.com/developers/webhooks/secure-your-webhooks/" + }, + "SourceConfigPicqerAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Picqer" + }, + "SourceTypeConfigPICQER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPicqerAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PICQER. Requires type to be `PICQER`.", + "x-docs-type": "PICQER", + "x-docs-external-url": "https://picqer.com/en/api/webhooks#validating-webhooks" + }, + "SourceConfigXeroAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Xero" + }, + "SourceTypeConfigXERO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigXeroAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for XERO. Requires type to be `XERO`.", + "x-docs-type": "XERO", + "x-docs-external-url": "https://developer.xero.com/documentation/guides/webhooks/configuring-your-server/" + }, + "SourceConfigSvixAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Svix" + }, + "SourceTypeConfigSVIX": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSvixAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SVIX. Requires type to be `SVIX`.", + "x-docs-type": "SVIX" + }, + "SourceConfigResendAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Resend" + }, + "SourceTypeConfigRESEND": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigResendAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for RESEND. Requires type to be `RESEND`.", + "x-docs-type": "RESEND" + }, + "SourceConfigAdyenAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Adyen" + }, + "SourceTypeConfigADYEN": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAdyenAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ADYEN. Requires type to be `ADYEN`.", + "x-docs-type": "ADYEN", + "x-docs-external-url": "https://docs.adyen.com/development-resources/webhooks/verify-hmac-signatures/" + }, + "SourceConfigAkeneoAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Akeneo" + }, + "SourceTypeConfigAKENEO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAkeneoAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for AKENEO. Requires type to be `AKENEO`.", + "x-docs-type": "AKENEO" + }, + "SourceConfigGitLabAuth": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "GitLab" + }, + "SourceTypeConfigGITLAB": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigGitLabAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for GITLAB. Requires type to be `GITLAB`.", + "x-docs-type": "GITLAB" + }, + "SourceConfigWooCommerceAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "WooCommerce" + }, + "SourceTypeConfigWOOCOMMERCE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigWooCommerceAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for WOOCOMMERCE. Requires type to be `WOOCOMMERCE`.", + "x-docs-type": "WOOCOMMERCE" + }, + "SourceConfigOktaAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Okta" + }, + "SourceTypeConfigOKTA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigOktaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for OKTA. Requires type to be `OKTA`.", + "x-docs-type": "OKTA" + }, + "SourceConfigOuraAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Oura" + }, + "SourceTypeConfigOURA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigOuraAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for OURA. Requires type to be `OURA`.", + "x-docs-type": "OURA", + "x-docs-external-url": "https://cloud.ouraring.com/v2/docs#section/Security" + }, + "SourceConfigCommerceLayerAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Commerce Layer" + }, + "SourceTypeConfigCOMMERCELAYER": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCommerceLayerAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for COMMERCELAYER. Requires type to be `COMMERCELAYER`.", + "x-docs-type": "COMMERCELAYER", + "x-docs-external-url": "https://docs.commercelayer.io/core/callbacks-security" + }, + "SourceConfigHubspotAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Hubspot" + }, + "SourceTypeConfigHUBSPOT": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigHubspotAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for HUBSPOT. Requires type to be `HUBSPOT`.", + "x-docs-type": "HUBSPOT", + "x-docs-external-url": "https://developers.hubspot.com/docs/api/webhooks/validating-requests" + }, + "SourceConfigMailgunAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Mailgun" + }, + "SourceTypeConfigMAILGUN": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigMailgunAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for MAILGUN. Requires type to be `MAILGUN`.", + "x-docs-type": "MAILGUN", + "x-docs-external-url": "https://documentation.mailgun.com/docs/mailgun/user-manual/tracking-messages/#webhooks" + }, + "SourceConfigPersonaAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Persona" + }, + "SourceTypeConfigPERSONA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPersonaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PERSONA. Requires type to be `PERSONA`.", + "x-docs-type": "PERSONA", + "x-docs-external-url": "https://docs.withpersona.com/docs/webhooks-best-practices#checking-signatures" + }, + "SourceConfigPipedriveAuth": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Pipedrive" + }, + "SourceTypeConfigPIPEDRIVE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPipedriveAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PIPEDRIVE. Requires type to be `PIPEDRIVE`.", + "x-docs-type": "PIPEDRIVE" + }, + "SourceConfigSendgridAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Sendgrid" + }, + "SourceTypeConfigSENDGRID": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSendgridAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SENDGRID. Requires type to be `SENDGRID`.", + "x-docs-type": "SENDGRID" + }, + "SourceConfigWorkOSAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "WorkOS" + }, + "SourceTypeConfigWORKOS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigWorkOSAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for WORKOS. Requires type to be `WORKOS`.", + "x-docs-type": "WORKOS", + "x-docs-external-url": "https://workos.com/docs/events/data-syncing/webhooks/3-process-the-events/b-validate-the-requests-manually" + }, + "SourceConfigSyncteraAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Synctera" + }, + "SourceTypeConfigSYNCTERA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSyncteraAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SYNCTERA. Requires type to be `SYNCTERA`.", + "x-docs-type": "SYNCTERA", + "x-docs-external-url": "https://dev.synctera.com/docs/webhooks-guide#integration-steps" + }, + "SourceConfigAWSSNSAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "AWS SNS" + }, + "SourceTypeConfigAWS_SNS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAWSSNSAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for AWS_SNS. Requires type to be `AWS_SNS`.", + "x-docs-type": "AWS_SNS" + }, + "SourceConfig3dEyeAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "3d Eye" + }, + "SourceTypeConfigTHREE_D_EYE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfig3dEyeAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for THREE_D_EYE. Requires type to be `THREE_D_EYE`.", + "x-docs-type": "THREE_D_EYE" + }, + "SourceConfigTwitchAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Twitch" + }, + "SourceTypeConfigTWITCH": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTwitchAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TWITCH. Requires type to be `TWITCH`.", + "x-docs-type": "TWITCH", + "x-docs-external-url": "https://dev.twitch.tv/docs/eventsub/handling-webhook-events/#verifying-the-event-message" + }, + "SourceConfigEnodeAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Enode" + }, + "SourceTypeConfigENODE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigEnodeAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ENODE. Requires type to be `ENODE`.", + "x-docs-type": "ENODE", + "x-docs-external-url": "https://developers.enode.com/docs/webhooks" + }, + "SourceConfigFaunditAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Faundit" + }, + "SourceTypeConfigFAUNDIT": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFaunditAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FAUNDIT. Requires type to be `FAUNDIT`.", + "x-docs-type": "FAUNDIT", + "x-docs-external-url": "https://faundit.gitbook.io/faundit-api-v2/webhooks" + }, + "SourceConfigFavroAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Favro" + }, + "SourceTypeConfigFAVRO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFavroAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FAVRO. Requires type to be `FAVRO`.", + "x-docs-type": "FAVRO", + "x-docs-external-url": "https://favro.com/developer/#webhook-signatures" + }, + "SourceConfigLinearAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Linear" + }, + "SourceTypeConfigLINEAR": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigLinearAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for LINEAR. Requires type to be `LINEAR`.", + "x-docs-type": "LINEAR", + "x-docs-external-url": "https://developers.linear.app/docs/graphql/webhooks#securing-webhooks" + }, + "SourceConfigShipHeroAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "ShipHero" + }, + "SourceTypeConfigSHIPHERO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigShipHeroAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SHIPHERO. Requires type to be `SHIPHERO`.", + "x-docs-type": "SHIPHERO", + "x-docs-external-url": "https://developer.shiphero.com/webhooks/#webhook_verification" + }, + "SourceConfigShoplineAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Shopline" + }, + "SourceTypeConfigSHOPLINE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigShoplineAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SHOPLINE. Requires type to be `SHOPLINE`.", + "x-docs-type": "SHOPLINE", + "x-docs-external-url": "https://developer.shopline.com/docsv2/ec20/3cv5d7wpfgr6a8z5/wf8em731s7f8c3ut?version=v20240301#signature-verification" + }, + "SourceConfigWixAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Wix" + }, + "SourceTypeConfigWIX": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigWixAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for WIX. Requires type to be `WIX`.", + "x-docs-type": "WIX", + "x-docs-external-url": "https://dev.wix.com/docs/build-apps/build-your-app/authentication/verify-wix-requests" + }, + "SourceConfigNMIPaymentGatewayAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "NMI Payment Gateway" + }, + "SourceTypeConfigNMI": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigNMIPaymentGatewayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for NMI. Requires type to be `NMI`.", + "x-docs-type": "NMI", + "x-docs-external-url": "https://secure.networkmerchants.com/gw/merchants/resources/integration/integration_portal.php#webhooks_setup" + }, + "SourceConfigOrbAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Orb" + }, + "SourceTypeConfigORB": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigOrbAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ORB. Requires type to be `ORB`.", + "x-docs-type": "ORB", + "x-docs-external-url": "https://docs.withorb.com/guides/integrations-and-exports/webhooks#webhooks-verification" + }, + "SourceConfigPylonAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Pylon" + }, + "SourceTypeConfigPYLON": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPylonAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PYLON. Requires type to be `PYLON`.", + "x-docs-type": "PYLON", + "x-docs-external-url": "https://getpylon.com/developers/guides/using-webhooks/#event-signatures" + }, + "SourceConfigRazorpayAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Razorpay" + }, + "SourceTypeConfigRAZORPAY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigRazorpayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for RAZORPAY. Requires type to be `RAZORPAY`.", + "x-docs-type": "RAZORPAY", + "x-docs-external-url": "https://razorpay.com/docs/webhooks/validate-test/#validate-webhooks" + }, + "SourceConfigRepayAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Repay" + }, + "SourceTypeConfigREPAY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigRepayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for REPAY. Requires type to be `REPAY`.", + "x-docs-type": "REPAY" + }, + "SourceConfigSquareAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Square" + }, + "SourceTypeConfigSQUARE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSquareAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SQUARE. Requires type to be `SQUARE`.", + "x-docs-type": "SQUARE", + "x-docs-external-url": "https://developer.squareup.com/docs/webhooks/step3validate" + }, + "SourceConfigSolidgateAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Solidgate" + }, + "SourceTypeConfigSOLIDGATE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSolidgateAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SOLIDGATE. Requires type to be `SOLIDGATE`.", + "x-docs-type": "SOLIDGATE", + "x-docs-external-url": "https://docs.solidgate.com/payments/integrate/webhooks/#security" + }, + "SourceConfigTrelloAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Trello" + }, + "SourceTypeConfigTRELLO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTrelloAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TRELLO. Requires type to be `TRELLO`.", + "x-docs-type": "TRELLO", + "x-docs-external-url": "https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/#webhook-signatures" + }, + "SourceConfigEbayAuth": { + "type": "object", + "properties": { + "environment": { + "type": "string", + "enum": [ + "PRODUCTION", + "SANDBOX" + ] + }, + "dev_id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "verification_token": { + "type": "string" + } + }, + "required": [ + "environment", + "dev_id", + "client_id", + "client_secret", + "verification_token" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Ebay" + }, + "SourceTypeConfigEBAY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigEbayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for EBAY. Requires type to be `EBAY`.", + "x-docs-type": "EBAY", + "x-docs-external-url": "https://developer.ebay.com/api-docs/commerce/notification/resources/destination/methods/createDestination" + }, + "SourceConfigTelnyxAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Telnyx" + }, + "SourceTypeConfigTELNYX": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTelnyxAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TELNYX. Requires type to be `TELNYX`.", + "x-docs-type": "TELNYX" + }, + "SourceConfigDiscordAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Discord" + }, + "SourceTypeConfigDISCORD": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigDiscordAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for DISCORD. Requires type to be `DISCORD`.", + "x-docs-type": "DISCORD" + }, + "SourceConfigTokenIOAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "TokenIO" + }, + "SourceTypeConfigTOKENIO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTokenIOAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TOKENIO. Requires type to be `TOKENIO`.", + "x-docs-type": "TOKENIO", + "x-docs-external-url": "https://developer.token.io/token_rest_api_doc/content/e-rest/webhooks.htm?Highlight=webhook#Signature" + }, + "SourceConfigFiservAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + }, + "store_name": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Fiserv" + }, + "SourceTypeConfigFISERV": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFiservAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FISERV. Requires type to be `FISERV`.", + "x-docs-type": "FISERV" + }, + "SourceConfigFusionAuthAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "FusionAuth" + }, + "SourceTypeConfigFUSIONAUTH": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFusionAuthAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FUSIONAUTH. Requires type to be `FUSIONAUTH`.", + "x-docs-type": "FUSIONAUTH", + "x-docs-external-url": "https://fusionauth.io/docs/extend/events-and-webhooks/signing" + }, + "SourceConfigBondsmithAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Bondsmith" + }, + "SourceTypeConfigBONDSMITH": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigBondsmithAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for BONDSMITH. Requires type to be `BONDSMITH`.", + "x-docs-type": "BONDSMITH", + "x-docs-external-url": "https://docs.bond.tech/docs/signatures" + }, + "SourceConfigVercelLogDrainsAuth": { + "type": "object", + "properties": { + "log_drains_secret": { + "type": "string", + "nullable": true + }, + "webhook_secret_key": { + "type": "string" + } + }, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Vercel Log Drains" + }, + "SourceTypeConfigVERCEL_LOG_DRAINS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigVercelLogDrainsAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for VERCEL_LOG_DRAINS. Requires type to be `VERCEL_LOG_DRAINS`.", + "x-docs-type": "VERCEL_LOG_DRAINS", + "x-docs-external-url": "https://vercel.com/docs/rest-api#securing-your-log-drains" + }, + "SourceConfigVercelWebhooksAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Vercel Webhooks" + }, + "SourceTypeConfigVERCEL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigVercelWebhooksAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for VERCEL. Requires type to be `VERCEL`.", + "x-docs-type": "VERCEL", + "x-docs-external-url": "https://vercel.com/docs/observability/webhooks-overview/webhooks-api#securing-webhooks" + }, + "SourceConfigTebexAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Tebex" + }, + "SourceTypeConfigTEBEX": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTebexAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TEBEX. Requires type to be `TEBEX`.", + "x-docs-type": "TEBEX", + "x-docs-external-url": "https://docs.tebex.io/developers/webhooks/overview#verifying-webhook-authenticity" + }, + "SourceConfigSlackAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Slack" + }, + "SourceTypeConfigSLACK": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSlackAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SLACK. Requires type to be `SLACK`.", + "x-docs-type": "SLACK", + "x-docs-external-url": "https://api.slack.com/authentication/verifying-requests-from-slack#validating-a-request" + }, + "SourceConfigSmartcarAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Smartcar" + }, + "SourceTypeConfigSMARTCAR": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSmartcarAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SMARTCAR. Requires type to be `SMARTCAR`.", + "x-docs-type": "SMARTCAR", + "x-docs-external-url": "https://smartcar.com/docs/integrations/webhooks/payload-verification" + }, + "SourceConfigMailchimpAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Mailchimp" + }, + "SourceTypeConfigMAILCHIMP": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigMailchimpAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for MAILCHIMP. Requires type to be `MAILCHIMP`.", + "x-docs-type": "MAILCHIMP" + }, + "SourceConfigNuvemshopAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Nuvemshop" + }, + "SourceTypeConfigNUVEMSHOP": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigNuvemshopAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for NUVEMSHOP. Requires type to be `NUVEMSHOP`.", + "x-docs-type": "NUVEMSHOP", + "x-docs-external-url": "https://tiendanube.github.io/api-documentation/resources/webhook" + }, + "SourceConfigPaddleAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Paddle" + }, + "SourceTypeConfigPADDLE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPaddleAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PADDLE. Requires type to be `PADDLE`.", + "x-docs-type": "PADDLE", + "x-docs-external-url": "https://developer.paddle.com/webhooks/signature-verification" + }, + "SourceConfigPaypalAuth": { + "type": "object", + "properties": { + "webhook_id": { + "type": "string" + } + }, + "required": [ + "webhook_id" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Paypal" + }, + "SourceTypeConfigPAYPAL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPaypalAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PAYPAL. Requires type to be `PAYPAL`.", + "x-docs-type": "PAYPAL", + "x-docs-external-url": "https://developer.paypal.com/api/rest/webhooks/rest/" + }, + "SourceConfigPortalAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Portal" + }, + "SourceTypeConfigPORTAL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPortalAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PORTAL. Requires type to be `PORTAL`.", + "x-docs-type": "PORTAL" + }, + "SourceConfigTreezorAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Treezor" + }, + "SourceTypeConfigTREEZOR": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTreezorAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TREEZOR. Requires type to be `TREEZOR`.", + "x-docs-type": "TREEZOR", + "x-docs-external-url": "https://docs.treezor.com/guide/webhooks/integrity-checks.html" + }, + "SourceConfigPraxisAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Praxis" + }, + "SourceTypeConfigPRAXIS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPraxisAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PRAXIS. Requires type to be `PRAXIS`.", + "x-docs-type": "PRAXIS", + "x-docs-external-url": "https://doc.praxiscashier.com/integration_docs/latest/webhooks/validation" + }, + "SourceConfigCustomer.IOAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Customer.IO" + }, + "SourceTypeConfigCUSTOMERIO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCustomer.IOAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CUSTOMERIO. Requires type to be `CUSTOMERIO`.", + "x-docs-type": "CUSTOMERIO", + "x-docs-external-url": "https://docs.customer.io/journeys/webhooks/#securely-verify-requests" + }, + "SourceConfigExactOnlineAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Exact Online" + }, + "SourceTypeConfigEXACT_ONLINE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigExactOnlineAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for EXACT_ONLINE. Requires type to be `EXACT_ONLINE`.", + "x-docs-type": "EXACT_ONLINE", + "x-docs-external-url": "https://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Content-webhooksc" + }, + "SourceConfigFacebookAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Facebook" + }, + "SourceTypeConfigFACEBOOK": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFacebookAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FACEBOOK. Requires type to be `FACEBOOK`.", + "x-docs-type": "FACEBOOK" + }, + "SourceConfigWhatsAppAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "WhatsApp" + }, + "SourceTypeConfigWHATSAPP": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigWhatsAppAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for WHATSAPP. Requires type to be `WHATSAPP`.", + "x-docs-type": "WHATSAPP" + }, + "SourceConfigReplicateAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Replicate" + }, + "SourceTypeConfigREPLICATE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigReplicateAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for REPLICATE. Requires type to be `REPLICATE`.", + "x-docs-type": "REPLICATE", + "x-docs-external-url": "https://replicate.com/docs/topics/webhooks/verify-webhook" + }, + "SourceConfigTikTokAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "TikTok" + }, + "SourceTypeConfigTIKTOK": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTikTokAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TIKTOK. Requires type to be `TIKTOK`.", + "x-docs-type": "TIKTOK", + "x-docs-external-url": "https://developers.tiktok.com/doc/webhooks-verification" + }, + "SourceConfigTikTokShopAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + }, + "app_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key", + "app_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "TikTok Shop" + }, + "SourceTypeConfigTIKTOK_SHOP": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigTikTokShopAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for TIKTOK_SHOP. Requires type to be `TIKTOK_SHOP`.", + "x-docs-type": "TIKTOK_SHOP" + }, + "SourceConfigAirwallexAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Airwallex" + }, + "SourceTypeConfigAIRWALLEX": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAirwallexAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for AIRWALLEX. Requires type to be `AIRWALLEX`.", + "x-docs-type": "AIRWALLEX" + }, + "SourceConfigAscendAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Ascend" + }, + "SourceTypeConfigASCEND": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAscendAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ASCEND. Requires type to be `ASCEND`.", + "x-docs-type": "ASCEND", + "x-docs-external-url": "https://developers.useascend.com/docs/webhooks" + }, + "SourceConfigAlipayAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Alipay" + }, + "SourceTypeConfigALIPAY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAlipayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ALIPAY. Requires type to be `ALIPAY`.", + "x-docs-type": "ALIPAY", + "x-docs-external-url": "https://docs.alipayplus.com/alipayplus/alipayplus/api_acq_tile/signature" + }, + "SourceConfigZendeskAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Zendesk" + }, + "SourceTypeConfigZENDESK": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigZendeskAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ZENDESK. Requires type to be `ZENDESK`.", + "x-docs-type": "ZENDESK", + "x-docs-external-url": "https://developer.zendesk.com/documentation/webhooks/verifying/" + }, + "SourceConfigUpolloAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Upollo" + }, + "SourceTypeConfigUPOLLO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigUpolloAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for UPOLLO. Requires type to be `UPOLLO`.", + "x-docs-type": "UPOLLO", + "x-docs-external-url": "https://app.upollo.ai/docs/reference/webhooks#sign-up-for-upollo" + }, + "SourceConfigSmileAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Smile" + }, + "SourceTypeConfigSMILE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigSmileAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for SMILE. Requires type to be `SMILE`.", + "x-docs-type": "SMILE", + "x-docs-external-url": "https://docs.getsmileapi.com/reference/webhooks#validating-payloads" + }, + "SourceConfigNylasAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Nylas" + }, + "SourceTypeConfigNYLAS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigNylasAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for NYLAS. Requires type to be `NYLAS`.", + "x-docs-type": "NYLAS", + "x-docs-external-url": "https://developer.nylas.com/docs/v3/getting-started/webhooks/" + }, + "SourceConfigClioAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Clio" + }, + "SourceTypeConfigCLIO": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigClioAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CLIO. Requires type to be `CLIO`.", + "x-docs-type": "CLIO", + "x-docs-external-url": "https://docs.developers.clio.com/api-reference/#tag/Webhooks/Webhook-Security" + }, + "SourceConfigGoCardlessAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "GoCardless" + }, + "SourceTypeConfigGOCARDLESS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigGoCardlessAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for GOCARDLESS. Requires type to be `GOCARDLESS`.", + "x-docs-type": "GOCARDLESS", + "x-docs-external-url": "https://developer.gocardless.com/getting-started/staying-up-to-date-with-webhooks#staying_up-to-date_with_webhooks" + }, + "SourceConfigLinkedInAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "LinkedIn" + }, + "SourceTypeConfigLINKEDIN": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigLinkedInAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for LINKEDIN. Requires type to be `LINKEDIN`.", + "x-docs-type": "LINKEDIN" + }, + "SourceConfigLithicAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Lithic" + }, + "SourceTypeConfigLITHIC": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigLithicAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for LITHIC. Requires type to be `LITHIC`.", + "x-docs-type": "LITHIC", + "x-docs-external-url": "https://docs.lithic.com/docs/events-api#verifying-webhooks" + }, + "SourceConfigStravaAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Strava" + }, + "SourceTypeConfigSTRAVA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigStravaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for STRAVA. Requires type to be `STRAVA`.", + "x-docs-type": "STRAVA" + }, + "SourceConfigUtilaAuth": { + "type": "object", + "properties": { + "public_key": { + "type": "string" + } + }, + "required": [ + "public_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Utila" + }, + "SourceTypeConfigUTILA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigUtilaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for UTILA. Requires type to be `UTILA`.", + "x-docs-type": "UTILA", + "x-docs-external-url": "https://docs.utila.io/reference/webhooks" + }, + "SourceConfigMondayAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Monday" + }, + "SourceTypeConfigMONDAY": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigMondayAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for MONDAY. Requires type to be `MONDAY`.", + "x-docs-type": "MONDAY", + "x-docs-external-url": "https://support.monday.com/hc/en-us/articles/360003540679-Webhook-integration" + }, + "SourceConfigZeroHashAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "ZeroHash" + }, + "SourceTypeConfigZEROHASH": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigZeroHashAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ZEROHASH. Requires type to be `ZEROHASH`.", + "x-docs-type": "ZEROHASH", + "x-docs-external-url": "https://docs.zerohash.com/reference/webhook-security" + }, + "SourceConfigZiftAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Zift" + }, + "SourceTypeConfigZIFT": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigZiftAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ZIFT. Requires type to be `ZIFT`.", + "x-docs-type": "ZIFT", + "x-docs-external-url": "https://api.zift.io/#webhooks" + }, + "SourceConfigEthocaAuth": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Ethoca" + }, + "SourceTypeConfigETHOCA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigEthocaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ETHOCA. Requires type to be `ETHOCA`.", + "x-docs-type": "ETHOCA" + }, + "SourceConfigAirtableAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Airtable" + }, + "SourceTypeConfigAIRTABLE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAirtableAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for AIRTABLE. Requires type to be `AIRTABLE`.", + "x-docs-type": "AIRTABLE", + "x-docs-external-url": "https://airtable.com/developers/web/api/webhooks-overview#webhook-notification-delivery" + }, + "SourceConfigAsanaAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Asana" + }, + "SourceTypeConfigASANA": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigAsanaAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for ASANA. Requires type to be `ASANA`.", + "x-docs-type": "ASANA", + "x-docs-external-url": "https://developers.asana.com/docs/webhooks-guide#security" + }, + "SourceConfigFastSpringAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "FastSpring" + }, + "SourceTypeConfigFASTSPRING": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFastSpringAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FASTSPRING. Requires type to be `FASTSPRING`.", + "x-docs-type": "FASTSPRING", + "x-docs-external-url": "https://developer.fastspring.com/reference/message-security" + }, + "SourceConfigPayProGlobalAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "PayPro Global" + }, + "SourceTypeConfigPAYPRO_GLOBAL": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigPayProGlobalAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for PAYPRO_GLOBAL. Requires type to be `PAYPRO_GLOBAL`.", + "x-docs-type": "PAYPRO_GLOBAL", + "x-docs-external-url": "https://developers.payproglobal.com/docs/integrate-with-paypro-global/webhook-ipn/" + }, + "SourceConfigUSPSAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "USPS" + }, + "SourceTypeConfigUSPS": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigUSPSAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for USPS. Requires type to be `USPS`.", + "x-docs-type": "USPS", + "x-docs-external-url": "https://developers.usps.com/subscriptions-adjustmentsv3#tag/Listener-URL-Specification/operation/post-notification" + }, + "SourceConfigFlexportAuth": { + "type": "object", + "properties": { + "webhook_secret_key": { + "type": "string" + } + }, + "required": [ + "webhook_secret_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Flexport" + }, + "SourceTypeConfigFLEXPORT": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigFlexportAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for FLEXPORT. Requires type to be `FLEXPORT`.", + "x-docs-type": "FLEXPORT", + "x-docs-external-url": "https://apidocs.flexport.com/v2/tag/Webhook-Endpoints/" + }, + "SourceConfigCircleAuth": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ], + "additionalProperties": false, + "nullable": true, + "x-docs-type": "Circle" + }, + "SourceTypeConfigCIRCLE": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/SourceConfigCircleAuth" + }, + "allowed_http_methods": { + "$ref": "#/components/schemas/SourceAllowedHTTPMethod" + }, + "custom_response": { + "$ref": "#/components/schemas/SourceCustomResponse" + } + }, + "additionalProperties": false, + "description": "The type config for CIRCLE. Requires type to be `CIRCLE`.", + "x-docs-type": "CIRCLE", + "x-docs-external-url": "https://developers.circle.com/cpn/guides/webhooks/verify-webhook-signatures" + }, + "SourceConfig": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/SourceTypeConfigAIPRISE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigDOCUSIGN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigINTERCOM" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPUBLISH_API" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWEBHOOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHTTP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMANAGED" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHOOKDECK_OUTPOST" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSANITY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBIGCOMMERCE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOPENAI" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPOLAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBRIDGE_XYZ" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBRIDGE_API" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCHARGEBEE_BILLING" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCHAINDOTS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCLOUDSIGNAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOINBASE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOURIER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCURSOR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMERAKI" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFIREBLOCKS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFRONTAPP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZOOM" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWITTER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRECHARGE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRECURLY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRING_CENTRAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSTRIPE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPROPERTYFINDER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigQUOTER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHOPIFY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWILIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGITHUB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPOSTMARK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTALLY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTYPEFORM" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPICQER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigXERO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSVIX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRESEND" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigADYEN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAKENEO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGITLAB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWOOCOMMERCE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOKTA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOURA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOMMERCELAYER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHUBSPOT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMAILGUN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPERSONA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPIPEDRIVE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSENDGRID" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWORKOS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSYNCTERA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAWS_SNS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTHREE_D_EYE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWITCH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigENODE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFAUNDIT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFAVRO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLINEAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHIPHERO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHOPLINE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWIX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNMI" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigORB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPYLON" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRAZORPAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigREPAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSQUARE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSOLIDGATE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTRELLO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigEBAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTELNYX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigDISCORD" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTOKENIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFISERV" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFUSIONAUTH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBONDSMITH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigVERCEL_LOG_DRAINS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigVERCEL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTEBEX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSLACK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSMARTCAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMAILCHIMP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNUVEMSHOP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPADDLE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPAYPAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPORTAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTREEZOR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPRAXIS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCUSTOMERIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigEXACT_ONLINE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFACEBOOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWHATSAPP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigREPLICATE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTIKTOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTIKTOK_SHOP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAIRWALLEX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigASCEND" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigALIPAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZENDESK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUPOLLO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSMILE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNYLAS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCLIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGOCARDLESS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLINKEDIN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLITHIC" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSTRAVA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUTILA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMONDAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZEROHASH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZIFT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigETHOCA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAIRTABLE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigASANA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFASTSPRING" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPAYPRO_GLOBAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUSPS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFLEXPORT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCIRCLE" + } + ], + "description": "Configuration object for the source type", + "default": {} + }, + "Source": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the source" + }, + "name": { + "type": "string", + "description": "Name for the source" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Description of the source" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "url": { + "type": "string", + "description": "A unique URL that must be supplied to your webhook's provider", + "format": "URL" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source" + }, + "authenticated": { + "type": "boolean", + "description": "Whether the source is authenticated" + }, + "config": { + "$ref": "#/components/schemas/SourceConfig" + }, + "disabled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the source was disabled" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the source was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the source was created" + } + }, + "required": [ + "id", + "name", + "team_id", + "url", + "type", + "authenticated", + "disabled_at", + "updated_at", + "created_at" + ], + "additionalProperties": false, + "description": "Associated [Source](#source-object) object" + }, + "SourcePaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Source" + } + } + }, + "additionalProperties": false + }, + "SourceTypeConfig": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "oneOf": [ + { + "$ref": "#/components/schemas/SourceTypeConfigAIPRISE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigDOCUSIGN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigINTERCOM" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPUBLISH_API" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWEBHOOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHTTP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMANAGED" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHOOKDECK_OUTPOST" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSANITY", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBIGCOMMERCE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOPENAI" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPOLAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBRIDGE_XYZ", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBRIDGE_API" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCHARGEBEE_BILLING" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCHAINDOTS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCLOUDSIGNAL", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOINBASE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOURIER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCURSOR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMERAKI", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFIREBLOCKS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFRONTAPP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZOOM", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWITTER", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRECHARGE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRECURLY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRING_CENTRAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSTRIPE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPROPERTYFINDER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigQUOTER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHOPIFY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWILIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGITHUB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPOSTMARK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTALLY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTYPEFORM" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPICQER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigXERO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSVIX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRESEND" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigADYEN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAKENEO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGITLAB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWOOCOMMERCE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOKTA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigOURA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCOMMERCELAYER" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigHUBSPOT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMAILGUN" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPERSONA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPIPEDRIVE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSENDGRID" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWORKOS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSYNCTERA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAWS_SNS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTHREE_D_EYE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTWITCH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigENODE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFAUNDIT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFAVRO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLINEAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHIPHERO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSHOPLINE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWIX", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNMI" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigORB" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPYLON" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigRAZORPAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigREPAY" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSQUARE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSOLIDGATE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTRELLO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigEBAY", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTELNYX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigDISCORD" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTOKENIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFISERV", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFUSIONAUTH", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigBONDSMITH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigVERCEL_LOG_DRAINS", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigVERCEL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTEBEX" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSLACK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSMARTCAR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMAILCHIMP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNUVEMSHOP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPADDLE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPAYPAL", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPORTAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTREEZOR" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPRAXIS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCUSTOMERIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigEXACT_ONLINE", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFACEBOOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigWHATSAPP" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigREPLICATE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTIKTOK" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigTIKTOK_SHOP", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAIRWALLEX", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigASCEND", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigALIPAY", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZENDESK", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUPOLLO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSMILE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigNYLAS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCLIO" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigGOCARDLESS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLINKEDIN", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigLITHIC", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigSTRAVA", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUTILA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigMONDAY", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZEROHASH" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigZIFT", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigETHOCA", + "x-required": true + }, + { + "$ref": "#/components/schemas/SourceTypeConfigAIRTABLE" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigASANA" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFASTSPRING" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigPAYPRO_GLOBAL" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigUSPS" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigFLEXPORT" + }, + { + "$ref": "#/components/schemas/SourceTypeConfigCIRCLE", + "x-required": true + } + ], + "description": "The type configs for the specified type", + "default": {} + }, + "Transformation": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the transformation" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "name": { + "type": "string", + "description": "A unique, human-friendly name for the transformation" + }, + "code": { + "type": "string", + "description": "JavaScript code to be executed" + }, + "encrypted_env": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "iv": { + "type": "string", + "nullable": true, + "x-docs-hide": true + }, + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "nullable": true, + "description": "Key-value environment variables to be passed to the transformation", + "x-docs-force-simple-type": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the transformation was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the transformation was created" + } + }, + "required": [ + "id", + "team_id", + "name", + "code", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "TransformationPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Transformation" + } + } + }, + "additionalProperties": false + }, + "TransformationExecutorOutput": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "nullable": true + }, + "transformation_id": { + "type": "string", + "nullable": true + }, + "execution_id": { + "type": "string", + "nullable": true + }, + "log_level": { + "$ref": "#/components/schemas/TransformationExecutionLogLevel" + }, + "request": { + "type": "object", + "properties": { + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": { + "nullable": true + } + } + ], + "nullable": true + }, + "path": { + "type": "string" + }, + "query": { + "anyOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": false, + "nullable": true + }, + { + "type": "string" + } + ], + "nullable": true + }, + "parsed_query": { + "anyOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "nullable": true + }, + "body": { + "anyOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "nullable": true + } + }, + "required": [ + "path" + ], + "additionalProperties": false, + "nullable": true + }, + "console": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ConsoleLine" + }, + "nullable": true + } + }, + "required": [ + "log_level" + ], + "additionalProperties": false + }, + "TransformationExecutionPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TransformationExecution" + } + } + }, + "additionalProperties": false + }, + "RetryStrategy": { + "type": "string", + "enum": [ + "linear", + "exponential" + ], + "description": "Algorithm to use when calculating delay between retries" + }, + "RetryRule": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "retry" + ], + "description": "A retry rule must be of type `retry`" + }, + "strategy": { + "$ref": "#/components/schemas/RetryStrategy" + }, + "interval": { + "type": "integer", + "nullable": true, + "description": "Time in MS between each retry" + }, + "count": { + "type": "integer", + "nullable": true, + "description": "Maximum number of retries to attempt" + }, + "response_status_codes": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(?:([2-5]\\d{2})-([2-5]\\d{2})|([><=]{1,2})([2-5]\\d{2})|!?([2-5]\\d{2}))$" + }, + "minItems": 1, + "maxItems": 10, + "nullable": true, + "description": "HTTP codes to retry on. Accepts: range expressions (e.g., \"400-499\", \">400\"), specific codes (e.g., 404), and exclusions (e.g., \"!401\"). Example: [\"500-599\", \">400\", 404, \"!401\"]" + } + }, + "required": [ + "type", + "strategy" + ], + "additionalProperties": false + }, + "FilterRuleProperty": { + "anyOf": [ + { + "type": "string", + "nullable": true, + "x-fern-type-name": "FilterRulePropertyString" + }, + { + "type": "number", + "format": "float", + "x-fern-type-name": "FilterRulePropertyNumber", + "nullable": true + }, + { + "type": "boolean", + "x-fern-type-name": "FilterRulePropertyBoolean", + "nullable": true + }, + { + "type": "object", + "properties": {}, + "x-fern-type-name": "FilterRulePropertyJSON", + "additionalProperties": true, + "nullable": true + } + ], + "nullable": true, + "description": "JSON using our filter syntax to filter on request headers", + "x-docs-type": "JSON", + "x-docs-force-simple-type": true + }, + "FilterRule": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "filter" + ], + "description": "A filter rule must be of type `filter`" + }, + "headers": { + "$ref": "#/components/schemas/FilterRuleProperty" + }, + "body": { + "$ref": "#/components/schemas/FilterRuleProperty" + }, + "query": { + "$ref": "#/components/schemas/FilterRuleProperty" + }, + "path": { + "$ref": "#/components/schemas/FilterRuleProperty" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "TransformRule": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "transform" + ], + "description": "A transformation rule must be of type `transform`" + }, + "transformation_id": { + "type": "string", + "nullable": true, + "description": "ID of the attached transformation object. Optional input, always set once the rule is defined" + }, + "transformation": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The unique name of the transformation" + }, + "code": { + "type": "string", + "description": "A string representation of your JavaScript (ES6) code to run" + }, + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "nullable": true, + "description": "A key-value object of environment variables to encrypt and expose to your transformation code" + } + }, + "required": [ + "name", + "code" + ], + "additionalProperties": false, + "description": "You can optionally define a new transformation while creating a transform rule" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "DelayRule": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "delay" + ], + "description": "A delay rule must be of type `delay`" + }, + "delay": { + "type": "integer", + "description": "Delay to introduce in MS" + } + }, + "required": [ + "type", + "delay" + ], + "additionalProperties": false + }, + "DeduplicateRule": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "deduplicate" + ], + "description": "A deduplicate rule must be of type `deduplicate`" + }, + "window": { + "type": "integer", + "minimum": 1000, + "maximum": 3600000, + "description": "Time window in milliseconds for deduplicate" + }, + "include_fields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Fields to include when generating deduplicate key. Supports root fields (e.g., \"headers\"), dot notation (e.g., \"body.user.id\"), array wildcards (e.g., \"body.items[*].sku\"), and array indices (e.g., \"body.items[0].name\"). Array notation must be followed by a property name." + }, + "exclude_fields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Fields to exclude when generating deduplicate key. Supports root fields (e.g., \"headers\"), dot notation (e.g., \"body.user.id\"), array wildcards (e.g., \"body.items[*].sku\"), and array indices (e.g., \"body.items[0].name\"). Array notation must be followed by a property name." + } + }, + "required": [ + "type", + "window" + ], + "additionalProperties": false + }, + "Rule": { + "anyOf": [ + { + "$ref": "#/components/schemas/RetryRule" + }, + { + "$ref": "#/components/schemas/FilterRule" + }, + { + "$ref": "#/components/schemas/TransformRule" + }, + { + "$ref": "#/components/schemas/DelayRule" + }, + { + "$ref": "#/components/schemas/DeduplicateRule" + } + ] + }, + "Connection": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the connection" + }, + "name": { + "type": "string", + "nullable": true, + "description": "Unique name of the connection for this source" + }, + "full_name": { + "type": "string", + "nullable": true, + "description": "Full name of the connection concatenated from source, connection and desitnation name" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Description of the connection" + }, + "team_id": { + "type": "string", + "description": "ID of the project" + }, + "destination": { + "$ref": "#/components/schemas/Destination" + }, + "source": { + "$ref": "#/components/schemas/Source" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + }, + "nullable": true, + "description": "Array of rules configured on the connection" + }, + "disabled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the connection was disabled" + }, + "paused_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date the connection was paused" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Date the connection was last updated" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Date the connection was created" + } + }, + "required": [ + "id", + "name", + "full_name", + "description", + "team_id", + "destination", + "source", + "rules", + "disabled_at", + "paused_at", + "updated_at", + "created_at" + ], + "additionalProperties": false + }, + "ConnectionPaginatedResult": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SeekPagination" + }, + "count": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Connection" + } + } + }, + "additionalProperties": false + }, + "TopicsValue": { + "type": "string", + "enum": [ + "issue.opened", + "issue.updated", + "deprecated.attempt-failed", + "event.successful" + ], + "description": "Supported topics", + "x-docs-type": "string" + }, + "ToggleWebhookNotifications": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "topics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TopicsValue" + }, + "nullable": true + }, + "source_id": { + "type": "string" + } + }, + "required": [ + "enabled", + "source_id" + ], + "additionalProperties": false + }, + "AddCustomHostname": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "The custom hostname to attach to the project" + } + }, + "required": [ + "hostname" + ], + "additionalProperties": false + }, + "DeleteCustomDomainSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The custom hostname ID" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "ListCustomDomainSchema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "status": { + "type": "string" + }, + "ssl": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "method": { + "type": "string" + }, + "status": { + "type": "string" + }, + "txt_name": { + "type": "string" + }, + "txt_value": { + "type": "string" + }, + "validation_records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "txt_name": { + "type": "string" + }, + "txt_value": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "dcv_delegation_records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "cname": { + "type": "string" + }, + "cname_target": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "settings": { + "type": "object", + "properties": { + "min_tls_version": { + "type": "string" + } + }, + "additionalProperties": false + }, + "bundle_method": { + "type": "string" + }, + "wildcard": { + "type": "boolean" + }, + "certificate_authority": { + "type": "string" + } + }, + "additionalProperties": false + }, + "verification_errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownership_verification": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + }, + "created_at": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "servers": [ + { + "url": "https://api.hookdeck.com/2025-07-01", + "description": "Production API" + } + ], + "security": [ + { + "bearerAuth": [] + }, + { + "basicAuth": [] + } + ], + "tags": [ + { + "name": "Issue Triggers", + "description": "Issue Triggers lets you setup rules that trigger issues when certain conditions are met." + }, + { + "name": "Attempts", + "description": "An attempt is any request that Hookdeck makes on behalf of an event." + }, + { + "name": "Bookmarks", + "description": "A bookmark lets you conveniently store and replay a specific request." + }, + { + "name": "Destinations", + "description": "A destination is any endpoint to which your webhooks can be routed." + }, + { + "name": "Bulk cancel events", + "description": "Bulk cancel operations allow you to cancel multiple pending events at once." + }, + { + "name": "Bulk retry events", + "description": "" + }, + { + "name": "Events", + "description": "An event is any request that Hookdeck receives from a source." + }, + { + "name": "Bulk retry ignored events", + "description": "" + }, + { + "name": "Integrations", + "description": "An integration configures platform-specific behaviors, such as signature verification." + }, + { + "name": "Issues", + "description": "Issues lets you track problems in your project and communicate resolution steps with your team." + }, + { + "name": "Metrics", + "description": "Query aggregated metrics for events, requests, and attempts with time-based grouping and filtering." + }, + { + "name": "Requests", + "description": "A request represent a webhook received by Hookdeck." + }, + { + "name": "Bulk retry requests", + "description": "" + }, + { + "name": "Sources", + "description": "A source represents any third party that sends webhooks to Hookdeck." + }, + { + "name": "Transformations", + "description": "A transformation represents JavaScript code that will be executed on a connection's requests. Transformations are applied to connections using Rules." + }, + { + "name": "Connections", + "description": "A connection lets you route webhooks from a source to a destination, using a rule." + }, + { + "name": "Notifications", + "description": "Notifications let your team receive alerts anytime an issue changes." + } + ], + "paths": { + "/issue-triggers": { + "get": { + "operationId": "getIssueTriggers", + "summary": "Get issue triggers", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "List of issue triggers", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTriggerPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "name", + "schema": { + "type": "string", + "maxLength": 255, + "description": "Filter by issue trigger name" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/IssueType" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/IssueType" + } + } + ] + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date when the issue trigger was disabled" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "type" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "type" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createIssueTrigger", + "summary": "Create an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/IssueType" + }, + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/IssueTriggerDeliveryConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerTransformationConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerBackpressureConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerRequestConfigs" + } + ], + "description": "Configuration object for the specific issue type selected" + }, + "channels": { + "$ref": "#/components/schemas/IssueTriggerChannels" + }, + "name": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "Optional unique name to use as reference when using the API" + } + }, + "required": [ + "type", + "channels" + ], + "additionalProperties": false + } + } + } + } + }, + "put": { + "operationId": "upsertIssueTrigger", + "summary": "Create or update an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/IssueType" + }, + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/IssueTriggerDeliveryConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerTransformationConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerBackpressureConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerRequestConfigs" + } + ], + "description": "Configuration object for the specific issue type selected" + }, + "channels": { + "$ref": "#/components/schemas/IssueTriggerChannels" + }, + "name": { + "type": "string", + "maxLength": 255, + "description": "Required unique name to use as reference when using the API" + } + }, + "required": [ + "type", + "channels", + "name" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/issue-triggers/{id}": { + "get": { + "operationId": "getIssueTrigger", + "summary": "Get a single issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue trigger ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateIssueTrigger", + "summary": "Update an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue trigger ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/IssueTriggerDeliveryConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerTransformationConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerBackpressureConfigs" + }, + { + "$ref": "#/components/schemas/IssueTriggerRequestConfigs" + } + ], + "description": "Configuration object for the specific issue type selected" + }, + "channels": { + "$ref": "#/components/schemas/IssueTriggerChannels" + }, + "disabled_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Date when the issue trigger was disabled" + }, + "name": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "Optional unique name to use as reference when using the API" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteIssueTrigger", + "summary": "Delete an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "An object with deleted issue trigger's id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeletedIssueTriggerResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue trigger ID" + }, + "required": true + } + ] + } + }, + "/issue-triggers/{id}/disable": { + "put": { + "operationId": "disableIssueTrigger", + "summary": "Disable an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue trigger ID" + }, + "required": true + } + ] + } + }, + "/issue-triggers/{id}/enable": { + "put": { + "operationId": "enableIssueTrigger", + "summary": "Enable an issue trigger", + "description": "", + "tags": [ + "Issue Triggers" + ], + "responses": { + "200": { + "description": "A single issue trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueTrigger" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue trigger ID" + }, + "required": true + } + ] + } + }, + "/attempts": { + "get": { + "operationId": "getAttempts", + "summary": "Get attempts", + "description": "", + "tags": [ + "Attempts" + ], + "responses": { + "200": { + "description": "List of attempts", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventAttemptPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Attempt ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Attempt ID" + } + } + ], + "description": "ID of the attempt" + } + }, + { + "in": "query", + "name": "event_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Event the attempt is associated with" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + } + }, + "/attempts/{id}": { + "get": { + "operationId": "getAttempt", + "summary": "Get a single attempt", + "description": "", + "tags": [ + "Attempts" + ], + "responses": { + "200": { + "description": "A single attempt", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventAttempt" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Attempt ID" + }, + "required": true + } + ] + } + }, + "/bookmarks": { + "get": { + "operationId": "getBookmarks", + "summary": "Get bookmarks", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "List of bookmarks", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BookmarkPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bookmark ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bookmark ID" + } + } + ], + "description": "Filter by bookmark IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Bookmark name" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Bookmark name" + } + } + ], + "description": "Filter by bookmark name" + } + }, + { + "in": "query", + "name": "webhook_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by associated connection (webhook) ID" + } + }, + { + "in": "query", + "name": "event_data_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event Data ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event Data ID" + } + } + ], + "description": "Filter by associated event data ID" + } + }, + { + "in": "query", + "name": "label", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bookmark label" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bookmark label" + } + } + ], + "description": "Filter by label" + } + }, + { + "in": "query", + "name": "last_used_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Last used date" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by last used date" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createBookmark", + "summary": "Create a bookmark", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "A single bookmark", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Bookmark" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "event_data_id": { + "type": "string", + "maxLength": 255, + "description": "ID of the event data to bookmark" + }, + "webhook_id": { + "type": "string", + "maxLength": 255, + "description": "ID of the associated connection (webhook)" + }, + "label": { + "type": "string", + "maxLength": 255, + "description": "Descriptive name of the bookmark" + }, + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique, human-friendly name for the bookmark" + } + }, + "required": [ + "event_data_id", + "webhook_id", + "label" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/bookmarks/{id}": { + "get": { + "operationId": "getBookmark", + "summary": "Get a single bookmark", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "A single bookmark", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Bookmark" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bookmark ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateBookmark", + "summary": "Update a bookmark", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "A single bookmark", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Bookmark" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bookmark ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "event_data_id": { + "type": "string", + "maxLength": 255, + "description": "ID of the event data to bookmark" + }, + "webhook_id": { + "type": "string", + "maxLength": 255, + "description": "ID of the associated connection (webhook)" + }, + "label": { + "type": "string", + "maxLength": 255, + "description": "Descriptive name of the bookmark" + }, + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique, human-friendly name for the bookmark" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteBookmark", + "summary": "Delete a bookmark", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "An object with deleted bookmark's id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeletedBookmarkResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bookmark ID" + }, + "required": true + } + ] + } + }, + "/bookmarks/{id}/raw_body": { + "get": { + "operationId": "getBookmarkRawBody", + "summary": "Get a bookmark raw body data", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "A request raw body data", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RawBody" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bookmark ID" + }, + "required": true + } + ] + } + }, + "/bookmarks/{id}/trigger": { + "post": { + "operationId": "triggerBookmark", + "summary": "Trigger a bookmark", + "description": "", + "tags": [ + "Bookmarks" + ], + "responses": { + "200": { + "description": "Array of created events", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventArray" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bookmark ID" + }, + "required": true + } + ] + } + }, + "/destinations": { + "get": { + "operationId": "getDestinations", + "summary": "Get destinations", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "List of destinations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DestinationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by destination IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155 + } + } + ], + "description": "The destination name" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ] + } + } + ], + "description": "Filter by destination type" + } + }, + { + "in": "query", + "name": "disabled", + "schema": { + "type": "boolean", + "description": "Include disabled resources in the response" + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the destination was disabled" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "name", + "created_at", + "updated_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createDestination", + "summary": "Create a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Name for the destination" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination", + "default": "HTTP" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the destination" + }, + "config": { + "$ref": "#/components/schemas/VerificationConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + } + }, + "put": { + "operationId": "upsertDestination", + "summary": "Update or create a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Name for the destination" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination", + "default": "HTTP" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the destination" + }, + "config": { + "$ref": "#/components/schemas/VerificationConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/destinations/count": { + "get": { + "operationId": "countDestinations", + "summary": "Count destinations", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "Count of destinations", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "count": { + "type": "number", + "format": "float", + "description": "Count of destinations" + } + }, + "required": [ + "count" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by destination IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 155 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 155 + } + } + ], + "description": "The destination name" + } + }, + { + "in": "query", + "name": "disabled", + "schema": { + "type": "boolean", + "description": "Include disabled resources in the response" + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "type": "array", + "items": { + "type": "string", + "format": "date-time", + "nullable": true + } + } + ], + "description": "Date the destination was disabled" + } + } + ] + } + }, + "/destinations/{id}": { + "get": { + "operationId": "getDestination", + "summary": "Get a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "410": { + "description": "Gone", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "include", + "schema": { + "type": "string", + "enum": [ + "config.auth" + ] + } + }, + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateDestination", + "summary": "Update a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Name for the destination" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the destination" + }, + "config": { + "$ref": "#/components/schemas/VerificationConfig" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteDestination", + "summary": "Delete a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the destination" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string" + }, + "required": true + } + ] + } + }, + "/destinations/{id}/disable": { + "put": { + "operationId": "disableDestination", + "summary": "Disable a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ] + } + }, + "/destinations/{id}/archive": { + "put": { + "operationId": "disableDestination_archive", + "summary": "Disable a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ] + } + }, + "/destinations/{id}/enable": { + "put": { + "operationId": "enableDestination", + "summary": "Enable a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ] + } + }, + "/destinations/{id}/unarchive": { + "put": { + "operationId": "enableDestination_unarchive", + "summary": "Enable a destination", + "description": "", + "tags": [ + "Destinations" + ], + "responses": { + "200": { + "description": "A single destination", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Destination" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Destination ID" + }, + "required": true + } + ] + } + }, + "/bulk/events/cancel": { + "get": { + "operationId": "getEventBulkCancels", + "summary": "Get events bulk cancels", + "description": "", + "tags": [ + "Bulk cancel events" + ], + "responses": { + "200": { + "description": "List of events bulk cancels", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "cancelled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk cancel was cancelled" + } + }, + { + "in": "query", + "name": "completed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk cancel completed" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk cancel was created" + } + }, + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bulk cancel ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bulk cancel ID" + } + } + ], + "description": "Filter by bulk cancel IDs" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter for events to be included in the bulk cancel operation, use query parameters of [Event](#events)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "query_partial_match", + "schema": { + "type": "boolean", + "description": "Allow partial filter match on query property" + } + }, + { + "in": "query", + "name": "in_progress", + "schema": { + "type": "boolean", + "description": "Indicates if the bulk cancel is currently in progress" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createEventBulkCancel", + "summary": "Create an events bulk cancel", + "description": "", + "tags": [ + "Bulk cancel events" + ], + "responses": { + "200": { + "description": "A single events bulk cancel", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk cancel", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/bulk/events/cancel/plan": { + "get": { + "operationId": "generateEventBulkCancelPlan", + "summary": "Generate an events bulk cancel plan", + "description": "", + "tags": [ + "Bulk cancel events" + ], + "responses": { + "200": { + "description": "Events bulk cancel plan", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "estimated_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches required to complete the bulk retry" + }, + "estimated_count": { + "type": "integer", + "nullable": true, + "description": "Number of estimated events to be retried" + }, + "progress": { + "type": "number", + "format": "float", + "nullable": true, + "description": "Progression of the batch operations, values 0 - 1" + } + }, + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk cancel", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + } + ] + } + }, + "/bulk/events/cancel/{id}": { + "get": { + "operationId": "getEventBulkCancel", + "summary": "Get an events bulk cancel", + "description": "", + "tags": [ + "Bulk cancel events" + ], + "responses": { + "200": { + "description": "A single events bulk cancel", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk cancel ID" + }, + "required": true + } + ] + } + }, + "/bulk/events/retry": { + "get": { + "operationId": "getEventBulkRetries", + "summary": "Get events bulk retries", + "description": "", + "tags": [ + "Bulk retry events" + ], + "responses": { + "200": { + "description": "List of events bulk retries", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "cancelled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was cancelled" + } + }, + { + "in": "query", + "name": "completed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry completed" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was created" + } + }, + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + } + } + ], + "description": "Filter by bulk retry IDs" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter for events to be included in the bulk retry, use query parameters of [Event](#events)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "query_partial_match", + "schema": { + "type": "boolean", + "description": "Allow partial filter match on query property" + } + }, + { + "in": "query", + "name": "in_progress", + "schema": { + "type": "boolean", + "description": "Indicates if the bulk retry is currently in progress" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createEventBulkRetry", + "summary": "Create an events bulk retry", + "description": "", + "tags": [ + "Bulk retry events" + ], + "responses": { + "200": { + "description": "A single events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk retry", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/bulk/events/retry/plan": { + "get": { + "operationId": "generateEventBulkRetryPlan", + "summary": "Generate an events bulk retry plan", + "description": "", + "tags": [ + "Bulk retry events" + ], + "responses": { + "200": { + "description": "Events bulk retry plan", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "estimated_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches required to complete the bulk retry" + }, + "estimated_count": { + "type": "integer", + "nullable": true, + "description": "Number of estimated events to be retried" + }, + "progress": { + "type": "number", + "format": "float", + "nullable": true, + "description": "Progression of the batch operations, values 0 - 1" + } + }, + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + }, + "destination_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "attempts": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + }, + "response_status": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + }, + "successful_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + }, + "cli_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + }, + "last_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + }, + "next_attempt_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "cli_user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + }, + "issue_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "event_data_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk retry", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + } + ] + } + }, + "/bulk/events/retry/{id}": { + "get": { + "operationId": "getEventBulkRetry", + "summary": "Get an events bulk retry", + "description": "", + "tags": [ + "Bulk retry events" + ], + "responses": { + "200": { + "description": "A single events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/bulk/events/retry/{id}/cancel": { + "post": { + "operationId": "cancelEventBulkRetry", + "summary": "Cancel an events bulk retry", + "description": "", + "tags": [ + "Bulk retry events" + ], + "responses": { + "200": { + "description": "A single events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/events": { + "get": { + "operationId": "getEvents", + "summary": "Get events", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "List of events", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + } + }, + { + "in": "query", + "name": "status", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + } + }, + { + "in": "query", + "name": "webhook_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + } + }, + { + "in": "query", + "name": "destination_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + } + }, + { + "in": "query", + "name": "source_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + } + }, + { + "in": "query", + "name": "attempts", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + } + }, + { + "in": "query", + "name": "response_status", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + } + }, + { + "in": "query", + "name": "successful_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + } + }, + { + "in": "query", + "name": "error_code", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + } + }, + { + "in": "query", + "name": "cli_id", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + } + }, + { + "in": "query", + "name": "last_attempt_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + } + }, + { + "in": "query", + "name": "next_attempt_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + } + }, + { + "in": "query", + "name": "search_term", + "schema": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + } + }, + { + "in": "query", + "name": "headers", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "body", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "parsed_query", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "path", + "schema": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + } + }, + { + "in": "query", + "name": "cli_user_id", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "issue_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "event_data_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "bulk_retry_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "include", + "schema": { + "type": "string", + "enum": [ + "data" + ], + "description": "Include the data object in the event model", + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "progressive", + "schema": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable progressive loading for partial results", + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + } + }, + "/events/{id}": { + "get": { + "operationId": "getEvent", + "summary": "Get an event", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "A single event", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Event ID" + }, + "required": true + } + ] + } + }, + "/events/{id}/raw_body": { + "get": { + "operationId": "getEventRawBody", + "summary": "Get a event raw body data", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "A request raw body data", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RawBody" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Event ID" + }, + "required": true + } + ] + } + }, + "/events/{id}/retry": { + "post": { + "operationId": "retryEvent", + "summary": "Retry an event", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "Retried event with event attempt", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetriedEvent" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Event ID" + }, + "required": true + } + ] + } + }, + "/events/{id}/cancel": { + "put": { + "operationId": "cancelEvent", + "summary": "Cancel an event", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "A cancelled event", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Event ID" + }, + "required": true + } + ] + } + }, + "/events/{id}/mute": { + "put": { + "operationId": "cancelEvent_mute", + "summary": "Cancel an event", + "description": "", + "tags": [ + "Events" + ], + "responses": { + "200": { + "description": "A cancelled event", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Event ID" + }, + "required": true + } + ] + } + }, + "/bulk/ignored-events/retry": { + "get": { + "operationId": "getIgnoredEventBulkRetries", + "summary": "Get ignored events bulk retries", + "description": "", + "tags": [ + "Bulk retry ignored events" + ], + "responses": { + "200": { + "description": "List of ignored events bulk retries", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "cancelled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was cancelled" + } + }, + { + "in": "query", + "name": "completed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry completed" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was created" + } + }, + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + } + } + ], + "description": "Filter by bulk retry IDs" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "cause": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "The cause of the ignored event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Connection (webhook) ID of the ignored event" + }, + "transformation_id": { + "type": "string", + "maxLength": 255, + "description": "The associated transformation ID (only applicable to the cause `TRANSFORMATION_FAILED`)" + } + }, + "additionalProperties": false, + "description": "Filter by the bulk retry ignored event query object", + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "query_partial_match", + "schema": { + "type": "boolean", + "description": "Allow partial filter match on query property" + } + }, + { + "in": "query", + "name": "in_progress", + "schema": { + "type": "boolean", + "description": "Indicates if the bulk retry is currently in progress" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createIgnoredEventBulkRetry", + "summary": "Create an ignored events bulk retry", + "description": "", + "tags": [ + "Bulk retry ignored events" + ], + "responses": { + "200": { + "description": "A single ignored events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "properties": { + "cause": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "The cause of the ignored event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Connection (webhook) ID of the ignored event" + }, + "transformation_id": { + "type": "string", + "maxLength": 255, + "description": "The associated transformation ID (only applicable to the cause `TRANSFORMATION_FAILED`)" + } + }, + "additionalProperties": false, + "description": "Filter by the bulk retry ignored event query object", + "x-docs-type": "JSON" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/bulk/ignored-events/retry/plan": { + "get": { + "operationId": "generateIgnoredEventBulkRetryPlan", + "summary": "Generate an ignored events bulk retry plan", + "description": "", + "tags": [ + "Bulk retry ignored events" + ], + "responses": { + "200": { + "description": "Ignored events bulk retry plan", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "estimated_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches required to complete the bulk retry" + }, + "estimated_count": { + "type": "integer", + "nullable": true, + "description": "Number of estimated events to be retried" + }, + "progress": { + "type": "number", + "format": "float", + "nullable": true, + "description": "Progression of the batch operations, values 0 - 1" + } + }, + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "cause": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "The cause of the ignored event" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Connection (webhook) ID of the ignored event" + }, + "transformation_id": { + "type": "string", + "maxLength": 255, + "description": "The associated transformation ID (only applicable to the cause `TRANSFORMATION_FAILED`)" + } + }, + "additionalProperties": false, + "description": "Filter by the bulk retry ignored event query object", + "x-docs-type": "JSON" + } + } + ] + } + }, + "/bulk/ignored-events/retry/{id}": { + "get": { + "operationId": "getIgnoredEventBulkRetry", + "summary": "Get an ignored events bulk retry", + "description": "", + "tags": [ + "Bulk retry ignored events" + ], + "responses": { + "200": { + "description": "A single ignored events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/bulk/ignored-events/retry/{id}/cancel": { + "post": { + "operationId": "cancelIgnoredEventBulkRetry", + "summary": "Cancel an ignored events bulk retry", + "description": "", + "tags": [ + "Bulk retry ignored events" + ], + "responses": { + "200": { + "description": "A single ignored events bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/integrations": { + "get": { + "operationId": "getIntegrations", + "summary": "Get integrations", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "List of integrations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "label", + "schema": { + "type": "string", + "description": "The integration label" + } + }, + { + "in": "query", + "name": "provider", + "schema": { + "$ref": "#/components/schemas/IntegrationProvider" + } + } + ] + }, + "post": { + "operationId": "createIntegration", + "summary": "Create an integration", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "A single integration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Label of the integration" + }, + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/HMACIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/APIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledAPIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledHMACConfigs" + }, + { + "$ref": "#/components/schemas/BasicAuthIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/ShopifyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/VercelLogDrainsIntegrationConfigs" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "Decrypted Key/Value object of the associated configuration for that provider", + "x-docs-force-simple-type": true, + "x-docs-type": "object" + }, + "provider": { + "$ref": "#/components/schemas/IntegrationProvider" + }, + "features": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationFeature" + }, + "description": "List of features to enable (see features list above)", + "x-docs-force-simple-type": true, + "x-docs-type": "Array of string" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/integrations/{id}": { + "get": { + "operationId": "getIntegration", + "summary": "Get an integration", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "A single integration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Integration ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateIntegration", + "summary": "Update an integration", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "A single integration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Integration" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Integration ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Label of the integration" + }, + "configs": { + "anyOf": [ + { + "$ref": "#/components/schemas/HMACIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/APIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledAPIKeyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/HandledHMACConfigs" + }, + { + "$ref": "#/components/schemas/BasicAuthIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/ShopifyIntegrationConfigs" + }, + { + "$ref": "#/components/schemas/VercelLogDrainsIntegrationConfigs" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "Decrypted Key/Value object of the associated configuration for that provider", + "x-docs-force-simple-type": true, + "x-docs-type": "object" + }, + "provider": { + "$ref": "#/components/schemas/IntegrationProvider" + }, + "features": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationFeature" + }, + "description": "List of features to enable (see features list above)", + "x-docs-force-simple-type": true, + "x-docs-type": "Array of string" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteIntegration", + "summary": "Delete an integration", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "An object with deleted integration id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeletedIntegration" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Integration ID" + }, + "required": true + } + ] + } + }, + "/integrations/{id}/attach/{source_id}": { + "put": { + "operationId": "attachIntegrationToSource", + "summary": "Attach an integration to a source", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "Attach operation success status", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachedIntegrationToSource" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Integration ID" + }, + "required": true + }, + { + "in": "path", + "name": "source_id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/integrations/{id}/detach/{source_id}": { + "put": { + "operationId": "detachIntegrationToSource", + "summary": "Detach an integration from a source", + "description": "", + "tags": [ + "Integrations" + ], + "responses": { + "200": { + "description": "Detach operation success status", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DetachedIntegrationFromSource" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Integration ID" + }, + "required": true + }, + { + "in": "path", + "name": "source_id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/issues": { + "get": { + "operationId": "getIssues", + "summary": "Get issues", + "description": "", + "tags": [ + "Issues" + ], + "responses": { + "200": { + "description": "List of issues", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueWithDataPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "example": "iss_YXKv5OdJXCiVwkPhGy" + } + } + ], + "description": "Filter by Issue IDs" + } + }, + { + "in": "query", + "name": "issue_trigger_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Issue trigger ID", + "example": "it_BXKv5OdJXCiVwkPhGy" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Issue trigger ID", + "example": "it_BXKv5OdJXCiVwkPhGy" + } + } + ], + "description": "Filter by Issue trigger IDs" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "delivery", + "transformation", + "backpressure", + "request" + ], + "description": "Issue type", + "example": "delivery" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "delivery", + "transformation", + "backpressure", + "request" + ], + "description": "Issue type", + "example": "delivery" + } + } + ], + "description": "Filter by Issue types" + } + }, + { + "in": "query", + "name": "status", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "Issue status", + "example": "OPENED" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "Issue status", + "example": "OPENED" + } + } + ], + "description": "Filter by Issue statuses" + } + }, + { + "in": "query", + "name": "merged_with", + "schema": { + "anyOf": [ + { + "type": "string", + "description": "Issue ID", + "example": "iss_AXKv3OdJXCiKlkPhDz" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Issue ID", + "example": "iss_AXKv3OdJXCiKlkPhDz" + } + } + ], + "description": "Filter by Merged Issue IDs" + } + }, + { + "in": "query", + "name": "aggregation_keys", + "schema": { + "type": "object", + "properties": { + "webhook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "response_status": { + "anyOf": [ + { + "type": "number", + "format": "float" + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + ] + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ] + }, + "transformation_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "log_level": { + "anyOf": [ + { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ] + } + } + ] + }, + "destination_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "delay": { + "anyOf": [ + { + "type": "number", + "format": "float" + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + ] + }, + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "rejection_cause": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ] + } + }, + "additionalProperties": false, + "description": "Filter by aggregation keys", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by created dates" + } + }, + { + "in": "query", + "name": "first_seen_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by first seen dates" + } + }, + { + "in": "query", + "name": "last_seen_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by last seen dates" + } + }, + { + "in": "query", + "name": "dismissed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by dismissed dates" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "first_seen_at", + "last_seen_at", + "opened_at", + "status" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "first_seen_at", + "last_seen_at", + "opened_at", + "status" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + } + }, + "/issues/count": { + "get": { + "operationId": "getIssueCount", + "summary": "Get the number of issues", + "description": "", + "tags": [ + "Issues" + ], + "responses": { + "200": { + "description": "Issue count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueCount" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "example": "iss_YXKv5OdJXCiVwkPhGy" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "example": "iss_YXKv5OdJXCiVwkPhGy" + } + } + ], + "description": "Filter by Issue IDs" + } + }, + { + "in": "query", + "name": "issue_trigger_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Issue trigger ID", + "example": "it_BXKv5OdJXCiVwkPhGy" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Issue trigger ID", + "example": "it_BXKv5OdJXCiVwkPhGy" + } + } + ], + "description": "Filter by Issue trigger IDs" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "delivery", + "transformation", + "backpressure", + "request" + ], + "description": "Issue type", + "example": "delivery" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "delivery", + "transformation", + "backpressure", + "request" + ], + "description": "Issue type", + "example": "delivery" + } + } + ], + "description": "Filter by Issue types" + } + }, + { + "in": "query", + "name": "status", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "Issue status", + "example": "OPENED" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "Issue status", + "example": "OPENED" + } + } + ], + "description": "Filter by Issue statuses" + } + }, + { + "in": "query", + "name": "merged_with", + "schema": { + "anyOf": [ + { + "type": "string", + "description": "Issue ID", + "example": "iss_AXKv3OdJXCiKlkPhDz" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Issue ID", + "example": "iss_AXKv3OdJXCiKlkPhDz" + } + } + ], + "description": "Filter by Merged Issue IDs" + } + }, + { + "in": "query", + "name": "aggregation_keys", + "schema": { + "type": "object", + "properties": { + "webhook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "response_status": { + "anyOf": [ + { + "type": "number", + "format": "float" + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + ] + }, + "error_code": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ] + }, + "transformation_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "log_level": { + "anyOf": [ + { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ] + } + } + ] + }, + "destination_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "delay": { + "anyOf": [ + { + "type": "number", + "format": "float" + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + ] + }, + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "rejection_cause": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ] + } + }, + "additionalProperties": false, + "description": "Filter by aggregation keys", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by created dates" + } + }, + { + "in": "query", + "name": "first_seen_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by first seen dates" + } + }, + { + "in": "query", + "name": "last_seen_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by last seen dates" + } + }, + { + "in": "query", + "name": "dismissed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by dismissed dates" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "first_seen_at", + "last_seen_at", + "opened_at", + "status" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "first_seen_at", + "last_seen_at", + "opened_at", + "status" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + } + }, + "/issues/{id}": { + "get": { + "operationId": "getIssue", + "summary": "Get a single issue", + "description": "", + "tags": [ + "Issues" + ], + "responses": { + "200": { + "description": "A single issue", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueWithData" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateIssue", + "summary": "Update issue", + "description": "", + "tags": [ + "Issues" + ], + "responses": { + "200": { + "description": "Updated issue", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "OPENED", + "IGNORED", + "ACKNOWLEDGED", + "RESOLVED" + ], + "description": "New status" + } + }, + "required": [ + "status" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "dismissIssue", + "summary": "Dismiss an issue", + "description": "", + "tags": [ + "Issues" + ], + "responses": { + "200": { + "description": "Dismissed issue", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Issue ID" + }, + "required": true + } + ] + } + }, + "/metrics/requests": { + "get": { + "operationId": "queryRequestMetrics", + "summary": "Query request metrics", + "description": "Query aggregated request metrics with time-based grouping and filtering", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Request metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by source ID (single value or array)" + }, + "rejection_cause": { + "anyOf": [ + { + "type": "string", + "enum": [ + "SOURCE_DISABLED", + "NO_CONNECTION", + "VERIFICATION_FAILED", + "UNSUPPORTED_HTTP_METHOD", + "UNSUPPORTED_CONTENT_TYPE", + "UNPARSABLE_JSON", + "PAYLOAD_TOO_LARGE", + "INGESTION_FATAL", + "UNKNOWN" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SOURCE_DISABLED", + "NO_CONNECTION", + "VERIFICATION_FAILED", + "UNSUPPORTED_HTTP_METHOD", + "UNSUPPORTED_CONTENT_TYPE", + "UNPARSABLE_JSON", + "PAYLOAD_TOO_LARGE", + "INGESTION_FATAL", + "UNKNOWN" + ] + }, + "minItems": 1 + } + ], + "description": "Filter by rejection cause (single value or array)" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "ACCEPTED", + "REJECTED" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ACCEPTED", + "REJECTED" + ] + }, + "minItems": 1 + } + ], + "description": "Filter by request status (single value or array)" + }, + "bulk_retry_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Filter by bulk retry operation IDs" + }, + "events_count": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "minimum": 0, + "description": "Minimum number of events" + }, + "max": { + "type": "integer", + "minimum": 0, + "description": "Maximum number of events" + } + }, + "additionalProperties": false, + "description": "Filter by number of events created (range with min/max)" + }, + "ignored_count": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "minimum": 0, + "description": "Minimum number of ignored" + }, + "max": { + "type": "integer", + "minimum": 0, + "description": "Maximum number of ignored" + } + }, + "additionalProperties": false, + "description": "Filter by number of ignored connections (range with min/max)" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count", + "accepted_count", + "rejected_count", + "discarded_count", + "avg_events_per_request", + "avg_ignored_per_request" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "source_id", + "rejection_cause", + "status", + "bulk_retry_ids", + "events_count", + "ignored_count" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/events": { + "get": { + "operationId": "queryEventMetrics", + "summary": "Query event metrics", + "description": "Query aggregated event metrics with time-based grouping and filtering", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Event metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by source ID (single value or array)" + }, + "webhook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by webhook/connection ID (single value or array)" + }, + "destination_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by destination ID (single value or array)" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED", + "QUEUED", + "CANCELLED", + "HOLD", + "SCHEDULED" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED", + "QUEUED", + "CANCELLED", + "HOLD", + "SCHEDULED" + ] + }, + "minItems": 1 + } + ], + "description": "Filter by event status (single value or array)" + }, + "error_code": { + "type": "string", + "description": "Filter by error code" + }, + "issue_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Filter by issue IDs (array contains match)" + }, + "bulk_retry_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Filter by bulk retry operation IDs (array contains match)" + }, + "event_data_id": { + "type": "string", + "description": "Filter by event data ID" + }, + "cli_id": { + "type": "string", + "description": "Filter by CLI ID" + }, + "cli_user_id": { + "type": "string", + "description": "Filter by CLI user ID" + }, + "attempts": { + "type": "integer", + "minimum": 0, + "description": "Filter by number of attempts" + }, + "response_status": { + "type": "integer", + "minimum": 100, + "maximum": 599, + "description": "Filter by HTTP response status code" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count", + "successful_count", + "failed_count", + "scheduled_count", + "paused_count", + "error_rate", + "avg_attempts", + "scheduled_retry_count" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "status", + "source_id", + "webhook_id", + "destination_id", + "error_code", + "event_data_id", + "cli_id", + "cli_user_id", + "attempts", + "response_status" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/attempts": { + "get": { + "operationId": "queryAttemptMetrics", + "summary": "Query attempt metrics", + "description": "Query aggregated attempt metrics with time-based grouping and filtering", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Attempt metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "destination_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by destination ID (single value or array)" + }, + "event_id": { + "type": "string", + "description": "Filter by event ID" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED" + ] + }, + "minItems": 1 + } + ], + "description": "Filter by attempt status (single value or array)" + }, + "error_code": { + "type": "string", + "description": "Filter by error code" + }, + "bulk_retry_id": { + "type": "string", + "description": "Filter by bulk retry ID" + }, + "trigger": { + "type": "string", + "description": "Filter by trigger type" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count", + "successful_count", + "failed_count", + "delivered_count", + "error_rate", + "response_latency_avg", + "response_latency_max", + "response_latency_p95", + "response_latency_p99", + "delivery_latency_avg" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "destination_id", + "event_id", + "status", + "error_code", + "bulk_retry_id", + "trigger" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/events-by-issue": { + "get": { + "operationId": "queryEventsByIssueMetrics", + "summary": "Query event metrics grouped by individual issue", + "description": "Returns metrics for events broken down by individual issue IDs. Uses arrayJoin to create one row per issue per event, enabling per-issue analytics. Useful for tracking which issues affect the most events over time.", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Events by issue metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "issue_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + ], + "description": "Filter by issue ID(s) - required. Single ID or array of IDs" + }, + "source_id": { + "type": "string", + "description": "Filter by source ID" + }, + "destination_id": { + "type": "string", + "description": "Filter by destination ID" + }, + "webhook_id": { + "type": "string", + "description": "Filter by webhook/connection ID" + } + }, + "required": [ + "issue_id" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "issue_id", + "source_id", + "destination_id", + "webhook_id" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/queue-depth": { + "get": { + "operationId": "queryQueueDepthMetrics", + "summary": "Query queue depth metrics", + "description": "Query queue depth metrics for destinations (pending events count and age)", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Queue depth metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "destination_id": { + "type": "string", + "description": "Filter by destination ID" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "max_depth", + "max_age" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "destination_id" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/transformations": { + "get": { + "operationId": "queryTransformationMetrics", + "summary": "Query transformation execution metrics", + "description": "Query aggregated transformation execution metrics with time-based grouping and filtering", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Transformation metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "transformation_id": { + "type": "string", + "description": "Filter by transformation ID" + }, + "webhook_id": { + "type": "string", + "description": "Filter by connection ID" + }, + "log_level": { + "type": "string", + "enum": [ + "error", + "warn", + "info", + "debug", + "" + ], + "description": "Filter by log level" + }, + "issue_id": { + "type": "string", + "description": "Filter by issue ID" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count", + "successful_count", + "failed_count", + "error_rate", + "error_count", + "warn_count", + "info_count", + "debug_count" + ] + }, + "minItems": 1, + "description": "Metrics to calculate" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "transformation_id", + "webhook_id", + "log_level", + "issue_id" + ] + }, + "description": "Dimensions to group by" + } + } + ] + } + }, + "/metrics/events-pending-timeseries": { + "get": { + "operationId": "queryEventsPendingTimeseriesMetrics", + "summary": "Query events pending timeseries metrics", + "description": "Query aggregated events pending timeseries metrics with time-based grouping and filtering", + "tags": [ + "Metrics" + ], + "responses": { + "200": { + "description": "Events pending timeseries metrics results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricsResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "date_range", + "schema": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "Start of the time range in ISO 8601 format" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "End of the time range in ISO 8601 format" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false + } + }, + { + "in": "query", + "name": "granularity", + "schema": { + "type": "string", + "pattern": "^(\\d+)(s|m|h|d|w|M)$", + "nullable": true, + "description": "Time bucket granularity. Format: where unit is s (seconds 1-60), m (minutes 1-60), h (hours 1-24), d (days 1-31), w (weeks 1-4), M (months 1-12). Examples: 1s, 5m, 1h, 1d" + } + }, + { + "in": "query", + "name": "filters", + "schema": { + "type": "object", + "properties": { + "destination_id": { + "type": "string", + "description": "Filter by destination ID" + } + }, + "additionalProperties": false + } + }, + { + "in": "query", + "name": "measures", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "count" + ] + }, + "minItems": 1, + "description": "List of measures to aggregate (count)" + } + }, + { + "in": "query", + "name": "dimensions", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "destination_id" + ] + }, + "description": "List of dimensions to group by" + } + } + ] + } + }, + "/requests": { + "get": { + "operationId": "getRequests", + "summary": "Get requests", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "List of requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Request ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Request ID" + } + } + ], + "description": "Filter by requests IDs" + } + }, + { + "in": "query", + "name": "status", + "schema": { + "type": "string", + "enum": [ + "accepted", + "rejected" + ], + "description": "Filter by status" + } + }, + { + "in": "query", + "name": "rejection_cause", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ], + "nullable": true, + "description": "Filter by rejection cause" + } + }, + { + "in": "query", + "name": "source_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + } + }, + { + "in": "query", + "name": "verified", + "schema": { + "type": "boolean", + "description": "Filter by verification status" + } + }, + { + "in": "query", + "name": "search_term", + "schema": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + } + }, + { + "in": "query", + "name": "headers", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "body", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "parsed_query", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "path", + "schema": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + } + }, + { + "in": "query", + "name": "ignored_count", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of ignored events" + } + }, + { + "in": "query", + "name": "events_count", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of events" + } + }, + { + "in": "query", + "name": "cli_events_count", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of CLI events" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request created date" + } + }, + { + "in": "query", + "name": "ingested_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request ingested date" + } + }, + { + "in": "query", + "name": "bulk_retry_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "include", + "schema": { + "type": "string", + "enum": [ + "data" + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "progressive", + "schema": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable progressive loading for partial results", + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "ingested_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + } + }, + "/requests/{id}": { + "get": { + "operationId": "getRequest", + "summary": "Get a request", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "A single request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Request" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Request ID" + }, + "required": true + } + ] + } + }, + "/requests/{id}/raw_body": { + "get": { + "operationId": "getRequestRawBody", + "summary": "Get a request raw body data", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "A request raw body data", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RawBody" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Request ID" + }, + "required": true + } + ] + } + }, + "/requests/{id}/retry": { + "post": { + "operationId": "retryRequest", + "summary": "Retry a request", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "Retry request operation result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetryRequest" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Request ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "webhook_ids": { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) IDs" + }, + "description": "Subset of connection (webhook) IDs to re-run the event logic on. Useful to retry only specific ignored_events. If left empty, all connection (webhook) IDs will be considered." + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/requests/{id}/events": { + "get": { + "operationId": "getRequestEvents", + "summary": "Get request events", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "List of events", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Event ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Event ID" + } + } + ], + "description": "Filter by event IDs" + } + }, + { + "in": "query", + "name": "status", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventStatus" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventStatus" + } + } + ], + "description": "Lifecyle status of the event" + } + }, + { + "in": "query", + "name": "webhook_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Connection (webhook) ID" + } + } + ], + "description": "Filter by connection (webhook) IDs" + } + }, + { + "in": "query", + "name": "destination_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Destination ID" + } + } + ], + "description": "Filter by destination IDs" + } + }, + { + "in": "query", + "name": "source_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + } + }, + { + "in": "query", + "name": "attempts", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by number of attempts" + } + }, + { + "in": "query", + "name": "response_status", + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 200, + "maximum": 600 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 200, + "maximum": 600 + } + } + ], + "nullable": true, + "description": "Filter by HTTP response status code" + } + }, + { + "in": "query", + "name": "successful_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `successful_at` date using a date operator" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by `created_at` date using a date operator" + } + }, + { + "in": "query", + "name": "error_code", + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/AttemptErrorCodes" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttemptErrorCodes" + } + } + ], + "description": "Filter by error code code" + } + }, + { + "in": "query", + "name": "cli_id", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "any": { + "type": "boolean" + }, + "all": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Filter by CLI IDs. `?[any]=true` operator for any CLI." + } + }, + { + "in": "query", + "name": "last_attempt_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `last_attempt_at` date using a date operator" + } + }, + { + "in": "query", + "name": "next_attempt_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "nullable": true, + "description": "Filter by `next_attempt_at` date using a date operator" + } + }, + { + "in": "query", + "name": "search_term", + "schema": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + } + }, + { + "in": "query", + "name": "headers", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "body", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "parsed_query", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "path", + "schema": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + } + }, + { + "in": "query", + "name": "cli_user_id", + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "issue_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "event_data_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "bulk_retry_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "include", + "schema": { + "type": "string", + "enum": [ + "data" + ], + "description": "Include the data object in the event model", + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "progressive", + "schema": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable progressive loading for partial results", + "x-docs-hide": true + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + }, + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Request ID" + }, + "required": true + } + ] + } + }, + "/requests/{id}/ignored_events": { + "get": { + "operationId": "getRequestIgnoredEvents", + "summary": "Get request ignored events", + "description": "", + "tags": [ + "Requests" + ], + "responses": { + "200": { + "description": "List of ignored events", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IgnoredEventPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Request ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Request ID" + } + } + ], + "description": "Filter by ignored events IDs" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + }, + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Request ID" + }, + "required": true + } + ] + } + }, + "/bulk/requests/retry": { + "get": { + "operationId": "getRequestBulkRetries", + "summary": "Get request bulk retries", + "description": "", + "tags": [ + "Bulk retry requests" + ], + "responses": { + "200": { + "description": "List of request bulk retries", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "cancelled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was cancelled" + } + }, + { + "in": "query", + "name": "completed_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry completed" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by date the bulk retry was created" + } + }, + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Bulk retry ID" + } + } + ], + "description": "Filter by bulk retry IDs" + } + }, + { + "in": "query", + "name": "in_progress", + "schema": { + "type": "boolean", + "description": "Indicates if the bulk retry is currently in progress" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Request ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Request ID" + } + } + ], + "description": "Filter by requests IDs" + }, + "status": { + "type": "string", + "enum": [ + "accepted", + "rejected" + ], + "description": "Filter by status" + }, + "rejection_cause": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ], + "nullable": true, + "description": "Filter by rejection cause" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "verified": { + "type": "boolean", + "description": "Filter by verification status" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "ignored_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of ignored events" + }, + "events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of events" + }, + "cli_events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of CLI events" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request created date" + }, + "ingested_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request ingested date" + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + }, + "include": { + "type": "string", + "enum": [ + "data" + ], + "x-docs-hide": true + }, + "progressive": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable progressive loading for partial results", + "x-docs-hide": true + }, + "order_by": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at", + "ingested_at" + ], + "description": "Sort key" + }, + "dir": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + }, + "limit": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + }, + "next": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + }, + "prev": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + { + "in": "query", + "name": "query_partial_match", + "schema": { + "type": "boolean", + "description": "Allow partial filter match on query property" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createRequestBulkRetry", + "summary": "Create a requests bulk retry", + "description": "", + "tags": [ + "Bulk retry requests" + ], + "responses": { + "200": { + "description": "A single requests bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Request ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Request ID" + } + } + ], + "description": "Filter by requests IDs" + }, + "status": { + "type": "string", + "enum": [ + "accepted", + "rejected" + ], + "description": "Filter by status" + }, + "rejection_cause": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ], + "nullable": true, + "description": "Filter by rejection cause" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "verified": { + "type": "boolean", + "description": "Filter by verification status" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "ignored_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of ignored events" + }, + "events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of events" + }, + "cli_events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of CLI events" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request created date" + }, + "ingested_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request ingested date" + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/bulk/requests/retry/plan": { + "get": { + "operationId": "generateRequestBulkRetryPlan", + "summary": "Generate a requests bulk retry plan", + "description": "", + "tags": [ + "Bulk retry requests" + ], + "responses": { + "200": { + "description": "Requests bulk retry plan", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "estimated_batch": { + "type": "integer", + "nullable": true, + "description": "Number of batches required to complete the bulk retry" + }, + "estimated_count": { + "type": "integer", + "nullable": true, + "description": "Number of estimated events to be retried" + }, + "progress": { + "type": "number", + "format": "float", + "nullable": true, + "description": "Progression of the batch operations, values 0 - 1" + } + }, + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Request ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Request ID" + } + } + ], + "description": "Filter by requests IDs" + }, + "status": { + "type": "string", + "enum": [ + "accepted", + "rejected" + ], + "description": "Filter by status" + }, + "rejection_cause": { + "anyOf": [ + { + "$ref": "#/components/schemas/RequestRejectionCause" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestRejectionCause" + } + } + ], + "nullable": true, + "description": "Filter by rejection cause" + }, + "source_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "description": "Source ID" + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "description": "Source ID" + } + } + ], + "description": "Filter by source IDs" + }, + "verified": { + "type": "boolean", + "description": "Filter by verification status" + }, + "search_term": { + "type": "string", + "minLength": 3, + "description": "URL Encoded string of the value to match partially to the body, headers, parsed_query or path" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the data body", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "parsed_query": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": {}, + "additionalProperties": false + } + ], + "description": "URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "type": "string", + "description": "URL Encoded string of the value to match partially to the path" + }, + "ignored_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of ignored events" + }, + "events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of events" + }, + "cli_events_count": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + } + ], + "description": "Filter by count of CLI events" + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request created date" + }, + "ingested_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by request ingested date" + }, + "bulk_retry_id": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "x-docs-hide": true + } + }, + "additionalProperties": false, + "description": "Filter properties for the events to be included in the bulk retry, use query parameters of [Requests](#requests)", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + } + ] + } + }, + "/bulk/requests/retry/{id}": { + "get": { + "operationId": "getRequestBulkRetry", + "summary": "Get a requests bulk retry", + "description": "", + "tags": [ + "Bulk retry requests" + ], + "responses": { + "200": { + "description": "A single requests bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/bulk/requests/retry/{id}/cancel": { + "post": { + "operationId": "cancelRequestBulkRetry", + "summary": "Cancel a requests bulk retry", + "description": "", + "tags": [ + "Bulk retry requests" + ], + "responses": { + "200": { + "description": "A single requests bulk retry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchOperation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Bulk retry ID" + }, + "required": true + } + ] + } + }, + "/sources": { + "get": { + "operationId": "getSources", + "summary": "Get sources", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "List of sources", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourcePaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by source IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155 + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155 + } + } + ], + "description": "The source name" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ] + } + } + ], + "description": "Filter by source type" + } + }, + { + "in": "query", + "name": "disabled", + "schema": { + "type": "boolean", + "description": "Include disabled resources in the response" + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the source was disabled" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "name", + "created_at", + "updated_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createSource", + "summary": "Create a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique name for the source" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source", + "default": "WEBHOOK" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the source" + }, + "config": { + "$ref": "#/components/schemas/SourceTypeConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + } + }, + "put": { + "operationId": "upsertSource", + "summary": "Update or create a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique name for the source" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source", + "default": "WEBHOOK" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the source" + }, + "config": { + "$ref": "#/components/schemas/SourceTypeConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/sources/count": { + "get": { + "operationId": "countSources", + "summary": "Count sources", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "Count of sources", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "count": { + "type": "number", + "format": "float", + "description": "Count of sources" + } + }, + "required": [ + "count" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [] + } + }, + "/sources/{id}": { + "get": { + "operationId": "getSource", + "summary": "Get a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "410": { + "description": "Gone", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "include", + "schema": { + "type": "string", + "enum": [ + "config.auth" + ] + } + }, + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateSource", + "summary": "Update a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique name for the source" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the source" + }, + "config": { + "$ref": "#/components/schemas/SourceTypeConfig" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteSource", + "summary": "Delete a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the source" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string" + }, + "required": true + } + ] + } + }, + "/sources/{id}/disable": { + "put": { + "operationId": "disableSource", + "summary": "Disable a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/sources/{id}/archive": { + "put": { + "operationId": "disableSource_archive", + "summary": "Disable a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/sources/{id}/enable": { + "put": { + "operationId": "enableSource", + "summary": "Enable a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/sources/{id}/unarchive": { + "put": { + "operationId": "enableSource_unarchive", + "summary": "Enable a source", + "description": "", + "tags": [ + "Sources" + ], + "responses": { + "200": { + "description": "A single source", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Source" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Source ID" + }, + "required": true + } + ] + } + }, + "/transformations": { + "get": { + "operationId": "getTransformations", + "summary": "Get transformations", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "List of transformations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by transformation IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Filter by transformation name" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "type": "string", + "maxLength": 255, + "enum": [ + "name", + "created_at", + "updated_at" + ], + "description": "Sort key" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "description": "Sort direction" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createTransformation", + "summary": "Create a transformation", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "A single transformation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Transformation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique, human-friendly name for the transformation" + }, + "code": { + "type": "string", + "description": "JavaScript code to be executed as string" + }, + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "description": "Key-value environment variables to be passed to the transformation" + } + }, + "required": [ + "name", + "code" + ], + "additionalProperties": false + } + } + } + } + }, + "put": { + "operationId": "upsertTransformation", + "summary": "Update or create a transformation", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "A single transformation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Transformation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique, human-friendly name for the transformation" + }, + "code": { + "type": "string", + "description": "JavaScript code to be executed as string" + }, + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "description": "Key-value environment variables to be passed to the transformation" + } + }, + "required": [ + "name", + "code" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/transformations/count": { + "get": { + "operationId": "getTransformationsCount", + "summary": "Get transformations count", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "Count of transformations", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "count": { + "type": "number", + "format": "float", + "description": "Number of transformations" + } + }, + "required": [ + "count" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [] + } + }, + "/transformations/{id}": { + "get": { + "operationId": "getTransformation", + "summary": "Get a transformation", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "A single transformation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Transformation" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Transformation ID" + }, + "required": true + } + ] + }, + "delete": { + "operationId": "deleteTransformation", + "summary": "Delete a transformation", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "An object with deleted transformation id", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Transformation" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Transformation ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateTransformation", + "summary": "Update a transformation", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "A single transformation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Transformation" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Transformation ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique, human-friendly name for the transformation" + }, + "code": { + "type": "string", + "description": "JavaScript code to be executed" + }, + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "description": "Key-value environment variables to be passed to the transformation" + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/transformations/run": { + "put": { + "operationId": "testTransformation", + "summary": "Test a transformation code", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "Transformation run output", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationExecutorOutput" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "env": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "description": "Key-value environment variables to be passed to the transformation" + }, + "webhook_id": { + "type": "string", + "description": "ID of the connection (webhook) to use for the execution `context`" + }, + "code": { + "type": "string", + "description": "JavaScript code to be executed" + }, + "transformation_id": { + "type": "string", + "description": "Transformation ID" + }, + "request": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "properties": {}, + "additionalProperties": { + "type": "string" + }, + "description": "Headers of the request", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "body": { + "anyOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": false, + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + { + "type": "string" + } + ], + "description": "Body of the request", + "x-docs-force-simple-type": true + }, + "path": { + "type": "string", + "nullable": true, + "description": "Path of the request" + }, + "query": { + "type": "string", + "nullable": true, + "description": "String representation of the query params of the request" + }, + "parsed_query": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "description": "JSON representation of the query params", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + } + }, + "required": [ + "headers" + ], + "additionalProperties": false, + "description": "Request input to use for the transformation execution" + }, + "event_id": { + "type": "string", + "x-docs-hide": true + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/transformations/{id}/executions": { + "get": { + "operationId": "getTransformationExecutions", + "summary": "Get transformation executions", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "List of transformation executions", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationExecutionPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "log_level", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ], + "nullable": true + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error", + "fatal" + ], + "nullable": true + } + } + ], + "description": "Log level of the execution" + } + }, + { + "in": "query", + "name": "webhook_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "ID of the connection the execution was run for" + } + }, + { + "in": "query", + "name": "issue_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "ID of the associated issue" + } + }, + { + "in": "query", + "name": "created_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "ISO date of the transformation's execution" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + }, + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Transformation ID" + }, + "required": true + } + ] + } + }, + "/transformations/{id}/executions/{execution_id}": { + "get": { + "operationId": "getTransformationExecution", + "summary": "Get a transformation execution", + "description": "", + "tags": [ + "Transformations" + ], + "responses": { + "200": { + "description": "A single transformation execution", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationExecution" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Transformation ID" + }, + "required": true + }, + { + "in": "path", + "name": "execution_id", + "schema": { + "type": "string", + "description": "Execution ID" + }, + "required": true + } + ] + } + }, + "/connections": { + "get": { + "operationId": "getConnections", + "summary": "Get connections", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "List of connections", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionPaginatedResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by connection IDs" + } + }, + { + "in": "query", + "name": "name", + "schema": { + "anyOf": [ + { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true + } + } + ], + "description": "Filter by connection name" + } + }, + { + "in": "query", + "name": "destination_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by associated destination IDs" + } + }, + { + "in": "query", + "name": "source_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by associated source IDs" + } + }, + { + "in": "query", + "name": "disabled", + "schema": { + "type": "boolean", + "description": "Include disabled resources in the response" + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the connection was disabled" + } + }, + { + "in": "query", + "name": "full_name", + "schema": { + "type": "string", + "pattern": "^[a-z0-9-_>\\s]+$", + "maxLength": 155, + "description": "Fuzzy match the concatenated source and connection name. The source name and connection name must be separated by \" -> \"" + } + }, + { + "in": "query", + "name": "paused_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the connection was paused" + } + }, + { + "in": "query", + "name": "order_by", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255, + "enum": [ + "full_name", + "created_at", + "updated_at", + "sources.updated_at", + "sources.created_at", + "destinations.updated_at", + "destinations.created_at" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "enum": [ + "full_name", + "created_at", + "updated_at", + "sources.updated_at", + "sources.created_at", + "destinations.updated_at", + "destinations.created_at" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort key(s)" + } + }, + { + "in": "query", + "name": "dir", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "minItems": 2, + "maxItems": 2 + } + ], + "description": "Sort direction(s)" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "description": "Result set size" + } + }, + { + "in": "query", + "name": "next", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the next set of results" + } + }, + { + "in": "query", + "name": "prev", + "schema": { + "type": "string", + "maxLength": 255, + "description": "The ID to provide in the query to get the previous set of results" + } + } + ] + }, + "post": { + "operationId": "createConnection", + "summary": "Create a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true, + "description": "A unique name of the connection for the source" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the connection" + }, + "destination_id": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "ID of a destination to bind to the connection" + }, + "source_id": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "ID of a source to bind to the connection" + }, + "destination": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Name for the destination" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination", + "default": "HTTP" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the destination" + }, + "config": { + "$ref": "#/components/schemas/VerificationConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "description": "Destination input object" + }, + "source": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique name for the source" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source", + "default": "WEBHOOK" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the source" + }, + "config": { + "$ref": "#/components/schemas/SourceTypeConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "description": "Source input object" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + }, + "additionalProperties": false + } + } + } + } + }, + "put": { + "operationId": "upsertConnection", + "summary": "Update or create a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true, + "description": "A unique name of the connection for the source" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the connection" + }, + "destination_id": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "ID of a destination to bind to the connection" + }, + "source_id": { + "type": "string", + "maxLength": 255, + "nullable": true, + "description": "ID of a source to bind to the connection" + }, + "destination": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "Name for the destination" + }, + "type": { + "type": "string", + "enum": [ + "HTTP", + "CLI", + "MOCK_API" + ], + "description": "Type of the destination", + "default": "HTTP" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the destination" + }, + "config": { + "$ref": "#/components/schemas/VerificationConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "description": "Destination input object" + }, + "source": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "description": "A unique name for the source" + }, + "type": { + "type": "string", + "enum": [ + "AIPRISE", + "DOCUSIGN", + "INTERCOM", + "PUBLISH_API", + "WEBHOOK", + "HTTP", + "MANAGED", + "HOOKDECK_OUTPOST", + "SANITY", + "BIGCOMMERCE", + "OPENAI", + "POLAR", + "BRIDGE_XYZ", + "BRIDGE_API", + "CHARGEBEE_BILLING", + "CHAINDOTS", + "CLOUDSIGNAL", + "COINBASE", + "COURIER", + "CURSOR", + "MERAKI", + "FIREBLOCKS", + "FRONTAPP", + "ZOOM", + "TWITTER", + "RECHARGE", + "RECURLY", + "RING_CENTRAL", + "STRIPE", + "PROPERTY-FINDER", + "QUOTER", + "SHOPIFY", + "TWILIO", + "GITHUB", + "POSTMARK", + "TALLY", + "TYPEFORM", + "PICQER", + "XERO", + "SVIX", + "RESEND", + "ADYEN", + "AKENEO", + "GITLAB", + "WOOCOMMERCE", + "OKTA", + "OURA", + "COMMERCELAYER", + "HUBSPOT", + "MAILGUN", + "PERSONA", + "PIPEDRIVE", + "SENDGRID", + "WORKOS", + "SYNCTERA", + "AWS_SNS", + "THREE_D_EYE", + "TWITCH", + "ENODE", + "FAUNDIT", + "FAVRO", + "LINEAR", + "SHIPHERO", + "SHOPLINE", + "WIX", + "NMI", + "ORB", + "PYLON", + "RAZORPAY", + "REPAY", + "SQUARE", + "SOLIDGATE", + "TRELLO", + "EBAY", + "TELNYX", + "DISCORD", + "TOKENIO", + "FISERV", + "FUSIONAUTH", + "BONDSMITH", + "VERCEL_LOG_DRAINS", + "VERCEL", + "TEBEX", + "SLACK", + "SMARTCAR", + "MAILCHIMP", + "NUVEMSHOP", + "PADDLE", + "PAYPAL", + "PORTAL", + "TREEZOR", + "PRAXIS", + "CUSTOMERIO", + "EXACT_ONLINE", + "FACEBOOK", + "WHATSAPP", + "REPLICATE", + "TIKTOK", + "TIKTOK_SHOP", + "AIRWALLEX", + "ASCEND", + "ALIPAY", + "ZENDESK", + "UPOLLO", + "SMILE", + "NYLAS", + "CLIO", + "GOCARDLESS", + "LINKEDIN", + "LITHIC", + "STRAVA", + "UTILA", + "MONDAY", + "ZEROHASH", + "ZIFT", + "ETHOCA", + "AIRTABLE", + "ASANA", + "FASTSPRING", + "PAYPRO_GLOBAL", + "USPS", + "FLEXPORT", + "CIRCLE" + ], + "description": "Type of the source", + "default": "WEBHOOK" + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the source" + }, + "config": { + "$ref": "#/components/schemas/SourceTypeConfig" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "description": "Source input object" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/connections/count": { + "get": { + "operationId": "countConnections", + "summary": "Count connections", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "Count of connections", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "count": { + "type": "number", + "format": "float", + "description": "Count of connections" + } + }, + "required": [ + "count" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "destination_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by associated destination IDs" + } + }, + { + "in": "query", + "name": "source_id", + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 255 + }, + { + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + } + ], + "description": "Filter by associated source IDs" + } + }, + { + "in": "query", + "name": "disabled", + "schema": { + "type": "boolean", + "description": "Include disabled resources in the response" + } + }, + { + "in": "query", + "name": "disabled_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the connection was disabled" + } + }, + { + "in": "query", + "name": "paused_at", + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time", + "nullable": true + }, + { + "$ref": "#/components/schemas/Operators" + } + ], + "description": "Date the connection was paused" + } + } + ] + } + }, + "/connections/{id}": { + "get": { + "operationId": "getConnection", + "summary": "Get a single connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "410": { + "description": "Gone", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + }, + "put": { + "operationId": "updateConnection", + "summary": "Update a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-z0-9-_]+$", + "maxLength": 155, + "nullable": true + }, + "description": { + "type": "string", + "maxLength": 500, + "nullable": true, + "description": "Description for the connection" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "deleteConnection", + "summary": "Delete a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the connection" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string" + }, + "required": true + } + ] + } + }, + "/connections/{id}/disable": { + "put": { + "operationId": "disableConnection", + "summary": "Disable a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/connections/{id}/archive": { + "put": { + "operationId": "disableConnection_archive", + "summary": "Disable a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/connections/{id}/enable": { + "put": { + "operationId": "enableConnection", + "summary": "Enable a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/connections/{id}/unarchive": { + "put": { + "operationId": "enableConnection_unarchive", + "summary": "Enable a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/connections/{id}/pause": { + "put": { + "operationId": "pauseConnection", + "summary": "Pause a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/connections/{id}/unpause": { + "put": { + "operationId": "unpauseConnection", + "summary": "Unpause a connection", + "description": "", + "tags": [ + "Connections" + ], + "responses": { + "200": { + "description": "A single connection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "description": "Connection ID" + }, + "required": true + } + ] + } + }, + "/notifications/webhooks": { + "put": { + "operationId": "toggleWebhookNotifications", + "summary": "Toggle webhook notifications for the project", + "description": "", + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "Toggle operation status response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToggleWebhookNotifications" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable or disable webhook notifications on the project" + }, + "topics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TopicsValue" + }, + "description": "List of topics to send notifications for" + }, + "source_id": { + "type": "string", + "description": "The Hookdeck Source to send the webhook to" + } + }, + "required": [ + "enabled", + "topics", + "source_id" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/teams/current/custom_domains": { + "post": { + "operationId": "addCustomDomain", + "summary": "Add a custom domain to the project", + "description": "", + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "Custom domain successfuly added", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddCustomHostname" + } + } + } + } + }, + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddCustomHostname" + } + } + } + } + }, + "get": { + "operationId": "listCustomDomains", + "summary": "List all custom domains and their verification statuses for the project", + "description": "", + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "List of custom domains", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListCustomDomainSchema" + } + } + } + } + }, + "parameters": [] + } + }, + "/teams/current/custom_domains/{domain_id}": { + "delete": { + "operationId": "deleteCustomDomain", + "summary": "Removes a custom domain from the project", + "description": "", + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "Custom domain successfuly removed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteCustomDomainSchema" + } + } + } + } + }, + "parameters": [ + { + "in": "path", + "name": "domain_id", + "schema": { + "type": "string" + }, + "required": true + } + ] + } + } + } +} diff --git a/tap_hookdeck/streams.py b/tap_hookdeck/streams.py index aad3da4..8a4df84 100644 --- a/tap_hookdeck/streams.py +++ b/tap_hookdeck/streams.py @@ -2,123 +2,52 @@ from __future__ import annotations +from importlib import resources from typing import TYPE_CHECKING, Any, override -from singer_sdk import typing as th +from singer_sdk import OpenAPISchema, StreamSchema from tap_hookdeck.client import HookdeckStream if TYPE_CHECKING: from singer_sdk.helpers.types import Context +CONFIG_SCHEMA = { + "type": ["object", "null"], + "additionalProperties": True, +} -DESTINATION: list[th.Property[Any]] = [ - th.Property("id", th.StringType, required=True), - th.Property("name", th.StringType, required=True), - th.Property("description", th.StringType), - th.Property("team_id", th.StringType, required=True), - th.Property("path_forwarding_disabled", th.BooleanType), - th.Property("url", th.StringType), - th.Property("cli_path", th.StringType), - th.Property("rate_limit", th.IntegerType), - th.Property( - "rate_limit_period", - th.StringType(allowed_values=["second", "minute", "hour", "concurrent"]), - ), - th.Property( - "http_method", - th.StringType( - allowed_values=[ - None, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - ] - ), - ), - th.Property("auth_method", th.ObjectType()), - th.Property("archived_at", th.DateTimeType), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - th.Property("disabled_at", th.DateTimeType), -] - -SOURCE: list[th.Property[Any]] = [ - th.Property("id", th.StringType, required=True), - th.Property("name", th.StringType, required=True), - th.Property("description", th.StringType), - th.Property("team_id", th.StringType, required=True), - th.Property("url", th.StringType), - th.Property("verification", th.ObjectType()), - th.Property( - "allowed_http_methods", - th.ArrayType( - th.StringType( - allowed_values=[ - None, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE", - ] - ) - ), - ), - th.Property( - "custom_response", - th.ObjectType( - th.Property( - "content_type", - th.StringType(allowed_values=["json", "text", "xml"]), - required=True, - ), - th.Property("body", th.StringType, required=True), - ), - ), - th.Property("archived_at", th.DateTimeType), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - th.Property("disabled_at", th.DateTimeType), -] + +class HookdeckOpenAPI(OpenAPISchema[str]): + """Schema for all workspace-scoped streams.""" + + @override + def fetch_schema(self, key: str) -> dict[str, Any]: + schema = super().fetch_schema(key) + if key == "Connection": + schema["properties"]["destination"]["properties"]["config"] = CONFIG_SCHEMA + schema["properties"]["source"]["properties"]["config"] = CONFIG_SCHEMA + if key == "Destination": + schema["properties"]["config"] = CONFIG_SCHEMA + if key == "Source": + schema["properties"]["config"] = CONFIG_SCHEMA + return schema + + +OPENAPI = HookdeckOpenAPI(resources.files("tap_hookdeck") / "openapi.json") class Connections(HookdeckStream): """Connections stream.""" name = "connections" - path = "/2024-09-01/connections" + path = "/connections" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="Connection") # Incremental not supported replication_key = None - schema = th.PropertiesList( - th.Property("id", th.StringType, required=True), - th.Property("name", th.StringType), - th.Property("full_name", th.StringType), - th.Property("description", th.StringType), - th.Property("team_id", th.StringType, required=True), - th.Property( - "destination", - th.ObjectType(*DESTINATION, additional_properties=False), - required=True, - ), - th.Property( - "source", - th.ObjectType(*SOURCE, additional_properties=False), - required=True, - ), - th.Property("rules", th.ArrayType(th.ObjectType())), - th.Property("archived_at", th.DateTimeType), - th.Property("paused_at", th.DateTimeType), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - additional_properties=False, - ).to_dict() - @override @property def is_sorted(self) -> bool: @@ -144,138 +73,57 @@ class Destinations(HookdeckStream): """Destinations stream.""" name = "destinations" - path = "/2024-09-01/destinations" + path = "/destinations" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="Destination") # Incremental not supported replication_key = None - schema = th.PropertiesList( - *DESTINATION, - additional_properties=False, - ).to_dict() - class Sources(HookdeckStream): """Sources stream.""" name = "sources" - path = "/2024-09-01/sources" + path = "/sources" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="Source") # Incremental not supported replication_key = None - schema = th.PropertiesList( - *SOURCE, - additional_properties=False, - ).to_dict() - class IssueTriggers(HookdeckStream): """Issue triggers stream.""" name = "issue_triggers" - path = "/2024-09-01/issue-triggers" + path = "/issue-triggers" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="IssueTrigger") # Incremental not supported replication_key = None - schema = th.PropertiesList( - th.Property("id", th.StringType, required=True), - th.Property("team_id", th.StringType), - th.Property("name", th.StringType), - th.Property( - "type", - th.StringType(allowed_values=["delivery", "transformation", "backpressure", "request"]), - required=True, - ), - th.Property("configs", th.ObjectType()), - th.Property( - "channels", - th.ObjectType( - th.Property( - "slack", - th.ObjectType( - th.Property("channel_name", th.StringType, required=True), - ), - ), - th.Property("opsgenie", th.ObjectType()), - th.Property("email", th.ObjectType()), - ), - ), - th.Property("disabled_at", th.DateTimeType), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - th.Property("deleted_at", th.DateTimeType), - additional_properties=False, - ).to_dict() - class Transformations(HookdeckStream): """Transformations stream.""" name = "transformations" - path = "/2024-09-01/transformations" + path = "/transformations" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="Transformation") # Incremental not supported replication_key = None - schema = th.PropertiesList( - th.Property("id", th.StringType, required=True), - th.Property("team_id", th.StringType, required=True), - th.Property("name", th.StringType, required=True), - th.Property("code", th.StringType, required=True), - th.Property("encrypted_env", th.StringType), - th.Property("iv", th.StringType), - th.Property("env", th.ObjectType(additional_properties=th.StringType)), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - additional_properties=False, - ).to_dict() - class Requests(HookdeckStream): """Requests stream.""" name = "requests" - path = "/2024-09-01/requests" + path = "/requests" primary_keys = ("id",) + schema = StreamSchema(OPENAPI, key="Request") # Incremental not supported replication_key = "ingested_at" - - schema = th.PropertiesList( - th.Property("id", th.StringType, required=True), - th.Property("team_id", th.StringType, required=True), - th.Property("verified", th.BooleanType), - th.Property("original_event_data_id", th.StringType), - th.Property( - "rejection_cause", - th.StringType( - allowed_values=[ - None, - "SOURCE_ARCHIVED", - "NO_WEBHOOK", - "VERIFICATION_FAILED", - "UNSUPPORTED_HTTP_METHOD", - "UNSUPPORTED_CONTENT_TYPE", - "UNPARSABLE_JSON", - "PAYLOAD_TOO_LARGE", - "INGESTION_FATAL", - "UNKNOWN", - ] - ), - ), - th.Property("ingest_priority", th.StringType(allowed_values=["NORMAL", "LOW"])), - th.Property("ingested_at", th.DateTimeType), - th.Property("source_id", th.StringType), - th.Property("events_count", th.IntegerType), - th.Property("cli_events_count", th.IntegerType), - th.Property("ignored_count", th.IntegerType), - th.Property("updated_at", th.DateTimeType, required=True), - th.Property("created_at", th.DateTimeType, required=True), - additional_properties=False, - ).to_dict() diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[connections].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[connections].json index b02eb72..4841607 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[connections].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[connections].json @@ -106,7 +106,7 @@ "properties", "destination", "properties", - "path_forwarding_disabled" + "type" ], "metadata": { "inclusion": "available" @@ -117,51 +117,7 @@ "properties", "destination", "properties", - "url" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "cli_path" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "rate_limit" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "rate_limit_period" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "http_method" + "config" ], "metadata": { "inclusion": "available" @@ -172,18 +128,7 @@ "properties", "destination", "properties", - "auth_method" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "archived_at" + "disabled_at" ], "metadata": { "inclusion": "available" @@ -211,17 +156,6 @@ "inclusion": "available" } }, - { - "breadcrumb": [ - "properties", - "destination", - "properties", - "disabled_at" - ], - "metadata": { - "inclusion": "available" - } - }, { "breadcrumb": [ "properties", @@ -291,7 +225,7 @@ "properties", "source", "properties", - "verification" + "type" ], "metadata": { "inclusion": "available" @@ -302,7 +236,7 @@ "properties", "source", "properties", - "allowed_http_methods" + "authenticated" ], "metadata": { "inclusion": "available" @@ -313,7 +247,7 @@ "properties", "source", "properties", - "custom_response" + "config" ], "metadata": { "inclusion": "available" @@ -324,33 +258,7 @@ "properties", "source", "properties", - "custom_response", - "properties", - "content_type" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "source", - "properties", - "custom_response", - "properties", - "body" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "source", - "properties", - "archived_at" + "disabled_at" ], "metadata": { "inclusion": "available" @@ -378,17 +286,6 @@ "inclusion": "available" } }, - { - "breadcrumb": [ - "properties", - "source", - "properties", - "disabled_at" - ], - "metadata": { - "inclusion": "available" - } - }, { "breadcrumb": [ "properties", @@ -401,7 +298,7 @@ { "breadcrumb": [ "properties", - "archived_at" + "disabled_at" ], "metadata": { "inclusion": "available" @@ -448,23 +345,18 @@ ], "replication_method": "FULL_TABLE", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { - "archived_at": { + "created_at": { + "description": "Date the connection was created", "format": "date-time", "type": [ "string", "null" ] }, - "created_at": { - "format": "date-time", - "type": [ - "string" - ] - }, "description": { + "description": "Description of the connection", "type": [ "string", "null" @@ -472,107 +364,69 @@ }, "destination": { "additionalProperties": false, + "description": "Associated [Destination](#destination-object) object", "properties": { - "archived_at": { - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "auth_method": { + "config": { "additionalProperties": true, - "properties": {}, "type": [ "object", "null" ] }, - "cli_path": { - "type": [ - "string", - "null" - ] - }, "created_at": { + "description": "Date the destination was created", "format": "date-time", "type": [ - "string" + "string", + "null" ] }, "description": { + "description": "Description of the destination", "type": [ "string", "null" ] }, "disabled_at": { + "description": "Date the destination was disabled", "format": "date-time", "type": [ "string", "null" ] }, - "http_method": { - "enum": [ - null, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], + "id": { + "description": "ID of the destination", "type": [ "string", "null" ] }, - "id": { - "type": [ - "string" - ] - }, "name": { + "description": "A unique, human-friendly name for the destination", "type": [ - "string" - ] - }, - "path_forwarding_disabled": { - "type": [ - "boolean", + "string", "null" ] }, - "rate_limit": { + "team_id": { + "description": "ID of the project", "type": [ - "integer", + "string", "null" ] }, - "rate_limit_period": { - "enum": [ - "second", - "minute", - "hour", - "concurrent" - ], + "type": { + "description": "Type of the destination", "type": [ "string", "null" ] }, - "team_id": { - "type": [ - "string" - ] - }, "updated_at": { + "description": "Date the destination was last updated", "format": "date-time", - "type": [ - "string" - ] - }, - "url": { "type": [ "string", "null" @@ -583,29 +437,44 @@ "id", "name", "team_id", + "type", + "disabled_at", "updated_at", "created_at" ], - "type": "object" + "type": [ + "object", + "null" + ] }, - "full_name": { + "disabled_at": { + "description": "Date the connection was disabled", + "format": "date-time", "type": [ "string", "null" ] }, - "id": { + "full_name": { + "description": "Full name of the connection concatenated from source, connection and desitnation name", "type": [ - "string" + "string", + "null" ] }, + "id": { + "description": "ID of the connection", + "type": "string" + }, "name": { + "description": "Unique name of the connection for this source", "type": [ "string", "null" ] }, "paused_at": { + "description": "Date the connection was paused", "format": "date-time", "type": [ "string", @@ -613,10 +482,375 @@ ] }, "rules": { + "description": "Array of rules configured on the connection", "items": { - "additionalProperties": true, - "properties": {}, - "type": "object" + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "count": { + "description": "Maximum number of retries to attempt", + "type": [ + "integer", + "null" + ] + }, + "interval": { + "description": "Time in MS between each retry", + "type": [ + "integer", + "null" + ] + }, + "response_status_codes": { + "description": "HTTP codes to retry on. Accepts: range expressions (e.g., \"400-499\", \">400\"), specific codes (e.g., 404), and exclusions (e.g., \"!401\"). Example: [\"500-599\", \">400\", 404, \"!401\"]", + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": [ + "array", + "null" + ] + }, + "strategy": { + "description": "Algorithm to use when calculating delay between retries", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "A retry rule must be of type `retry`", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "strategy" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "properties": { + "body": { + "anyOf": [ + { + "type": [ + "string", + "null" + ], + "x-fern-type-name": "FilterRulePropertyString" + }, + { + "format": "float", + "type": [ + "number", + "null" + ], + "x-fern-type-name": "FilterRulePropertyNumber" + }, + { + "type": [ + "boolean", + "null" + ], + "x-fern-type-name": "FilterRulePropertyBoolean" + }, + { + "additionalProperties": true, + "properties": {}, + "type": [ + "object", + "null" + ], + "x-fern-type-name": "FilterRulePropertyJSON" + } + ], + "description": "JSON using our filter syntax to filter on request headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "headers": { + "anyOf": [ + { + "type": [ + "string", + "null" + ], + "x-fern-type-name": "FilterRulePropertyString" + }, + { + "format": "float", + "type": [ + "number", + "null" + ], + "x-fern-type-name": "FilterRulePropertyNumber" + }, + { + "type": [ + "boolean", + "null" + ], + "x-fern-type-name": "FilterRulePropertyBoolean" + }, + { + "additionalProperties": true, + "properties": {}, + "type": [ + "object", + "null" + ], + "x-fern-type-name": "FilterRulePropertyJSON" + } + ], + "description": "JSON using our filter syntax to filter on request headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "path": { + "anyOf": [ + { + "type": [ + "string", + "null" + ], + "x-fern-type-name": "FilterRulePropertyString" + }, + { + "format": "float", + "type": [ + "number", + "null" + ], + "x-fern-type-name": "FilterRulePropertyNumber" + }, + { + "type": [ + "boolean", + "null" + ], + "x-fern-type-name": "FilterRulePropertyBoolean" + }, + { + "additionalProperties": true, + "properties": {}, + "type": [ + "object", + "null" + ], + "x-fern-type-name": "FilterRulePropertyJSON" + } + ], + "description": "JSON using our filter syntax to filter on request headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "query": { + "anyOf": [ + { + "type": [ + "string", + "null" + ], + "x-fern-type-name": "FilterRulePropertyString" + }, + { + "format": "float", + "type": [ + "number", + "null" + ], + "x-fern-type-name": "FilterRulePropertyNumber" + }, + { + "type": [ + "boolean", + "null" + ], + "x-fern-type-name": "FilterRulePropertyBoolean" + }, + { + "additionalProperties": true, + "properties": {}, + "type": [ + "object", + "null" + ], + "x-fern-type-name": "FilterRulePropertyJSON" + } + ], + "description": "JSON using our filter syntax to filter on request headers", + "x-docs-force-simple-type": true, + "x-docs-type": "JSON" + }, + "type": { + "description": "A filter rule must be of type `filter`", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "properties": { + "transformation": { + "additionalProperties": false, + "description": "You can optionally define a new transformation while creating a transform rule", + "properties": { + "code": { + "description": "A string representation of your JavaScript (ES6) code to run", + "type": [ + "string", + "null" + ] + }, + "env": { + "additionalProperties": { + "type": "string" + }, + "description": "A key-value object of environment variables to encrypt and expose to your transformation code", + "properties": {}, + "type": [ + "object", + "null" + ] + }, + "name": { + "description": "The unique name of the transformation", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "name", + "code" + ], + "type": [ + "object", + "null" + ] + }, + "transformation_id": { + "description": "ID of the attached transformation object. Optional input, always set once the rule is defined", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "A transformation rule must be of type `transform`", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "properties": { + "delay": { + "description": "Delay to introduce in MS", + "type": [ + "integer", + "null" + ] + }, + "type": { + "description": "A delay rule must be of type `delay`", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "type", + "delay" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "properties": { + "exclude_fields": { + "description": "Fields to exclude when generating deduplicate key. Supports root fields (e.g., \"headers\"), dot notation (e.g., \"body.user.id\"), array wildcards (e.g., \"body.items[*].sku\"), and array indices (e.g., \"body.items[0].name\"). Array notation must be followed by a property name.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "include_fields": { + "description": "Fields to include when generating deduplicate key. Supports root fields (e.g., \"headers\"), dot notation (e.g., \"body.user.id\"), array wildcards (e.g., \"body.items[*].sku\"), and array indices (e.g., \"body.items[0].name\"). Array notation must be followed by a property name.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "description": "A deduplicate rule must be of type `deduplicate`", + "type": [ + "string", + "null" + ] + }, + "window": { + "description": "Time window in milliseconds for deduplicate", + "maximum": 3600000, + "minimum": 1000, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "type", + "window" + ], + "type": [ + "object", + "null" + ] + } + ] }, "type": [ "array", @@ -625,74 +859,39 @@ }, "source": { "additionalProperties": false, + "description": "Associated [Source](#source-object) object", "properties": { - "allowed_http_methods": { - "items": { - "enum": [ - null, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], - "type": [ - "string" - ] - }, + "authenticated": { + "description": "Whether the source is authenticated", "type": [ - "array", + "boolean", "null" ] }, - "archived_at": { - "format": "date-time", + "config": { + "additionalProperties": true, "type": [ - "string", + "object", "null" ] }, "created_at": { + "description": "Date the source was created", "format": "date-time", "type": [ - "string" - ] - }, - "custom_response": { - "additionalProperties": true, - "properties": { - "body": { - "type": [ - "string" - ] - }, - "content_type": { - "enum": [ - "json", - "text", - "xml" - ], - "type": [ - "string" - ] - } - }, - "required": [ - "content_type", - "body" - ], - "type": [ - "object", + "string", "null" ] }, "description": { + "description": "Description of the source", "type": [ "string", "null" ] }, "disabled_at": { + "description": "Date the source was disabled", "format": "date-time", "type": [ "string", @@ -700,37 +899,46 @@ ] }, "id": { + "description": "ID of the source", "type": [ - "string" + "string", + "null" ] }, "name": { + "description": "Name for the source", "type": [ - "string" + "string", + "null" ] }, "team_id": { + "description": "ID of the project", "type": [ - "string" + "string", + "null" ] }, - "updated_at": { - "format": "date-time", + "type": { + "description": "Type of the source", "type": [ - "string" + "string", + "null" ] }, - "url": { + "updated_at": { + "description": "Date the source was last updated", + "format": "date-time", "type": [ "string", "null" ] }, - "verification": { - "additionalProperties": true, - "properties": {}, + "url": { + "description": "A unique URL that must be supplied to your webhook's provider", + "format": "URL", "type": [ - "object", + "string", "null" ] } @@ -739,28 +947,45 @@ "id", "name", "team_id", + "url", + "type", + "authenticated", + "disabled_at", "updated_at", "created_at" ], - "type": "object" + "type": [ + "object", + "null" + ] }, "team_id": { + "description": "ID of the project", "type": [ - "string" + "string", + "null" ] }, "updated_at": { + "description": "Date the connection was last updated", "format": "date-time", "type": [ - "string" + "string", + "null" ] } }, "required": [ "id", + "name", + "full_name", + "description", "team_id", "destination", "source", + "rules", + "disabled_at", + "paused_at", "updated_at", "created_at" ], diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[destinations].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[destinations].json index 66a3ff0..c392785 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[destinations].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[destinations].json @@ -42,7 +42,7 @@ { "breadcrumb": [ "properties", - "path_forwarding_disabled" + "type" ], "metadata": { "inclusion": "available" @@ -51,7 +51,7 @@ { "breadcrumb": [ "properties", - "url" + "config" ], "metadata": { "inclusion": "available" @@ -60,52 +60,7 @@ { "breadcrumb": [ "properties", - "cli_path" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "rate_limit" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "rate_limit_period" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "http_method" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "auth_method" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "archived_at" + "disabled_at" ], "metadata": { "inclusion": "available" @@ -129,15 +84,6 @@ "inclusion": "available" } }, - { - "breadcrumb": [ - "properties", - "disabled_at" - ], - "metadata": { - "inclusion": "available" - } - }, { "breadcrumb": [], "metadata": { @@ -152,109 +98,67 @@ ], "replication_method": "FULL_TABLE", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, + "description": "Associated [Destination](#destination-object) object", "properties": { - "archived_at": { - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "auth_method": { + "config": { "additionalProperties": true, - "properties": {}, "type": [ "object", "null" ] }, - "cli_path": { - "type": [ - "string", - "null" - ] - }, "created_at": { + "description": "Date the destination was created", "format": "date-time", "type": [ - "string" + "string", + "null" ] }, "description": { + "description": "Description of the destination", "type": [ "string", "null" ] }, "disabled_at": { + "description": "Date the destination was disabled", "format": "date-time", "type": [ "string", "null" ] }, - "http_method": { - "enum": [ - null, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], - "type": [ - "string", - "null" - ] - }, "id": { - "type": [ - "string" - ] + "description": "ID of the destination", + "type": "string" }, "name": { + "description": "A unique, human-friendly name for the destination", "type": [ - "string" - ] - }, - "path_forwarding_disabled": { - "type": [ - "boolean", + "string", "null" ] }, - "rate_limit": { + "team_id": { + "description": "ID of the project", "type": [ - "integer", + "string", "null" ] }, - "rate_limit_period": { - "enum": [ - "second", - "minute", - "hour", - "concurrent" - ], + "type": { + "description": "Type of the destination", "type": [ "string", "null" ] }, - "team_id": { - "type": [ - "string" - ] - }, "updated_at": { + "description": "Date the destination was last updated", "format": "date-time", - "type": [ - "string" - ] - }, - "url": { "type": [ "string", "null" @@ -265,6 +169,8 @@ "id", "name", "team_id", + "type", + "disabled_at", "updated_at", "created_at" ], diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[issue_triggers].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[issue_triggers].json index 827502b..345fa4a 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[issue_triggers].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[issue_triggers].json @@ -81,6 +81,41 @@ "inclusion": "available" } }, + { + "breadcrumb": [ + "properties", + "channels", + "properties", + "microsoft_teams" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "channels", + "properties", + "microsoft_teams", + "properties", + "channel_name" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "channels", + "properties", + "pagerduty" + ], + "metadata": { + "inclusion": "available" + } + }, { "breadcrumb": [ "properties", @@ -153,22 +188,52 @@ ], "replication_method": "FULL_TABLE", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "channels": { - "additionalProperties": true, + "additionalProperties": false, + "description": "Notification channels object for the specific channel type", "properties": { "email": { - "additionalProperties": true, + "additionalProperties": false, + "description": "Email channel for an issue trigger", "properties": {}, "type": [ "object", "null" ] }, + "microsoft_teams": { + "additionalProperties": false, + "description": "Channel for a 'Microsoft Teams' issue trigger", + "properties": { + "channel_name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "channel_name" + ], + "type": [ + "object", + "null" + ] + }, "opsgenie": { - "additionalProperties": true, + "additionalProperties": false, + "description": "Integration channel for an issue trigger", + "properties": {}, + "type": [ + "object", + "null" + ] + }, + "pagerduty": { + "additionalProperties": false, + "description": "Integration channel for an issue trigger", "properties": {}, "type": [ "object", @@ -176,11 +241,13 @@ ] }, "slack": { - "additionalProperties": true, + "additionalProperties": false, + "description": "Channel for a 'Slack' issue trigger", "properties": { "channel_name": { "type": [ - "string" + "string", + "null" ] } }, @@ -199,20 +266,176 @@ ] }, "configs": { - "additionalProperties": true, - "properties": {}, - "type": [ - "object", - "null" - ] + "anyOf": [ + { + "additionalProperties": false, + "description": "Configurations for a 'delivery' issue trigger", + "properties": { + "connections": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A pattern to match on the connection name or array of connection IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + }, + "strategy": { + "description": "The strategy uses to open the issue", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "strategy", + "connections" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "description": "Configurations for a 'Transformation' issue trigger", + "properties": { + "log_level": { + "description": "The minimum log level to open the issue on", + "type": [ + "string", + "null" + ] + }, + "transformations": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A pattern to match on the transformation name or array of transformation IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "log_level", + "transformations" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "description": "Configurations for a 'Backpressure' issue trigger", + "properties": { + "delay": { + "description": "The minimum delay (backpressure) to open the issue for min of 1 minute (60000) and max of 1 day (86400000)", + "maximum": 86400000, + "minimum": 60000, + "type": [ + "integer", + "null" + ], + "x-docs-type": "integer" + }, + "destinations": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A pattern to match on the destination name or array of destination IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "delay", + "destinations" + ], + "type": [ + "object", + "null" + ] + }, + { + "additionalProperties": false, + "description": "Configurations for a 'Request' issue trigger", + "properties": { + "rejection_causes": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string", + "x-docs-type": "string" + }, + "type": "array" + } + ], + "description": "An array of rejection causes to match on, or '*' to match all rejection causes.", + "x-docs-force-simple-type": true + }, + "sources": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A pattern to match on the source name or array of source IDs. Use `*` as wildcard.", + "x-docs-force-simple-type": true + } + }, + "required": [ + "rejection_causes", + "sources" + ], + "type": [ + "object", + "null" + ] + } + ], + "description": "Configuration object for the specific issue type selected" }, "created_at": { + "description": "ISO timestamp for when the issue trigger was created", "format": "date-time", "type": [ - "string" + "string", + "null" ] }, "deleted_at": { + "description": "ISO timestamp for when the issue trigger was deleted", "format": "date-time", "type": [ "string", @@ -220,6 +443,7 @@ ] }, "disabled_at": { + "description": "ISO timestamp for when the issue trigger was disabled", "format": "date-time", "type": [ "string", @@ -227,43 +451,43 @@ ] }, "id": { - "type": [ - "string" - ] + "description": "ID of the issue trigger", + "type": "string" }, "name": { + "description": "Optional unique name to use as reference when using the API", "type": [ "string", "null" ] }, "team_id": { + "description": "ID of the project", "type": [ "string", "null" ] }, "type": { - "enum": [ - "delivery", - "transformation", - "backpressure", - "request" - ], + "description": "Issue type", "type": [ - "string" + "string", + "null" ] }, "updated_at": { + "description": "ISO timestamp for when the issue trigger was last updated", "format": "date-time", "type": [ - "string" + "string", + "null" ] } }, "required": [ "id", "type", + "configs", "updated_at", "created_at" ], diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[requests].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[requests].json index 3a8a7ec..e4a26b2 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[requests].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[requests].json @@ -48,15 +48,6 @@ "inclusion": "available" } }, - { - "breadcrumb": [ - "properties", - "ingest_priority" - ], - "metadata": { - "inclusion": "available" - } - }, { "breadcrumb": [ "properties", @@ -120,6 +111,81 @@ "inclusion": "available" } }, + { + "breadcrumb": [ + "properties", + "data" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "path" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "query" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "parsed_query" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "headers" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "body" + ], + "metadata": { + "inclusion": "available" + } + }, + { + "breadcrumb": [ + "properties", + "data", + "properties", + "is_large_payload" + ], + "metadata": { + "inclusion": "available" + } + }, { "breadcrumb": [], "metadata": { @@ -139,31 +205,127 @@ "replication_key": "ingested_at", "replication_method": "INCREMENTAL", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cli_events_count": { + "description": "The count of CLI events created from this request", "type": [ "integer", "null" ] }, "created_at": { + "description": "\tDate the event was created", "format": "date-time", "type": [ - "string" + "string", + "null" + ] + }, + "data": { + "additionalProperties": false, + "description": "Request data", + "properties": { + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "properties": {}, + "type": [ + "object", + "null" + ] + }, + { + "items": {}, + "type": "array" + } + ], + "description": "JSON or string representation of the body" + }, + "headers": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "nullable": true, + "type": "string" + }, + "properties": {}, + "type": [ + "object", + "null" + ] + } + ], + "description": "JSON representation of the headers" + }, + "is_large_payload": { + "description": "Whether the payload is considered large payload and not searchable", + "type": [ + "boolean", + "null" + ] + }, + "parsed_query": { + "anyOf": [ + { + "type": [ + "string", + "null" + ] + }, + { + "properties": {}, + "type": [ + "object", + "null" + ] + } + ], + "description": "JSON representation of query params" + }, + "path": { + "description": "Request path", + "type": [ + "string", + "null" + ] + }, + "query": { + "description": "Raw query param string", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "path", + "query", + "parsed_query", + "headers", + "body" + ], + "type": [ + "object", + "null" ] }, "events_count": { + "description": "The count of events created from this request (CLI events not included)", "type": [ "integer", "null" ] }, "id": { - "type": [ - "string" - ] + "description": "ID of the request", + "type": "string" }, "ignored_count": { "type": [ @@ -171,17 +333,8 @@ "null" ] }, - "ingest_priority": { - "enum": [ - "NORMAL", - "LOW" - ], - "type": [ - "string", - "null" - ] - }, "ingested_at": { + "description": "The time the request was originally received", "format": "date-time", "type": [ "string", @@ -189,47 +342,42 @@ ] }, "original_event_data_id": { + "description": "ID of the request data", "type": [ "string", "null" ] }, "rejection_cause": { - "enum": [ - null, - "SOURCE_ARCHIVED", - "NO_WEBHOOK", - "VERIFICATION_FAILED", - "UNSUPPORTED_HTTP_METHOD", - "UNSUPPORTED_CONTENT_TYPE", - "UNPARSABLE_JSON", - "PAYLOAD_TOO_LARGE", - "INGESTION_FATAL", - "UNKNOWN" - ], "type": [ "string", "null" ] }, "source_id": { + "description": "ID of the associated source", "type": [ "string", "null" ] }, "team_id": { + "description": "ID of the project", "type": [ - "string" + "string", + "null" ] }, "updated_at": { + "description": "Date the event was last updated", "format": "date-time", "type": [ - "string" + "string", + "null" ] }, "verified": { + "description": "Whether or not the request was verified when received", "type": [ "boolean", "null" @@ -239,6 +387,14 @@ "required": [ "id", "team_id", + "verified", + "original_event_data_id", + "rejection_cause", + "ingested_at", + "source_id", + "events_count", + "cli_events_count", + "ignored_count", "updated_at", "created_at" ], diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[sources].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[sources].json index 494bae9..2452d0c 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[sources].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[sources].json @@ -51,7 +51,7 @@ { "breadcrumb": [ "properties", - "verification" + "type" ], "metadata": { "inclusion": "available" @@ -60,7 +60,7 @@ { "breadcrumb": [ "properties", - "allowed_http_methods" + "authenticated" ], "metadata": { "inclusion": "available" @@ -69,7 +69,7 @@ { "breadcrumb": [ "properties", - "custom_response" + "config" ], "metadata": { "inclusion": "available" @@ -78,29 +78,7 @@ { "breadcrumb": [ "properties", - "custom_response", - "properties", - "content_type" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "custom_response", - "properties", - "body" - ], - "metadata": { - "inclusion": "available" - } - }, - { - "breadcrumb": [ - "properties", - "archived_at" + "disabled_at" ], "metadata": { "inclusion": "available" @@ -124,15 +102,6 @@ "inclusion": "available" } }, - { - "breadcrumb": [ - "properties", - "disabled_at" - ], - "metadata": { - "inclusion": "available" - } - }, { "breadcrumb": [], "metadata": { @@ -147,76 +116,40 @@ ], "replication_method": "FULL_TABLE", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, + "description": "Associated [Source](#source-object) object", "properties": { - "allowed_http_methods": { - "items": { - "enum": [ - null, - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], - "type": [ - "string" - ] - }, + "authenticated": { + "description": "Whether the source is authenticated", "type": [ - "array", + "boolean", "null" ] }, - "archived_at": { - "format": "date-time", + "config": { + "additionalProperties": true, "type": [ - "string", + "object", "null" ] }, "created_at": { + "description": "Date the source was created", "format": "date-time", "type": [ - "string" - ] - }, - "custom_response": { - "additionalProperties": true, - "properties": { - "body": { - "type": [ - "string" - ] - }, - "content_type": { - "enum": [ - "json", - "text", - "xml" - ], - "type": [ - "string" - ] - } - }, - "required": [ - "content_type", - "body" - ], - "type": [ - "object", + "string", "null" ] }, "description": { + "description": "Description of the source", "type": [ "string", "null" ] }, "disabled_at": { + "description": "Date the source was disabled", "format": "date-time", "type": [ "string", @@ -224,37 +157,43 @@ ] }, "id": { - "type": [ - "string" - ] + "description": "ID of the source", + "type": "string" }, "name": { + "description": "Name for the source", "type": [ - "string" + "string", + "null" ] }, "team_id": { + "description": "ID of the project", "type": [ - "string" + "string", + "null" ] }, - "updated_at": { - "format": "date-time", + "type": { + "description": "Type of the source", "type": [ - "string" + "string", + "null" ] }, - "url": { + "updated_at": { + "description": "Date the source was last updated", + "format": "date-time", "type": [ "string", "null" ] }, - "verification": { - "additionalProperties": true, - "properties": {}, + "url": { + "description": "A unique URL that must be supplied to your webhook's provider", + "format": "URL", "type": [ - "object", + "string", "null" ] } @@ -263,6 +202,10 @@ "id", "name", "team_id", + "url", + "type", + "authenticated", + "disabled_at", "updated_at", "created_at" ], diff --git a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[transformations].json b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[transformations].json index 3a3bb73..64d286f 100644 --- a/tests/__snapshots__/test_schema_evolution/test_catalog_changes[transformations].json +++ b/tests/__snapshots__/test_schema_evolution/test_catalog_changes[transformations].json @@ -98,18 +98,21 @@ ], "replication_method": "FULL_TABLE", "schema": { - "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "code": { + "description": "JavaScript code to be executed", "type": [ - "string" + "string", + "null" ] }, "created_at": { + "description": "Date the transformation was created", "format": "date-time", "type": [ - "string" + "string", + "null" ] }, "encrypted_env": { @@ -120,10 +123,9 @@ }, "env": { "additionalProperties": { - "type": [ - "string" - ] + "type": "string" }, + "description": "Key-value environment variables to be passed to the transformation", "properties": {}, "type": [ "object", @@ -131,9 +133,8 @@ ] }, "id": { - "type": [ - "string" - ] + "description": "ID of the transformation", + "type": "string" }, "iv": { "type": [ @@ -142,19 +143,25 @@ ] }, "name": { + "description": "A unique, human-friendly name for the transformation", "type": [ - "string" + "string", + "null" ] }, "team_id": { + "description": "ID of the project", "type": [ - "string" + "string", + "null" ] }, "updated_at": { + "description": "Date the transformation was last updated", "format": "date-time", "type": [ - "string" + "string", + "null" ] } }, diff --git a/uv.lock b/uv.lock index 72ff7f7..a362baa 100644 --- a/uv.lock +++ b/uv.lock @@ -651,8 +651,8 @@ wheels = [ [[package]] name = "singer-sdk" -version = "0.54.0a7" -source = { registry = "https://pypi.org/simple" } +version = "0.54.0a9.dev2+g2d46e829d" +source = { git = "https://github.com/meltano/sdk.git?rev=main#2d46e829d04dd537320c879fe272ea8cf4ecc244" } dependencies = [ { name = "click" }, { name = "fsspec" }, @@ -673,10 +673,6 @@ dependencies = [ { name = "universal-pathlib" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/df/9eef3e1f4dad3d2c97a897c4227522efc2189347adf3aa49ce16cc1001d8/singer_sdk-0.54.0a7.tar.gz", hash = "sha256:5dd0a591dc334db02c19226fbd2a713ed63b2ec899144dcc9a80c3842fbde271", size = 1377452, upload-time = "2026-03-13T15:09:26.283Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/67/6d012d6f985de2d593919a883567f7e06a3cb3c0cbd3162bb70413f6fac4/singer_sdk-0.54.0a7-py3-none-any.whl", hash = "sha256:98d3820495ef1f23c4995c6002038c60a34d5839c6475f4ee34eb598ecfc2769", size = 214566, upload-time = "2026-03-13T15:09:23.318Z" }, -] [package.optional-dependencies] testing = [ @@ -745,6 +741,7 @@ wheels = [ name = "tap-hookdeck" source = { editable = "." } dependencies = [ + { name = "requests" }, { name = "singer-sdk" }, ] @@ -769,22 +766,25 @@ typing = [ ] [package.metadata] -requires-dist = [{ name = "singer-sdk", specifier = "~=0.54.0a2" }] +requires-dist = [ + { name = "requests", specifier = "~=2.32" }, + { name = "singer-sdk", git = "https://github.com/meltano/sdk.git?rev=main" }, +] [package.metadata.requires-dev] dev = [ { name = "deptry", specifier = ">=0.12" }, { name = "mypy", specifier = "~=1.19.0" }, { name = "pytest", specifier = ">=7.4" }, - { name = "singer-sdk", extras = ["testing"], specifier = "~=0.54.0a2" }, - { name = "syrupy", specifier = ">=5.1.0" }, + { name = "singer-sdk", extras = ["testing"], git = "https://github.com/meltano/sdk.git?rev=main" }, + { name = "syrupy", specifier = ">=5.1" }, { name = "ty", specifier = ">=0.0.1a21" }, ] testing = [ { name = "deptry", specifier = ">=0.12" }, { name = "pytest", specifier = ">=7.4" }, - { name = "singer-sdk", extras = ["testing"], specifier = "~=0.54.0a2" }, - { name = "syrupy", specifier = ">=5.1.0" }, + { name = "singer-sdk", extras = ["testing"], git = "https://github.com/meltano/sdk.git?rev=main" }, + { name = "syrupy", specifier = ">=5.1" }, ] typing = [ { name = "mypy", specifier = "~=1.19.0" },