Tackle Webhooks API

Operations for Webhooks

OpenAPI Specification

tackle-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tackle Authentication Webhooks API
  description: Authenticated programmatic access to Tackle's webhooks, metering, private offers, and more.
  version: 1.0.0
  contact:
    name: Tackle Support
    email: support@tackle.io
    url: https://tackle.io
servers:
- url: https://api.tackle.io
tags:
- name: Webhooks
  description: Operations for Webhooks
paths:
  /v1/webhooks:
    parameters: []
    post:
      tags:
      - Webhooks
      summary: Create or Update a Webhook
      description: Create or update an existing webhook to receive order, private offer, and metering events as they happen
      operationId: v1-create-or-update-webhook
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhooksRequest'
            examples:
              example-1-header_api_key_clouds:
                value:
                  url: http://example.com
                  auth:
                    auth_type: header_api_key
                    auth_header_name: header_api_key_authorization
                    api_key: s0m3-3x4mp1e-4p1-k3y
                  filters:
                    supported_clouds:
                    - aws
                  private_offer_events_enabled: false
              example-2-basic_auth_product_id:
                value:
                  url: http://example.com
                  auth:
                    auth_type: basic
                    username: exampleUsername12345
                    password: securePassword67890
                  filters:
                    productid: 12345-abcdef-67890
                  private_offer_events_enabled: false
              example-3-oauth2-auth:
                value:
                  url: http://example.com
                  auth:
                    auth_type: oauth2
                    oauth2:
                      client_id: client-id-example
                      client_secret: client-secret-example
                      token_url: https://www.example.com/oauth-token
                  filters:
                    supported_clouds:
                    - aws
                    - azure
                    - gcp
                    private_offer_events_enabled: false
      security:
      - BearerAuth: []
      callbacks:
        onEvent:
          '{$request.body#/url}':
            post:
              requestBody:
                description: Webhook information; to receive order and private offer events as they happen
                content:
                  application/json:
                    schema:
                      oneOf:
                      - $ref: '#/components/schemas/AWSPrivateOfferCallback'
                      - $ref: '#/components/schemas/AzurePrivateOfferCallback'
                      - $ref: '#/components/schemas/GCPPrivateOfferCallback'
                      - $ref: '#/components/schemas/RedhatPrivateOfferCallback'
                      - $ref: '#/components/schemas/AWSNewOrderCallback'
                      - $ref: '#/components/schemas/AzureNewOrderCallback'
                      - $ref: '#/components/schemas/GCPNewOrderCallback'
                      - $ref: '#/components/schemas/RedhatNewOrderCallback'
              security:
              - BasicAuthCallback: []
              - HeaderApiKeyAuthCallback: []
              - Oauth2AuthCallback: []
              responses:
                '200':
                  description: Returns a `200` code if it accepts the callback
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/ResponseStatusCode'
                        properties:
                          id:
                            type: string
                '400':
                  description: Returns a `400` code if there is an error. Provide error information
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/ResponseStatusCode'
                        properties:
                          id:
                            type: string
    get:
      tags:
      - Webhooks
      summary: Get All Webhooks for Vendor
      description: Get all webhook configurations for a vendor including vendor-level and product-level webhooks
      operationId: v1-get-all-webhooks
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-GET-All'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
      parameters: []
      security:
      - BearerAuth: []
  /v1/webhooks/test:
    post:
      tags:
      - Webhooks
      summary: Test a Webhook
      description: Verify your webhooks by sending a test payload to the configured webhook URL
      operationId: v1-test-webhook
      security:
      - BearerAuth: []
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-Test'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized-MTM'
        '403':
          $ref: '#/components/responses/403-Forbidden'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhooksTestRequest'
            examples:
              example-test-request-with-forward-to-url:
                value:
                  forward_to_url: http://example.com
                  event_type: order_modified
                  productid: 12345-abcdef-67890
              example-test-request:
                value:
                  event_type: order_modified
                  productid: 12345-abcdef-67890
  /v1/webhooks/vendor:
    delete:
      tags:
      - Webhooks
      summary: Delete a Vendor-Level Webhook
      description: Delete an existing vendor-level webhook
      operationId: v1-delete-webhook
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-Deleted-Vendor'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/Webhooks_404-Not-Found-Webhooks'
      security:
      - BearerAuth: []
    get:
      tags:
      - Webhooks
      summary: Get a Vendor-Level Webhook
      operationId: v1-get-vendor-webhook
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-GET'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/Webhooks_404-Not-Found-Webhooks'
      description: Get your current vendor-level webhook configuration
      security:
      - BearerAuth: []
  /v1/webhooks/product/{productid}:
    parameters:
    - $ref: '#/components/parameters/productid_path'
    delete:
      tags:
      - Webhooks
      summary: Delete a Product-Level Webhook
      description: Delete an existing webhook for a given product
      operationId: v1-delete-product-webhook
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-Deleted-Product'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/Webhooks_404-Not-Found-Webhooks'
      security:
      - BearerAuth: []
    get:
      tags:
      - Webhooks
      summary: Get a Product-Level Webhook
      operationId: v1-get-product-webhook
      responses:
        '200':
          $ref: '#/components/responses/Webhooks_200-OK-Webhooks-GET'
        '400':
          $ref: '#/components/responses/400-Bad-Request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/Webhooks_404-Not-Found-Webhooks'
      description: Get your current webhook configuration for a given product
      security:
      - BearerAuth: []
components:
  schemas:
    WebhookUrlResponse:
      type: string
      nullable: true
      description: A valid URL for the endpoint you created to receive Tackle events
      format: uri
      example: https://www.example.com
    RedhatPrivateOfferCallback:
      description: Link to information on Private Offer payload variables https://developers.tackle.io/reference/private-offer-payloads
      type: object
      properties:
        cloud:
          type: string
          example: redhat
        metadata:
          type: object
          properties:
            buyers:
              type: array
              items:
                type: object
                properties:
                  title:
                    type: string
                    example: Sr. Test
                  full_name:
                    type: string
                    example: Someone That Buys
                  email_address:
                    type: string
                    example: test@test.com
            renewal:
              type: boolean
            eula:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: object
            enable_zero_dollar_prices:
              type: boolean
            offer_metadata:
              type: object
              properties:
                type:
                  type: object
                RHM Account ID:
                  type: string
                  example: 123456789
            pre_registration_details:
              type: object
              properties:
                Company:
                  type: string
                  example: Test
            offer_expiration_at:
              type: string
              example: '2022-05-31T00:00:00.000Z'
            pricing:
              type: object
              properties:
                dimensions:
                  type: array
                  items:
                    type: string
        po_ref:
          type: string
          example: redhat#DEMOVENDOR1-redhat-1603121145#None#None#6894afad-1cc2-40fc-8d96-b7f96699d95c
        po_id:
          type: string
          example: 6894afad-1cc2-40fc-8d96-b7f96699d95c
        activities:
          type: array
          items:
            type: object
            properties:
              created_at:
                type: string
                example: '2022-05-27T18:03:37.589597+00:00'
              metadata:
                type: object
                properties:
                  user:
                    type: object
                    properties:
                      name:
                        type: string
                        example: John Smith
                      email:
                        type: string
                        example: john.smith@example.com
                      buyer:
                        type: boolean
              user_id:
                type: string
                example: abc123
              slug:
                type: string
                example: vendor-created-offer
              activity_type:
                type: string
                example: PO
        vendor_id:
          type: string
          example: DEMOVENDOR1
        users_to_notify:
          type: array
          items:
            type: object
            properties:
              value:
                type: string
                example: john smith
              contact_type:
                type: string
                example: auth0
        created_at:
          type: string
          example: '2022-05-27T18:03:37.590560+00:00'
        product_ref:
          type: string
          example: example-redhat-1603100000
        last_modified_at:
          type: string
          example: '2022-05-27T18:03:37.589504+00:00'
    AwsMarketplaceData:
      type: object
      properties:
        data:
          type: object
          properties:
            CustomerAWSAccountId:
              title: CustomerAWSAccountId
              type: string
              description: AWS account ID associated to the customerid for the individual customer
              example: example-account-id
      description: Marketplace data specific to AWS
      title: AWS
    GcpEntitlement:
      type: object
      description: A purchase entitlement from GCP Marketplace
      properties:
        account:
          type: string
          description: The resource name of the account that this entitlement is based on, if any
        consumers:
          type: array
          description: The resources using this entitlement, if applicable
          items:
            type: string
        createTime:
          type: string
          format: date-time
          example: '2020-10-02T15:01:23.045123456Z'
        messageToUser:
          type: string
          description: Provider-supplied message that is displayed to the end user
        name:
          type: string
          description: The resource name of the entitlement
        newPendingPlan:
          type: string
          description: The identifier of the pending new plan, required if the product has plans and the entitlement has a pending plan change
        offer:
          type: string
        offerEndTime:
          type: string
          format: date-time
        plan:
          type: string
          description: The identifier of the plan that was procured, required if the product has plans
        product:
          type: string
          description: The identifier of the product that was procured
        provider:
          type: string
          description: The identifier of the service provider that this entitlement was created against
        productExternalName:
          type: string
        quoteExternalName:
          type: string
        state:
          type: string
          description: The state of the entitlement
        subscriptionEndTime:
          type: string
        updateTime:
          type: string
          format: date-time
          example: '2019-10-25T21:38:20.865Z'
        usageReportingId:
          type: string
          description: The consumerId to use when reporting usage through the Service Control API. See the consumerId field at Reporting Metrics for more details. This field is present only if the product has usage-based billing configured.
      required:
      - account
      - createTime
      - name
      - plan
      - product
      title: GcpEntitlement
    IsFreeTrial:
      type: boolean
      description: Designation for Free Trial
      example: false
      default: false
      readOnly: true
    GCPNewOrderCallback:
      description: Link to New Offer payload variables https://developers.tackle.io/reference/payload-variables
      type: object
      properties:
        event_type:
          type: string
          example: order_created
        vendorid:
          type: string
          example: U9T21A
        productid:
          type: string
          example: tackle-on-gcp
        customerid:
          type: string
          example: E-ABC2-D530-E2FG-H2Q2
        marketplace:
          type: string
          example: gcp
        entitlements:
          type: array
          items:
            type: object
            properties:
              account:
                type: string
                example: providers/tackle-public/accounts/E-ABC2-D530-E2FG-H2Q2
              createTime:
                type: string
                example: '2019-10-25T21:38:20.865Z'
              name:
                type: string
                example: providers/tackle-public/entitlements/416bacaa-94b6-4701-911bf945aab9
              plan:
                type: string
                example: tkl-tier-1
              product:
                type: string
                example: tackle-on-gcp
              state:
                type: string
                example: ENTITLEMENT_ACTIVE
              usage_reporting_id:
                type: string
                example: project_number:1234567890
        properties:
          type: object
          properties:
            Company:
              type: string
              example: Tackle
            Company Address:
              type: string
              example: 104 S. Capitol Blvd.
            Company Website:
              type: string
              example: https://tackle.io
            Email Address:
              type: string
              example: support@tackle.io
            Full Name:
              type: string
              example: Jane Doe
            Phone Number:
              type: string
              example: 1234567890
        offerid:
          type: string
          example: a1b2c3e4-a1b2-a1b2-a1b2-a1b2c3d4e5f6
        contract_metadata:
          type: object
          properties:
            key:
              type: string
              example: value
        private_offer_metadata:
          type: object
          properties:
            buyers:
              type: array
              items:
                type: object
                properties:
                  full_name:
                    type: string
                    example: Example Person
                  email_address:
                    type: string
                    example: example-email@example.com
                  title:
                    type: string
                    example: CEO
            offer_metadata:
              type: object
            renewal:
              type: boolean
            eula:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: string
            enable_zero_dollar_prices:
              type: boolean
            offer_expiration_at:
              type: string
              format: date-time
              example: '2022-08-12T12:00:00+00:00'
            pricing:
              type: object
            pre_registration_details:
              type: object
              properties:
                Company:
                  type: string
                  example: Example Company
        is_free_trial:
          $ref: '#/components/schemas/IsFreeTrial'
        tackle_subscription_id:
          type: string
          example: 52fZSV7JbMI
        marketplace_data:
          $ref: '#/components/schemas/OtherMarketplaceData'
    GCPPrivateOfferCallback:
      description: Link to information on Private Offer payload variables https://developers.tackle.io/reference/private-offer-payloads
      type: object
      properties:
        group_id:
          type: string
          example: 2h58473p-c70i-1234-9d7b-7we9585e2c9w
        created_at:
          type: string
          example: '2022-01-31T23:31:22.166934+00:00'
        actor:
          type: object
          properties:
            email:
              type: string
              example: john.smith@example.com
            name:
              type: string
              example: John Smith
            picture:
              type: string
              example: https://www.example.com/jpeg
            user_id:
              type: string
              example: abc123
        destination:
          type: string
          example: callback
        event_type:
          type: string
          example: private_offer_created
        extra_data:
          type: object
        marketplace:
          type: string
          example: gcp
        offerid:
          type: string
          example: 2h58473p-c70i-1234-9d7b-7we9585e2c9w
        po_id:
          type: string
          example: 2h58473p-c70i-1234-9d7b-7we9585e2c9w
        private_offer_metadata:
          type: object
          properties:
            buyers:
              type: array
              items:
                type: object
                properties:
                  email_address:
                    type: string
                    example: jsmith@example.com
                  full_name:
                    type: string
                    example: John Smith
                  title:
                    type: string
                    example: Example Title
            enable_zero_dollar_prices:
              type: boolean
            eula:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: object
            offer_metadata:
              type: object
            pre_registration_details:
              type: object
              properties:
                Company:
                  type: string
                  example: Example Company
            pricing:
              type: object
              properties:
                dimensions:
                  type: array
                  items:
                    type: string
                duration:
                  type: string
                  example: 1 Months
                marketplace_fee:
                  type: string
                  example: 0
                show_on_email:
                  type: boolean
                version:
                  type: string
                  example: simple-pricing-v2-gcp
            renewal:
              type: boolean
        productid:
          type: string
          example: example-product
        source:
          type: string
          example: po_url
        test:
          type: boolean
        vendorid:
          type: string
          example: 12345
    OtherMarketplaceData:
      description: GCP, Azure, and Red Hat do not currently have marketplace specific data
      type: object
      title: GCP, Azure, or Red Hat
    AzureCustomerId:
      type: string
      description: Azure Subscription ID
      example: 1b3gs3f4-2794-abcd-3fa3-063ga0s3t3re
      minLength: 0
    AwsPricing:
      type: object
      description: Pricing data for AWS
      properties:
        duration:
          type: string
        version:
          type: string
        schedule:
          type: array
          items:
            type: object
        show_on_email:
          type: boolean
        buyers:
          type: array
          items:
            type: object
        dimensions:
          type: array
          items:
            type: object
        monthly_contract_value:
          type: string
        net_contract_value:
          type: string
        total_contract_value:
          type: string
        marketplace_fee:
          type: string
    Metadata:
      title: Metadata
      type: object
      description: Metadata for a given request
      properties:
        link:
          type: string
          format: uri
          example: https://api.tackle.io
      required:
      - link
    WebhookTestExecutionResponse:
      title: WebhookTestExecutionResponse
      type: object
      properties:
        data:
          type: object
          properties:
            body:
              type: object
              properties:
                success:
                  type: boolean
                url:
                  $ref: '#/components/schemas/WebhookUrlResponse'
                auth_type:
                  $ref: '#/components/schemas/AuthType'
                info:
                  description: Helpful information about webhook configuration and the test execution
                  type: array
                  items:
                    type: string
                request:
                  $ref: '#/components/schemas/WebhookTestExecutionResponseRequest'
                response:
                  type: object
                  nullable: true
                  properties:
                    status_code:
                      $ref: '#/components/schemas/ResponseStatusCode'
                    error:
                      type: string
                      nullable: true
                  required:
                  - status_code
        metadata:
          $ref: '#/components/schemas/Metadata'
      required:
      - metadata
    ProductId:
      description: Cloud Marketplace issued ID for a product
      example: abcd-1234-efgh-5678
      anyOf:
      - $ref: '#/components/schemas/AwsProductId'
      - $ref: '#/components/schemas/GcpProductId'
      - $ref: '#/components/schemas/AzureProductId'
      - $ref: '#/components/schemas/RedHatProductId'
    GcpProductId:
      type: string
      description: GCP Solution ID
      example: tackle-for-gcp
      minLength: 0
    WebhooksGetAllResponseObject:
      title: WebhooksGetAllResponse
      type: object
      properties:
        url:
          $ref: '#/components/schemas/WebhookUrl'
        auth_type:
          $ref: '#/components/schemas/AuthType'
        productid:
          type: string
          nullable: true
          description: Product ID for product-level webhook, null if not product-level
        type:
          type: string
          description: Either 'product' or 'vendor' type
          enum:
          - product
          - vendor
    CreatedAt:
      type: string
      description: Creation timestamp, UTC ISO format
      minLength: 1
      format: date-time
    GcpCloud:
      type: string
      description: GCP Cloud
      default: gcp
      enum:
      - gcp
      example: gcp
    WebhookTestExecutionResponseRequest:
      oneOf:
      - $ref: '#/components/schemas/WebhookTestExecutionResponseRequestOrder'
      - $ref: '#/components/schemas/WebhookTestExecutionResponseRequestPO'
    WebhooksGetResponse:
      title: WebhooksGetResponse
      type: object
      properties:
        data:
          type: object
          required:
          - url
          - auth_type
          - filters
          properties:
            url:
              $ref: '#/components/schemas/WebhookUrl'
            auth_type:
              $ref: '#/components/schemas/AuthType'
            filters:
              $ref: '#/components/schemas/WebhooksRequestFilters'
            private_offer_events_enabled:
              $ref: '#/components/schemas/PrivateOfferEventsEnabled'
            metering_events_enabled:
              $ref: '#/components/schemas/MeteringEventsEnabled'
        metadata:
          $ref: '#/components/schemas/Metadata'
      required:
      - data
      - metadata
    AwsCustomerId:
      type: string
      description: AWS Account Reference ID
      example: ij3sXMkN3or
      minLength: 0
    AuthPayload:
      oneOf:
      - $ref: '#/components/schemas/BasicAuth'
      - $ref: '#/components/schemas/HeaderApiKeyAuth'
      - $ref: '#/components/schemas/Oauth2'
      description: An object describing the type of authentication used by your Webhook URL
    CustomerId:
      anyOf:
      - $ref: '#/components/schemas/AwsCustomerId'
      - $ref: '#/components/schemas/GcpCustomerId'
      - $ref: '#/components/schemas/AzureCustomerId'
      - $ref: '#/components/schemas/RedHatCustomerId'
    AzureGcpPricing:
      type: object
      description: Pricing data for Azure and GCP
      properties:
        duration:
          type: integer
        version:
          type: string
        show_on_email:
          type: boolean
        buyers:
          type: array
          items:
            type: object
        dimensions:
          type: array
          items:
            type: object
        monthly_contract_value:
          type: string
        net_contract_value:
          type: string
        total_contract_value:
          type: string
        marketplace_fee:
          type: string
    AwsCloud:
      type: string
      description: AWS Cloud
      default: aws
      enum:
      - aws
      example: aws
    DeleteWebhookResponse:
      title: DeleteWebhookResponse
      type: object
      properties:
        deleted:
          type: boolean
      required:
      - deleted
    AzureEntitlement:
      type: object
      description: A purchase entitlement from Azure Marketplace
      properties:
        plan:
          type: string
        quantity:
          type: integer
        subscription_id:
          type: string
        subscription_name:
          type: string
        offer_id:
          type: string
      required:
      - plan
      - quantity
      - subscription_id
      - subscription_name
      - offer_id
    ResponseStatusCode:
      title: ResponseStatusCode
      description: Client's status code from executing test webhook
      type: integer
      example: 200
    Error:
      title: ErrorResponse
      type: object
      properties:
        code:
          type: string
          description: Error code
          minLength: 0
        error:
          type: string
          description: Error response
          minLength: 0
        errors:
          description: Error details
          type: array
          items: {}
        error_type:
          type: string
          enum:
          - service_exception
          - client_exception
      required:
      - code
      - error
      - errors
    Entitlement:
      description: A purchase entitlement for a given cloud marketplace
      oneOf:
      - $ref: '#/components/schemas/AwsEntitlement'
      - $ref: '#/components/schemas/GcpEntitlement'
      - $ref: '#/components/schemas/AzureEntitlement'
      - $ref: '#/components/schemas/RedHatEntitlement'
      type: object
    OfferId:
      type: string
      description: The AWS issued offer ID, Seller created Azure Plan ID, or the GCP issued Quote ID
    Entitlements:
      type: array
      description: A list of Entitlement objects
      uniqueItems: true
      minItems: 0
      example:
      - dimension: example_dimension_name
        expiration: '2019-04-24T12:23:03.048000+00:00'
        skuid: example_awsdimension_apiname_1
        value: 1
      - dimension: example_dimension_name2
        expiration: '2019-04-24T12:23:03.048000+00:00'
        value: 5
        skuid: example_awsdimension_apiname_1
      items:
        $ref: '#/components/schemas/Entitlement'
      readOnly: true
    AzureNewOrderCallback:
      description: Link to New Offer payload variables https://developers.tackle.io/reference/payload-variables
      type: object
      properties:
        event_type:
          type: string
          example: order_created
        vendorid:
          type: string
          example: U9T21A
        productid:
          type: string
          example: tackle-azure-platform
        customerid:
          type: string
          example: 1b3gs3f4-2794-abcd-3fa3-062fa0s3t3re
        marketplace:
          type: string
          example: azure
        entitlements:
          type: array
          items:
            type: object
            properties:
              plan:
                type: string
                example: tackleazureplatform_azurelisting
              quantity:
                type: integer
                format: int32
                example: 1
              subscription_id:
                type: string
                example: 1b3gs3f4-2794-abcd-3fa3-062fa0s3t3re
              subscription_name:
                type: string
                example: Tackle Azure Platform
              offer_id:
                type: string
                example: tackle-azure-platform
        properties:
          type: object
          properties:
            Company:
              type: string
              example: Tackle
            Company Address:
              type: string
              example: 104 S. Capitol Blvd.
            Company Website:
              type: string
              example: https://tackle.io
            Email Address:
              type: string
              example: support@tackle.io
            Full Name:
              type: string
              example: Jane Doe
            Phone Number

# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tackle/refs/heads/main/openapi/tackle-webhooks-api-openapi.yml