openapi: 3.0.1 info: title: Hookdeck Bookmarks Attempts Bulk retry events API version: 1.0.0 description: Save bookmarked events for quick replay and convenient one-click testing during development. contact: name: Hookdeck Support url: https://hookdeck.com/contact-us email: info@hookdeck.com servers: - url: https://api.hookdeck.com/2025-07-01 description: Production API security: - bearerAuth: [] - basicAuth: [] tags: - name: Bulk retry events description: Bulk retry operations allow you to retry many events at once. A bulk retry is first estimated, then created, then processed asynchronously. paths: /bulk/events/retry: get: operationId: getEventBulkRetries summary: Retrieve events bulk retries description: This endpoint lists events bulk retries. 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 events bulk retry description: This endpoint creates and starts an events bulk retry using the provided query. 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 events bulk retry plan description: This endpoint estimates the number of events matched by the provided query before creating a bulk retry. Use the plan to preview impact. 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: Retrieve events bulk retry description: This endpoint retrieves a specific events bulk retry. 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 events bulk retry description: This endpoint cancels a pending or in-progress events bulk retry. 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 components: schemas: EventStatus: type: string enum: - SCHEDULED - QUEUED - HOLD - SUCCESSFUL - FAILED - CANCELLED 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 OrderByDirection: anyOf: - enum: - asc - enum: - desc - enum: - ASC - enum: - DESC BatchOperationPaginatedResult: type: object properties: pagination: $ref: '#/components/schemas/SeekPagination' count: type: integer models: type: array items: $ref: '#/components/schemas/BatchOperation' additionalProperties: false 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 - INTERNAL_ERROR - 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 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 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 securitySchemes: bearerAuth: type: http scheme: bearer basicAuth: type: http scheme: basic