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

# Get All Webhooks

> Retrieves all webhook configurations. Webhooks send HTTP POST callbacks to your specified URL when events occur in Swoogo (e.g., new registration, session check-in, payment received). Each webhook defines the target URL, trigger event type, and which webhook group it belongs to.
<details>
  <summary><b>Available Fields</b></summary>

  <p>These are the standard fields available for configuring a webhook:</p>
  <table>
    <thead>
      <tr>
        <th><strong>Name</strong></th>
        <th><strong>Type</strong></th>
        <th><strong>Description</strong></th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><code>id</code></td>
        <td>integer</td>
        <td>The ID of the webhook.</td>
      </tr>
      <tr>
        <td><code>name</code></td>
        <td>string</td>
        <td>The name of the webhook.</td>
      </tr>
      <tr>
        <td><code>url</code></td>
        <td>string</td>
        <td>The URL that data should be sent to.</td>
      </tr>
      <tr>
        <td><code>trigger_object</code></td>
        <td>string</td>
        <td>The object that will cause the webhook to run.</td>
      </tr>
      <tr>
        <td><code>trigger_on_insert</code></td>
        <td>boolean</td>
        <td>Trigger when the object is inserted.</td>
      </tr>
      <tr>
        <td><code>trigger_on_update</code></td>
        <td>boolean</td>
        <td>Trigger when the object is updated.</td>
      </tr>
      <tr>
        <td><code>trigger_on_delete</code></td>
        <td>boolean</td>
        <td>Trigger when the object is deleted.</td>
      </tr>
      <tr>
        <td><code>fields</code></td>
        <td>array</td>
        <td>Array of fields which, when changed, will cause the webhook to run.</td>
      </tr>
      <tr>
        <td><code>public_user</code></td>
        <td>boolean</td>
        <td>Run the webhook for a public user.</td>
      </tr>
      <tr>
        <td><code>admin_user</code></td>
        <td>boolean</td>
        <td>Run the webhook for an admin user.</td>
      </tr>
      <tr>
        <td><code>api_call</code></td>
        <td>boolean</td>
        <td>Run the webhook on an API call.</td>
      </tr>
      <tr>
        <td><code>any_event</code></td>
        <td>boolean</td>
        <td>Run the webhook for any events (only applicable for some objects such as registrants).</td>
      </tr>
      <tr>
        <td><code>event_ids</code></td>
        <td>array</td>
        <td>Array of event IDs to run the webhook for (if <code>any_event</code> is false).</td>
      </tr>
      <tr>
        <td><code>all_fields</code></td>
        <td>boolean</td>
        <td>Should this run for changes to all fields?</td>
      </tr>
    </tbody>
  </table>
</details>
<details>
  <summary><b>Extra Fields</b></summary>

  <p>Additional information that can be returned by specifying the desired fields in the <code>expand</code> parameter:</p>
  <table>
    <thead>
      <tr>
        <th><strong>Name</strong></th>
        <th><strong>Type</strong></th>
        <th><strong>Description</strong></th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><code>group</code></td>
        <td>object</td>
        <td>Details about the Webhook Group associated with the item.</td>
      </tr>
    </tbody>
  </table>
</details>



## OpenAPI

````yaml /api-reference/openapi.yaml get /webhooks
openapi: 3.1.0
info:
  title: Swoogo API
  version: 1.0.0
  summary: REST API for the Swoogo event management platform
  description: >
    The Swoogo API provides programmatic access to manage events, registrants,
    sessions,

    speakers, sponsors, and related resources on the Swoogo event management
    platform.


    ## Authentication


    The API uses OAuth 2.0 with the **client credentials** grant type.


    1. **Get your credentials** — Log in to Swoogo and go to **My Profile > API
    Credentials**
       to find your consumer key and secret.
    2. **Encode credentials** — URL-encode the key and secret (RFC 1738),
    concatenate them
       with a colon (`key:secret`), then Base64-encode the result.
    3. **Request a token** — `POST /oauth2/token` with your encoded credentials
    in the
       `Authorization: Basic {encoded}` header and `grant_type=client_credentials` in the body.
    4. **Use the token** — Include `Authorization: Bearer {access_token}` on all
    subsequent requests.


    > Tokens expire after **30 minutes**. Request a new token when you receive a
    `401` response.


    ## Rate Limiting


    API requests are rate-limited to **2,000 requests per 10-minute window** per
    API credential.

    List endpoints cost **10 credits** per call; all other endpoints cost **1
    credit**.

    Rate limit status is returned in response headers:


    | Header | Description |

    |--------|-------------|

    | `X-Rate-Limit-Limit` | Maximum requests allowed in the current window |

    | `X-Rate-Limit-Remaining` | Requests remaining in the current window |

    | `X-Rate-Limit-Reset` | Seconds until the window resets |


    When the limit is exceeded, the API returns `429 Too Many Requests`.


    ## Pagination


    All list endpoints return paginated results in this envelope:


    ```json

    {
      "items": [...],
      "_links": { "self": { "href": "..." }, "first": { "href": "..." }, "last": { "href": "..." } },
      "_meta": { "totalCount": 95, "pageCount": 5, "currentPage": 1, "perPage": 20 }
    }

    ```


    Control pagination with these query parameters:


    | Parameter | Default | Max | Description |

    |-----------|---------|-----|-------------|

    | `page` | 1 | — | Page number (1-indexed) |

    | `per-page` | 20 | 1000 | Items per page. Capped at **200** when using
    `expand`. |


    Pagination metadata is also returned in `X-Pagination-*` response headers.


    ## Filtering and Sorting


    Use the `search` parameter to filter results. Combine multiple conditions
    with `&`.


    **Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`,
    `*beginswith*`, `*endswith*`, `*in*`


    **Examples:**

    - `search=registration_status=confirmed` — exact match

    - `search=created_at>=2024-01-01` — date range

    - `search=last_name=*beginswith*Sm` — starts with "Sm"

    - `search=status=*in*confirmed|attended` — matches any value
    (pipe-separated)

    - `search=id>100&registration_status=confirmed` — multiple conditions (AND
    by default)


    Set `searchCondition=or` to match **any** condition instead of all.


    Use `sort` to order results. Prefix with `-` for descending:
    `sort=-created_at`.


    ## Field Selection and Expansion


    Use `fields` to request only the fields you need:
    `fields=id,email,first_name,last_name`.

    When omitted, a default subset of fields is returned.


    Use `expand` to include related objects in the response:
    `expand=homeAddress,sessions`.

    Each resource documents its available expand values. Using `expand` caps the
    page size at **200**.


    ## Errors


    All errors return a consistent JSON response:


    ```json

    {
      "name": "Not Found",
      "message": "The requested resource does not exist.",
      "code": 0,
      "status": 404
    }

    ```


    | Status | Meaning |

    |--------|---------|

    | `400` | Bad Request — invalid parameters or business rule violation |

    | `401` | Unauthorized — missing or expired bearer token |

    | `403` | Forbidden — valid token but insufficient permissions |

    | `404` | Not Found — resource does not exist or is not accessible |

    | `422` | Unprocessable Entity — validation errors on input fields |

    | `429` | Too Many Requests — rate limit exceeded |

    | `500` | Internal Server Error — unexpected server error |


    ## Webhooks


    Swoogo can send HTTP callbacks when resources are created, updated, or
    deleted.

    Configure webhooks via the API or the Swoogo UI. Supported trigger objects:

    `event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`,

    `session_attendance`, `registrant_line_item`.


    Webhook payloads can be sent as `json` (application/json) or `post`
    (form-encoded).
  termsOfService: https://www.swoogo.com/terms
  contact:
    name: Swoogo Developer Support
    url: https://developer.swoogo.com
    email: dev@swoogo.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.swoogo.com/api/v1
    description: Production API server
  - url: https://local.swoogo.com/api/v1
    description: Local API server
security: []
tags:
  - name: Authentication
    description: Obtain and manage OAuth 2.0 bearer tokens for API access.
  - name: Events
    description: >-
      Events are the top-level resource in Swoogo. An event represents a
      conference, meeting, webinar, or other gathering. Most resources
      (registrants, sessions, speakers, sponsors) are scoped to an event via
      `event_id`. Use events to manage scheduling, capacity, registration
      windows, and event metadata.
  - name: Registrants
    description: >-
      Registrants are individuals who have registered for an event. Each
      registrant belongs to one event and carries a registration status, package
      selection, session choices, and financial data (fees, taxes, payments).
      Registrants can be checked in, emailed, approved/denied, and assigned to
      groups.
  - name: Sessions
    description: >-
      Sessions are individual agenda items within an event — talks, workshops,
      panels, or breaks. Sessions have scheduling (date, start/end time,
      timezone), capacity limits, location assignments, track categorization,
      and optional fees. Registrants select sessions during registration.
  - name: Speakers
    description: >-
      Speakers are presenters associated with event sessions. Each speaker has
      profile information (name, bio, company, photo) and can be linked to one
      or more sessions.
  - name: Sponsors
    description: >-
      Sponsors are organizations or individuals providing support for events.
      Sponsors have profile data, custom fields, and optional attendance
      tracking.
  - name: Contacts
    description: >-
      Contacts are people in your Swoogo CRM, independent of any specific event.
      Contacts can be linked to registrants across multiple events and managed
      via invitation lists.
  - name: Registrant Types
    description: >-
      Registration types (reg types) define categories of attendees for an event
      — such as "Attendee", "Exhibitor", or "VIP". Each reg type can have its
      own capacity, naming, and group size constraints.
  - name: Packages
    description: >-
      Packages define pricing tiers for event registration. A package specifies
      the fee amount, early bird pricing, and which sessions or features are
      included. Registrants select a package during registration.
  - name: Discount Codes
    description: >-
      Discount codes provide percentage or absolute discounts on registration
      fees. Codes can have capacity limits, group size requirements, and
      apply-to-all or selective targeting. Codes can be cloned to create
      variants.
  - name: Transactions
    description: >-
      Transactions record financial activity for registrants — payments,
      refunds, and credits. Supports offline payment types (credit card, wire
      transfer, check, cash, etc.) and integration with payment gateways.
  - name: Registrant Sessions
    description: >-
      Manage which sessions a registrant is enrolled in. Add or remove session
      assignments.
  - name: Registrant Session Waitlists
    description: >-
      Manage waitlist entries for sessions that are at capacity. Add or remove
      waitlist positions.
  - name: Registrant Groups
    description: >-
      Manage group registration assignments. Add or remove registrants from
      registration groups.
  - name: Registrant Line Items
    description: >-
      View itemized financial line items for registrant orders, including fees,
      taxes, and discounts.
  - name: Registrant Line Item Audits
    description: View the audit trail for changes to registrant line items.
  - name: Event Fields
    description: >-
      Manage custom fields on events. Create, update, and delete event-level
      custom field definitions.
  - name: Event Questions
    description: View event questions configured for registration forms.
  - name: Event Websites
    description: View websites associated with events.
  - name: Event Badges
    description: Manage event badges. Generate badge PDFs for registrants.
  - name: Event Folders
    description: View event folders used to organize events in the Swoogo dashboard.
  - name: Session Fields
    description: >-
      Manage custom fields on sessions. Create, update, and delete session-level
      custom field definitions.
  - name: Session Locations
    description: >-
      Manage physical or virtual locations where sessions take place. Locations
      can be assigned to sessions and include name, capacity, and address
      information.
  - name: Session Attendance
    description: Track and manage session attendance records for registrants.
  - name: Session Scans
    description: Record and manage check-in scans for session attendance.
  - name: Session Fees
    description: Manage pricing for individual sessions, including early bird rates.
  - name: Package Fees
    description: Manage pricing for packages, including early bird rates.
  - name: Tracks
    description: >-
      Tracks group related sessions into thematic categories (e.g., "Technical",
      "Business", "Keynotes"). Registrants can filter sessions by track.
  - name: Pages
    description: View pages associated with event websites.
  - name: Speaker Sessions
    description: >-
      Manage the association between speakers and sessions. Assign or remove
      speakers from sessions.
  - name: Sponsor Fields
    description: >-
      Manage custom fields on sponsors. Create, update, and delete sponsor-level
      custom field definitions.
  - name: Sponsor Attendance
    description: View sponsor attendance records for events.
  - name: Contact Fields
    description: View custom field definitions for contacts.
  - name: Invitation Lists
    description: >-
      Invitation lists are curated groups of contacts used for targeted event
      invitations and access control. Manage lists and their contact
      memberships.
  - name: Data Lists
    description: >-
      Data lists store reusable sets of key-value options used in custom fields
      (e.g., dropdown choices, checkbox options). Manage lists and their items.
  - name: Data List Items
    description: Manage individual items within a data list.
  - name: Call for Speaker Contacts
    description: Manage contacts who have submitted to a call for speakers program.
  - name: Call for Speaker Reviews
    description: Manage reviews of call for speaker submissions.
  - name: Call for Speaker Submissions
    description: Manage speaker submissions to a call for speakers program.
  - name: Images
    description: >-
      Upload, retrieve, and delete images associated with resources
      (registrants, speakers, sponsors, etc.).
  - name: Webhooks
    description: >-
      Configure HTTP callbacks that fire when resources are created, updated, or
      deleted. Webhooks support JSON and form-encoded payloads, custom headers,
      and retry logic.
  - name: Webhook Groups
    description: >-
      Organize webhooks into groups for easier management. A webhook group
      contains one or more webhooks that share common configuration.
paths:
  /webhooks:
    get:
      tags:
        - Webhooks
      summary: Get All Webhooks
      description: >-
        Retrieves all webhook configurations. Webhooks send HTTP POST callbacks
        to your specified URL when events occur in Swoogo (e.g., new
        registration, session check-in, payment received). Each webhook defines
        the target URL, trigger event type, and which webhook group it belongs
        to.

        <details>
          <summary><b>Available Fields</b></summary>

          <p>These are the standard fields available for configuring a webhook:</p>
          <table>
            <thead>
              <tr>
                <th><strong>Name</strong></th>
                <th><strong>Type</strong></th>
                <th><strong>Description</strong></th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td><code>id</code></td>
                <td>integer</td>
                <td>The ID of the webhook.</td>
              </tr>
              <tr>
                <td><code>name</code></td>
                <td>string</td>
                <td>The name of the webhook.</td>
              </tr>
              <tr>
                <td><code>url</code></td>
                <td>string</td>
                <td>The URL that data should be sent to.</td>
              </tr>
              <tr>
                <td><code>trigger_object</code></td>
                <td>string</td>
                <td>The object that will cause the webhook to run.</td>
              </tr>
              <tr>
                <td><code>trigger_on_insert</code></td>
                <td>boolean</td>
                <td>Trigger when the object is inserted.</td>
              </tr>
              <tr>
                <td><code>trigger_on_update</code></td>
                <td>boolean</td>
                <td>Trigger when the object is updated.</td>
              </tr>
              <tr>
                <td><code>trigger_on_delete</code></td>
                <td>boolean</td>
                <td>Trigger when the object is deleted.</td>
              </tr>
              <tr>
                <td><code>fields</code></td>
                <td>array</td>
                <td>Array of fields which, when changed, will cause the webhook to run.</td>
              </tr>
              <tr>
                <td><code>public_user</code></td>
                <td>boolean</td>
                <td>Run the webhook for a public user.</td>
              </tr>
              <tr>
                <td><code>admin_user</code></td>
                <td>boolean</td>
                <td>Run the webhook for an admin user.</td>
              </tr>
              <tr>
                <td><code>api_call</code></td>
                <td>boolean</td>
                <td>Run the webhook on an API call.</td>
              </tr>
              <tr>
                <td><code>any_event</code></td>
                <td>boolean</td>
                <td>Run the webhook for any events (only applicable for some objects such as registrants).</td>
              </tr>
              <tr>
                <td><code>event_ids</code></td>
                <td>array</td>
                <td>Array of event IDs to run the webhook for (if <code>any_event</code> is false).</td>
              </tr>
              <tr>
                <td><code>all_fields</code></td>
                <td>boolean</td>
                <td>Should this run for changes to all fields?</td>
              </tr>
            </tbody>
          </table>
        </details>

        <details>
          <summary><b>Extra Fields</b></summary>

          <p>Additional information that can be returned by specifying the desired fields in the <code>expand</code> parameter:</p>
          <table>
            <thead>
              <tr>
                <th><strong>Name</strong></th>
                <th><strong>Type</strong></th>
                <th><strong>Description</strong></th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td><code>group</code></td>
                <td>object</td>
                <td>Details about the Webhook Group associated with the item.</td>
              </tr>
            </tbody>
          </table>
        </details>
      operationId: getAllWebhooks
      parameters:
        - name: fields
          in: query
          schema:
            type: string
            example: >-
              id,name,url,content_type,post_field_data,use_default_fields,custom_fields,notes,trigger_object,trigger_on_insert,trigger_on_update,trigger_on_delete,all_fields,fields,public_user,admin_user,api_call,any_event,event_ids,created_at,created_by,updated_at,updated_by
          description: >-
            string - optional - Comma separated list of fields you want to
            return
        - name: expand
          in: query
          schema:
            type: string
            example: ''
          description: >-
            string - optional - Comma separated list of objects you want to
            return
        - name: search
          in: query
          schema:
            type: string
            example: id>123
          description: >-
            string - optional - Filter conditions to narrow the results. Valid
            operators are =, !=, >=, <=, >, <, *contains*, *beginswith*,
            *endswith*
        - name: page
          in: query
          schema:
            type: string
            example: '1'
          description: integer - optional - The page of results you want to view
        - name: per-page
          in: query
          schema:
            type: string
            example: '5'
          description: >-
            integer - optional - The number of results per page (to a max of
            200)
        - name: sort
          in: query
          schema:
            type: string
          description: >-
            string - optional - Sort the results (add - in front for opposite
            sort direction, e.g. "-id")
        - name: ids
          in: query
          schema:
            type: string
          description: >-
            Comma-separated list of IDs to retrieve. When provided, only records
            matching these IDs are returned. All values must be positive
            integers. Maximum 100 IDs per request.
          example: 1,2,3
      responses:
        '200':
          description: Collection
          headers:
            x-rate-limit-limit:
              $ref: '#/components/headers/RateLimitLimit'
            x-rate-limit-remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            x-rate-limit-reset:
              $ref: '#/components/headers/RateLimitReset'
            x-pagination-current-page:
              $ref: '#/components/headers/PaginationCurrentPage'
            x-pagination-page-count:
              $ref: '#/components/headers/PaginationPageCount'
            x-pagination-per-page:
              $ref: '#/components/headers/PaginationPerPage'
            x-pagination-total-count:
              $ref: '#/components/headers/PaginationTotalCount'
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: The name of the webhook.
                          example: Sample Webhook
                        url:
                          type: string
                          description: The URL that data should be sent to.
                          required: true
                          example: https://www.example.com/webhook
                        trigger_object:
                          type: string
                          enum:
                            - event
                            - contact
                            - registrant
                            - speaker
                            - sponsor
                            - session
                            - session_attendance
                            - registrant_line_item
                          description: The object that will cause the webhook to trigger.
                          example: registrant
                        group_id:
                          type: integer
                          description: Identifier for the webhook group.
                        headers:
                          type: array
                          items:
                            type: object
                            properties:
                              key:
                                type: string
                                description: Header key.
                                example: Authorization
                              value:
                                type: string
                                description: Header value.
                                example: Bearer token
                          description: Array of headers for the webhook.
                          example:
                            - key: Authentication
                              value: Bearer Token
                        trigger_on_insert:
                          type: boolean
                          description: Trigger the webhook when the object is inserted.
                          example: true
                        trigger_on_update:
                          type: boolean
                          description: Trigger the webhook when the object is updated.
                          example: true
                        trigger_on_delete:
                          type: boolean
                          description: Trigger the webhook when the object is deleted.
                          example: false
                        public_user:
                          type: boolean
                          description: Run the webhook for public users.
                          example: false
                        admin_user:
                          type: boolean
                          description: Run the webhook for admin users.
                          example: true
                        api_call:
                          type: boolean
                          description: Trigger the webhook during an API call.
                          example: true
                        all_fields:
                          type: boolean
                          description: Run the webhook for changes to all fields.
                          example: false
                        any_event:
                          type: boolean
                          description: Run the webhook for any event.
                          example: false
                        use_default_fields:
                          type: boolean
                          description: Use default fields for the webhook.
                          example: true
                        enabled:
                          type: boolean
                          description: Indicates whether the webhook is enabled.
                          example: true
                        event_ids:
                          type: array
                          items:
                            type: integer
                          description: List of event IDs to trigger the webhook.
                          example:
                            - 1
                            - 2
                            - 3
                        fields:
                          type: array
                          items:
                            type: object
                            description: >-
                              Custom JSON object fields that trigger the
                              webhook.
                          description: Array of fields to trigger the webhook when changed.
                          example:
                            - value
                        content_type:
                          type: string
                          enum:
                            - json
                            - post
                          description: The content type for webhook payloads.
                          example: json
                        notes:
                          type: string
                          description: Additional notes for the webhook.
                          example: This webhook is for test purposes.
                        post_field_data:
                          type: array
                          items:
                            type: string
                            enum:
                              - id
                              - value
                          description: Fields to include in the webhook POST data.
                          example:
                            - id
                            - value
                        custom_fields:
                          description: Custom fields for the webhook (type unspecified).
                          type: array
                          items:
                            type: object
                            properties:
                              key:
                                type: string
                                description: Key to identify value on response.
                                example: event_id
                              type:
                                type: string
                                enum:
                                  - event
                                  - contact
                                  - registrant
                                  - speaker
                                  - sponsor
                                  - session
                                  - session_attendance
                                  - registrant_line_item
                                description: >-
                                  The object that will cause the webhook to
                                  trigger.
                                example: registrant
                              value:
                                type: string
                                description: Field name.
                                example: id
                          example:
                            - key: event_id
                              type: registrant
                              value: event_id
                  _links:
                    type: object
                    properties:
                      self:
                        type: object
                        properties:
                          href:
                            type: string
                            example: ''
                      first:
                        type: object
                        properties:
                          href:
                            type: string
                            example: ''
                      last:
                        type: object
                        properties:
                          href:
                            type: string
                            example: ''
                  _meta:
                    type: object
                    properties:
                      totalCount:
                        type: integer
                        example: 1
                      pageCount:
                        type: integer
                        example: 1
                      currentPage:
                        type: integer
                        example: 1
                      perPage:
                        type: integer
                        example: 20
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  headers:
    RateLimitLimit:
      schema:
        type: integer
      description: Maximum number of API requests allowed in the current 10-minute window.
      example: 2000
    RateLimitRemaining:
      schema:
        type: integer
      description: Number of requests remaining in the current rate limit window.
      example: 1367
    RateLimitReset:
      schema:
        type: integer
      description: Number of seconds until the current rate limit window resets.
      example: 0
    PaginationCurrentPage:
      schema:
        type: integer
      description: The current page number in the paginated result set.
      example: 1
    PaginationPageCount:
      schema:
        type: integer
      description: Total number of pages available based on the current `per-page` value.
      example: 5
    PaginationPerPage:
      schema:
        type: integer
      description: Number of items returned per page.
      example: 20
    PaginationTotalCount:
      schema:
        type: integer
      description: Total number of items matching the query across all pages.
      example: 95
  responses:
    Unauthorized:
      description: >-
        Authentication failed. The bearer token is missing, expired, or invalid.
        Obtain a new token via `POST /oauth2/token`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Unauthorized
            message: Your request was made with invalid credentials.
            code: 0
            status: 401
    Forbidden:
      description: >-
        The authenticated user does not have permission to access this resource.
        This can occur if the resource belongs to a different account or the API
        credentials lack the required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Forbidden
            message: You do not have access to that resource.
            code: 0
            status: 403
    NotFound:
      description: >-
        The specified resource does not exist or has been deleted. Verify the ID
        is correct and that the resource belongs to an event your credentials
        have access to.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Not Found
            message: The requested resource does not exist.
            code: 0
            status: 404
    InternalServerError:
      description: >-
        An unexpected server error occurred. If this persists, contact Swoogo
        support with the request details and timestamp.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Internal Server Error
            message: An error occurred while processing your request.
            code: 0
            status: 500
  schemas:
    ErrorResponse:
      type: object
      description: Standard error response returned for all 4xx and 5xx status codes.
      properties:
        name:
          type: string
          description: >-
            Human-readable error type name (e.g., "Unauthorized", "Forbidden",
            "Not Found").
          example: Unauthorized
        message:
          type: string
          description: Detailed error message explaining what went wrong.
          example: Your request was made with invalid credentials.
        code:
          type: integer
          description: >-
            Application-specific error code. Currently `0` for all standard
            errors.
          example: 0
        status:
          type: integer
          description: HTTP status code of the error response.
          example: 401
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: access_token
      description: >-
        OAuth 2.0 bearer token obtained from `POST /oauth2/token`. Tokens expire
        after 30 minutes. Include in the `Authorization` header as `Bearer
        {access_token}`.

````