Tackle Webhooks API

Operations for Webhooks

Operations 7

POST /v1/webhooks Create or Update a Webhook #
GET /v1/webhooks Get All Webhooks for Vendor #
POST /v1/webhooks/test Test a Webhook #
DELETE /v1/webhooks/vendor Delete a Vendor-Level Webhook #
GET /v1/webhooks/vendor Get a Vendor-Level Webhook #
DELETE /v1/webhooks/product/{productid} Delete a Product-Level Webhook #
GET /v1/webhooks/product/{productid} Get a Product-Level Webhook #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tackle-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tackle-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
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:
    WebhookTestExecutionResponseRequestPO:
      title: WebhookTestExecutionResponseRequestPO
      type: object
      properties:
        test:
          type: boolean
        destination:
          type: string
          enum:
          - callback
        private_offer_metadata:
          $ref: '#/components/schemas/PrivateOfferMetadata'
        extra_data:
          type: object
        source:
          type: string
        offerid:
          $ref: '#/components/schemas/OfferId'
        group_id:
          $ref: '#/components/schemas/GroupId'
        po_id:
          $ref: '#/components/schemas/PrivateOfferId'
        actor:
          $ref: '#/components/schemas/Actor'
        customerid:
          $ref: '#/components/schemas/CustomerId'
        event_type:
          $ref: '#/components/schemas/EventType'
        vendorid:
          $ref: '#/components/schemas/VendorId'
        productid:
          $ref: '#/components/schemas/ProductId'
        marketplace:
          $ref: '#/components/schemas/Clouds'
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        tackle_subscription_id:
          $ref: '#/components/schemas/SubscriptionId'
        is_free_trial:
          $ref: '#/components/schemas/IsFreeTrial'
    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
    GetWebhooksResponseList:
      title: GetWebhooksResponseList
      type: array
      items:
        $ref: '#/components/schemas/WebhooksGetAllResponseObject'
    WebhooksGetAllResponseObject:
      title: WebhooksGetAllResponse
      type: object
      properties:
        url:
          $ref: '#/components/schemas/WebhookUrl'
        auth_type:
          $ref: '#/components/schemas/AuthType'
        productid:
          type:
          - string
          - 'null'
          description: Product ID for product-level webhook, null if not product-level
        type:
          type: string
          description: Either 'product' or 'vendor' type
          enum:
          - product
          - vendor
    GroupId:
      type: string
    GcpCloud:
      type: string
      description: GCP Cloud
      default: gcp
      enum:
      - gcp
      example: gcp
    Actor:
      type: object
      properties:
        name:
          type: string
        user_id:
          type: string
        email:
          type: string
        picture:
          type: string
    VendorId:
      type: string
      description: Tackle issued identifier for the Vendor
    WebhookUrlResponse:
      type:
      - string
      - 'null'
      description: A valid URL for the endpoint you created to receive Tackle events
      format: uri
      example: https://www.example.com
    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
    AzureCloud:
      type: string
      description: Azure Cloud
      default: azure
      enum:
      - azure
      example: azure
    RedHatSubscriptionRenewType:
      type: string
      description: Renew Type
      enum:
      - ORIGINAL_TERM
      - TERMINATE
      example: ORIGINAL_TERM
    AwsCloud:
      type: string
      description: AWS Cloud
      default: aws
      enum:
      - aws
      example: aws
    OtherMarketplaceData:
      description: GCP, Azure, and Red Hat do not currently have marketplace specific data
      type: object
      title: GCP, Azure, or Red Hat
    OfferId:
      type: string
      description: The AWS issued offer ID, Seller created Azure Plan ID, or the GCP issued Quote ID
    AwsCustomerId:
      type: string
      description: AWS Account Reference ID
      example: ij3sXMkN3or
      minLength: 0
    AwsEntitlement:
      properties:
        dimension:
          type: string
        skuid:
          type: string
        expiration:
          type: string
          format: date-time
          example: '2019-04-24T12:23:03.048000+00:00'
        value:
          type: integer
      required:
      - dimension
      - skuid
      - expiration
      - value
      example:
        dimension: example_dimension_name
        expiration: '2019-04-24T12:23:03.048000+00:00'
        skuid: example_awsdimension_apiname_1
        value: 1
      description: 'A purchase entitlement from AWS Marketplace '
    WebhooksTestRequest:
      title: WebhooksTestRequest
      type: object
      properties:
        productid:
          $ref: '#/components/schemas/ProductId'
        event_type:
          $ref: '#/components/schemas/EventType'
        forward_to_url:
          $ref: '#/components/schemas/WebhookUrlResponse'
      required:
      - productid
      - event_type
    AzureProductId:
      type: string
      description: Azure Offer ID
      example: tackle-azure-platform
      minLength: 0
    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
    WebhookTestExecutionResponseRequestOrder:
      title: WebhookTestExecutionResponseRequestOrder
      type: object
      properties:
        vendorid:
          $ref: '#/components/schemas/VendorId'
        productid:
          $ref: '#/components/schemas/ProductId'
        customerid:
          $ref: '#/components/schemas/CustomerId'
        offerid:
          $ref: '#/components/schemas/OfferId'
        entitlements:
          $ref: '#/components/schemas/Entitlements'
        properties:
          $ref: '#/components/schemas/RegistrationDetails'
        marketplace:
          $ref: '#/components/schemas/Clouds'
        event_type:
          $ref: '#/components/schemas/EventType'
        tackle_subscription_id:
          $ref: '#/components/schemas/SubscriptionId'
        is_free_trial:
          $ref: '#/components/schemas/IsFreeTrial'
      required:
      - vendorid
      - productid
      - customerid
      - marketplace
      - event_type
    PrivateOfferEventsEnabled:
      type: boolean
      title: PrivateOfferEventsEnabled
      description: 'This setting registers webhooks for private offer events. Note: This setting can only be configured on a vendor level webhook but applies to all webhooks, including the vendor level webhook and all product level webhooks'
      default: false
    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
    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'
    Clouds:
      anyOf:
      - $ref: '#/components/schemas/AwsCloud'
      - $ref: '#/components/schemas/GcpCloud'
      - $ref: '#/components/schemas/AzureCloud'
      - $ref: '#/components/schemas/RedHatCloud'
      description: A string identifying a cloud marketplace
    PrivateOfferMetadata:
      type: object
      description: Contains information for a private offer associated with the subscription
      properties:
        renewal:
          type: boolean
          description: Whether the private offer has a renewal
        offer_expiration_at:
          type: string
          description: When the private offer expires.
        pricing:
          description: Pricing information for private offer.
          oneOf:
          - $ref: '#/components/schemas/AwsPricing'
          - $ref: '#/components/schemas/AzureGcpPricing'
    WebhooksUpsertResponse:
      title: WebhooksUpsertResponse
      type: object
      properties:
        data:
          type: object
          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'
          required:
          - url
          - auth_type
          - filters
        metadata:
          $ref: '#/components/schemas/Metadata'
      required:
      - metadata
    AzurePrivateOfferCallback:
      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: '2021-11-09T16:29:24.707456+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
        customer_id:
          type: string
          example: 1b3gs3f4-2794-abcd-3fa3-062fa0s3t3re
        destination:
          type: string
          example: callback
        event_type:
          type: string
          example: private_offer_created
        extra_data:
          type: object
        marketplace:
          type: string
          example: azure
        offerid:
          type: string
          example: 00-000-apitest-private
        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: john.smith@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: string
            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: object
                    properties:
                      dimension_value:
                        type: string
                        example: 0
                      name:
                        type: string
                        example: 00-000-apitest-private
                      price:
                        type: string
                        example: 0
                      quantity:
                        type: integer
                        format: int32
                        example: 1
                duration:
                  type: string
                  example: Annual
                marketplace_fee:
                  type: string
                  example: 0
                monthly_contract_value:
                  type: string
                  example: 0
                net_contract_value:
                  type: string
                  example: 0
                show_on_email:
                  type: boolean
                total_contract_value:
                  type: string
                  example: 0
                version:
                  type: string
                  example: simple-pricing-v1-azure
            renewal:
              type: boolean
        productid:
          type: string
          example: example-product
        source:
          type: string
          example: po_url
        test:
          type: boolean
        vendorid:
          type: string
          example: 12345
    CustomerId:
      anyOf:
      - $ref: '#/components/schemas/AwsCustomerId'
      - $ref: '#/components/schemas/GcpCustomerId'
      - $ref: '#/components/schemas/AzureCustomerId'
      - $ref: '#/components/schemas/RedHatCustomerId'
    ProductIdFilter:
      title: ProductIdFilter
      type: object
      properties:
        productid:
          $ref: '#/components/schemas/ProductId'
      required:
      - productid
    RedHatEntitlement:
      type: object
      description: A purchase entitlement from Red Hat Marketplace
      properties:
        subscription_id:
          type: string
        edition_id:
          type: string
          description: Unique ID of the product's edition being subscribed to
        edition_name:
          type: string
          description: Readable name for the edition
        attributes:
          type: object
          description: Optional customer properties
        term:
          type: integer
          description: The duration of a single subscription term
        term_unit:
          $ref: '#/components/schemas/RedHatTermUnit'
        term_end_date:
          type: string
          description: The new term end date in format YYYY-MM-DD
          format: date
          example: '2021-11-02'
        type:
          $ref: '#/components/schemas/RedHatSubscriptionType'
        renew_type:
          $ref: '#/components/schemas/RedHatSubscriptionRenewType'
      required:
      - subscription_id
      - edition_id
      - edition_name
      - attributes
      - term
      - term_unit
      - term_end_date
      - type
      - renew_type
    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
    RegistrationDetails:
      type: object
      minProperties: 3
      example:
        Company: Tackle
        Email Address: support@tackle.io
        Full Name: Jane Doe
        Company Website: https://tackle.io
        Phone Number: '1234567890'
      description: "Registration details of a purchaser that map to defined registration page fields for a given listing.\nThe following fields are required at a minimum:\n  - Company\n  - Email Address\n  - Full Name\nAdditional fields may be supplied, where the key matches the name of the custom registration field defined for a given listing.\nCustom registration fields may be defined on a per listing basis on the Settings page for a given listing via Tackle Platform UI:\n  https://downstream.tackle.io/listings/productid-goes-here/settings\n"
      properties:
        Company:
          type: string
          description: Company name of purchaser
          minLength: 0
        Email Address:
          type: string
          format: email
          description: Valid email address of purchaser
        Full Name:
          type: string
          description: Full name of purchaser
          minLength: 0
      required:
      - Company
      - Email Address
      - Full Name
    AWSPrivateOfferCallback:
      description: Link to information on Private Offer payload variables https://developers.tackle.io/reference/private-offer-payloads
      type: object
      properties:
        actor:
          type: object
          properties:
            email:
              type: string
              example: john.smith@example.com
            name:
              type: string
              example: John Smith
            picture:
              type: string
          

# --- 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