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.

OpenAPI Specification

hookdeck-issues-api-openapi.yml Raw ↑
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