> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gigstack.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Read webhook configuration operation

> Read the same operation after an uncertain response. Inspect operation.status: HTTP 200 does not mean installation completed. The data field is the current endpoint or null, including after later deletion. Keys are never replayed. Do not automatically submit a new operation or repeat secret entry.



## OpenAPI

````yaml openapi.json GET /webhooks/configuration-operations/{operationId}
openapi: 3.0.3
info:
  title: gigstack API v2
  description: >
    # gigstack API v2


    Build customer, invoice and payment integrations. Start with the
    [quickstart](https://docs.gigstack.io/quickstart), then select the [issuing
    country](https://docs.gigstack.io/concepts/shared-fields).


    ## Authentication and environments


    Use Authorization: Bearer YOUR_API_KEY. Standard live and test keys use
    https://api.gigstack.io/v2. Internal staging uses
    https://gigstack-staging-9z9nnaat.uc.gateway.dev/v2 and separate keys. Test
    mode is a data mode within an environment; a body field does not switch a
    key's mode.


    See [authentication](https://docs.gigstack.io/authentication) for key
    handling, OAuth team scope and gigstack Connect. Internal partner
    provisioning is outside this public contract; health probes have their own
    security declarations. Operations marked unavailable have no configured
    public gateway route.


    ## Read the operation contract


    Response envelopes, pagination and retry rules differ by endpoint. HTTP
    success alone does not prove external fiscal completion or movement of
    money. Reconcile ambiguous writes before retrying. Use [responses and
    recovery](https://docs.gigstack.io/responses) and the operation's error
    codes; document credits and daily limits are not generic retryable rate
    limits.


    The issuing team's configuration selects Mexico or Colombia; customer
    country and currency do not. Read
    [Mexico](https://docs.gigstack.io/countries/mexico) or
    [Colombia](https://docs.gigstack.io/countries/colombia) before choosing
    fiscal fields. Accepted public input differs from a provider's direct
    payload.


    Examples and schema checks do not imply every operation has been executed
    live. [Verification coverage](https://docs.gigstack.io/verification)
    distinguishes source review, offline checks and observed staging behavior.
    Documentation describes operations and does not authorize execution.
  version: 2.0.0
  contact:
    name: Gigstack API Support
    url: https://gigstack.io
    email: support@gigstack.io
  license:
    name: Proprietary
    url: https://gigstack.io/terms
  termsOfService: https://gigstack.io/terms
servers:
  - url: https://api.gigstack.io/v2
    description: >
      Public API for standard live and test-mode keys. Test data is isolated by
      the key mode

      (`livemode: false`). Internal staging is a separate deployment and key
      store; see

      https://docs.gigstack.io/authentication#environments for its base URL.
security:
  - bearerAuth: []
externalDocs:
  description: Complete API Documentation & Guides
  url: https://docs.gigstack.io
paths:
  /webhooks/configuration-operations/{operationId}:
    get:
      tags:
        - Webhooks
      summary: Read webhook configuration operation
      description: >-
        Read the same operation after an uncertain response. Inspect
        operation.status: HTTP 200 does not mean installation completed. The
        data field is the current endpoint or null, including after later
        deletion. Keys are never replayed. Do not automatically submit a new
        operation or repeat secret entry.
      operationId: getWebhookConfigurationOperation
      parameters:
        - $ref: '#/components/parameters/TeamParameter'
        - name: operationId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Safe operation status and current endpoint, if it still exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookConfigurationResult'
              example:
                success: true
                data:
                  id: wh_example
                  url: https://receiver.example/webhook
                  events:
                    - payment.succeeded
                  status: inactive
                  owner: user_example
                  created_at: 1709090576567
                  version: v2
                  type: null
                  revision: >-
                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  effect_scope: shared_team_webhooks
                  security:
                    header_names: []
                    configured: false
                    status: not_configured
                  signing:
                    enabled: false
                    configured: false
                    status: disabled
                operation:
                  operation_id: ae7388d2-79d2-4333-9eb8-33b1a1e21b58
                  team_id: team_example
                  webhook_id: wh_example
                  action: create
                  status: completed
                  created_at: 1709090576567
                  effect_scope: shared_team_webhooks
                  secret_attempts: 0
                  error: null
                  credential_delivery: not_replayed
        '403':
          description: Current administrator authority or credential is no longer valid.
        '404':
          description: Operation does not exist in this team and credential scope.
        '503':
          description: Current credential or operation state could not be confirmed.
      security:
        - bearerAuth: []
components:
  parameters:
    TeamParameter:
      name: team
      in: query
      required: false
      schema:
        type: string
      description: >
        **gigstack Connect:** Target team ID for multi-team access.


        Requires gigstack Connect enabled on your team and shared billing
        account.


        Also requires the `multipleIssuerAccounts` feature on your plan.
        Requests targeting a

        team other than the one your API key belongs to return `403` without it.


        Only API keys can use it: an OAuth access token sent with another team's
        id is rejected with

        `403 Team mismatch with OAuth token`.


        **Optional — omit it entirely** unless you are acting on another team.
        It deliberately

        carries no example value so generated snippets do not emit
        `?team=undefined`; when the

        parameter is absent, the team is derived from your API key.


        **Example:** `?team=team_xyz789`
  schemas:
    WebhookConfigurationResult:
      type: object
      additionalProperties: false
      required:
        - success
        - data
        - operation
      properties:
        success:
          type: boolean
        data:
          type: object
          additionalProperties: false
          required:
            - id
            - url
            - events
            - status
            - owner
            - created_at
            - version
            - type
            - revision
            - effect_scope
            - security
            - signing
          properties:
            id:
              type: string
            url:
              type: string
              format: uri
            events:
              type: array
              items:
                $ref: '#/components/schemas/WebhookEventType'
            status:
              type: string
              enum:
                - active
                - inactive
            description:
              type: string
              nullable: true
            owner:
              type: string
            created_at:
              type: number
            version:
              type: string
              nullable: true
              enum:
                - v1
                - v2
                - null
            type:
              type: string
              nullable: true
              enum:
                - gigstack_connect
                - null
            revision:
              type: string
              pattern: ^[0-9a-f]{64}$
            effect_scope:
              type: string
              enum:
                - shared_team_webhooks
            security:
              type: object
              additionalProperties: false
              required:
                - header_names
                - configured
                - status
              properties:
                header_names:
                  type: array
                  items:
                    type: string
                configured:
                  type: boolean
                status:
                  type: string
                  enum:
                    - not_configured
                    - configured
                    - pending
                    - failed
            signing:
              type: object
              additionalProperties: false
              required:
                - enabled
                - configured
                - status
              properties:
                enabled:
                  type: boolean
                configured:
                  type: boolean
                status:
                  type: string
                  enum:
                    - disabled
                    - configured
                    - pending
                    - failed
          nullable: true
        operation:
          $ref: '#/components/schemas/WebhookConfigurationOperation'
    WebhookEventType:
      type: string
      description: Event type a webhook can subscribe to.
      enum:
        - payment.created
        - payment.updated
        - payment.succeeded
        - payment.canceled
        - payment.deleted
        - payment.upcoming_due_date
        - invoice.created
        - invoice.canceled
        - invoice.failed
        - invoice_batch.completed
        - receipt.created
        - receipt.updated
        - receipt.completed
        - receipt.deleted
        - customer.created
        - customer.updated
        - customer.deleted
        - service.created
        - service.updated
        - service.deleted
        - sat.invoice.synced
        - teams.created
        - teams.sat.completed
        - teams.stripe.completed
        - teams.openpay.completed
        - teams.sat.manifest.signed
      example: sat.invoice.synced
    WebhookConfigurationOperation:
      type: object
      additionalProperties: false
      required:
        - operation_id
        - team_id
        - webhook_id
        - action
        - status
        - created_at
        - effect_scope
        - secret_attempts
        - error
        - credential_delivery
      properties:
        operation_id:
          type: string
          format: uuid
        team_id:
          type: string
        webhook_id:
          type: string
        action:
          type: string
          enum:
            - create
            - update
        status:
          type: string
          enum:
            - processing
            - completed
            - outcome_unknown
            - conflict
        created_at:
          type: number
        effect_scope:
          type: string
          enum:
            - shared_team_webhooks
        secret_attempts:
          type: integer
          minimum: 0
        error:
          type: string
          nullable: true
        credential_delivery:
          type: string
          enum:
            - not_replayed
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        **Authentication Method:** HTTP Bearer token.


        The runtime requires the literal `Bearer ` prefix — a bare token in the

        `Authorization` header is rejected with `401 unauthorized`.


        **Header Format:** `Authorization: Bearer YOUR_API_KEY`


        Your API key is a JWT. Live keys operate on live data (`livemode:
        true`);

        test keys operate on isolated test data (`livemode: false`).


        **Get your key at:**
        [app.gigstack.pro/settings?tab=api](https://app.gigstack.pro/settings?tab=api)


        **Errors:** credential failures are answered by the authentication layer
        with a raw

        `{ "message": … }` body, not the standardized envelope — `401` for a
        missing, malformed or

        expired token, `403` for a revoked key or a plan without API access. See
        the `Unauthorized`

        and `AuthForbidden` responses.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.