Hookdeck Issues API
Track issues that occur on events, requests, and backpressure, and manage the triggers (rules) that open and route issues to Slack, Email, Microsoft Teams, Discord, BetterUptime, and other channels.
Track issues that occur on events, requests, and backpressure, and manage the triggers (rules) that open and route issues to Slack, Email, Microsoft Teams, Discord, BetterUptime, and other channels.
openapi: 3.0.1
info:
title: Hookdeck Bookmarks Attempts Issues 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: Issues
description: Issues lets you track problems in your project and communicate resolution steps with your team.
paths:
/issues:
get:
operationId: getIssues
summary: Retrieve issues
description: This endpoint lists issues, or a subset of issues.
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: Retrieve an issue
description: This endpoint retrieves a specific issue.
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 an issue
description: This endpoint updates an issue's status.
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: This endpoint dismisses an issue.
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
components:
schemas:
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
AttemptStatus:
type: string
enum:
- FAILED
- SUCCESSFUL
description: Attempt status
DestinationConfigMockAPIAuthBearerToken:
type: object
properties:
token:
type: string
additionalProperties: false
x-docs-type: BEARER_TOKEN
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
OrderByDirection:
anyOf:
- enum:
- asc
- enum:
- desc
- enum:
- ASC
- enum:
- DESC
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
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'
EventStatus:
type: string
enum:
- SCHEDULED
- QUEUED
- HOLD
- SUCCESSFUL
- FAILED
- CANCELLED
IssueCount:
type: object
properties:
count:
type: integer
description: Number of issues
example: 5
required:
- count
additionalProperties: false
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
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
IssueStatus:
type: string
enum:
- OPENED
- IGNORED
- ACKNOWLEDGED
- RESOLVED
description: Issue status
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.
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
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
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
DestinationConfigCLIAuthEmpty:
nullable: true
x-docs-hide: true
x-docs-nullable: true
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
DestinationTypeConfigHTTP:
type: object
properties:
url:
type: string
format: URL
rate_limit:
type: number
fo
# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hookdeck/refs/heads/main/openapi/hookdeck-issues-api-openapi.yml