Tackle.io Referrals API

Create, read, update, and list events on Microsoft Partner Center co-sell referrals (both outbound and inbound).

OpenAPI Specification

tackleio-referrals-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tackle Public Contracts Authentication Referrals API
  description: "Customer-facing read API for cloud marketplace contracts that Tackle has\ningested for your Tackle account.\n\nThe response shape is a stable projection of the underlying\ncontract document. It is intended to be safe to consume long-term: fields\nwill be added over time, but documented fields will not be removed without\ndeprecation notice.\n\n## Authentication\n\nEvery request must include a valid Tackle JWT in the `Authorization`\nheader (`Authorization: Bearer <token>`). Machine-to-machine (MTM) tokens\nissued for your Tackle account are accepted. The token scopes every\nresponse to the account it represents.\n\n## Pagination\n\n`GET /api/contracts` is the only paginated endpoint. Pagination uses an\nopaque `cursor` query parameter:\n\n1. The first request omits `cursor`.\n2. If more pages exist, the response includes a `next` field. Pass that\n   value verbatim back as `cursor` on the next request.\n3. The last page omits `next`.\n\nCursors are opaque tokens. Do not parse, modify, or persist them across\nschema changes — request a fresh page from the start instead.\n"
  version: 1.0.0
servers:
- url: https://contracts.tackle.io
  description: Production
security:
- tackleJwt: []
tags:
- name: Referrals
  description: Create, read, update, and list events on Microsoft Partner Center co-sell referrals (both outbound and inbound).
paths:
  /api/referrals:
    post:
      operationId: createIPReferral
      summary: Create a referral
      description: 'Create a co-sell IP referral and submit it to Microsoft

        Partner Center. The shape of the request and the side effect

        depend on the optional `tackle-operation-id` header (default

        `createIPReferral`); see the header description for the full

        list of sub-operations and when to use each. Returns

        `202 Accepted` immediately with a Tackle referral ID and a

        `requestId` you can correlate to subsequent events via

        `listReferralEvents`.'
      tags:
      - Referrals
      parameters:
      - in: header
        name: tackle-operation-id
        schema:
          type: string
          enum:
          - createIPReferral
          - createDraftIPReferral
          - cloneIPReferral
          - createInboundIPReferral
          description: 'The unique identifier for the operation to perform when creating the referral. The header is optional; when omitted, it defaults to `createIPReferral`.


            - `createIPReferral` (default): Create a new outbound IP co-sell referral and submit it to Microsoft Partner Center.

            - `createDraftIPReferral`: Save a draft referral in Tackle without submitting it to Microsoft. The draft can later be submitted via `POST /api/referrals/{referral_id}` with `tackle-operation-id: createIPReferralFromDraft`.

            - `cloneIPReferral`: Create a new referral by cloning an existing one. The request body must include `trackingInfo.clonedFromOpportunityId` referencing the source referral.

            - `createInboundIPReferral`: **Test-environment-only.** Simulate Microsoft sharing an inbound IP co-sell referral with the ISV without making any real Partner Center calls, so customers can exercise the inbound-referral receive flow end-to-end in a test environment. Production vendors should not use this value; in production environments the request is accepted but no referral is created.'
        required: false
        example: createIPReferral
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReferralInput'
            examples:
              private:
                summary: Create a private referral
                value:
                  name: Test Tackle V3 Private Referral
                  companyWebsite: https://www.example.com
                  mpnId: '1234567'
                  campaignId: someCampaignID
                  dealSensitivity: None
                  customerProfile:
                    name: test
                    isMatchingComplete: true
                    isMaccEligible: false
                    ids:
                    - id: '1234567'
                      profileType: External
                    address:
                      addressLine1: 1 Microsoft Way
                      city: Redmond
                      country: US
                    team:
                    - firstName: Test
                      lastName: Employee
                      phoneNumber: 555 555-5555
                      email: test@example.com
                  consent:
                    consentToShareReferralWithMicrosoftSellers: false
                    consentToToShareInfoWithOthers: true
                    consentToContact: true
                    consentToMicrosoftToContactSpecificPartners: true
                  details:
                    notes: Here are some test notes.
                    dealValue: 500
                    currency: USD
                    closingDateTime: '2025-07-10T05:00:00Z'
                    requirements:
                      customerMarketplaceIntent: HaveNotDecided
                      solutionArea: Data and AI
                      solutionPlay: Data Security
                      solutions:
                      - type: Name
                        id: '1234567'
                        name: Test Solution
                        solutionType: 3P
                        publisherName: example.co
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: cloudcosell@example.com
                  inviteContexts: []
              testEnvironmentInbound:
                summary: Test-environment-only — simulate an inbound referral from Microsoft
                description: 'Use with `tackle-operation-id: createInboundIPReferral`. This is supported

                  only for vendors provisioned for use in a test environment so customers can

                  exercise the inbound-referral receive flow without real Microsoft Partner

                  Center traffic. The first entry in `inviteContexts` represents the inviting

                  organization (e.g. Microsoft); additional entries become related referrals on

                  the engagement.'
                value:
                  name: Test Environment Inbound IP Co-Sell Referral
                  companyWebsite: https://www.example.com
                  mpnId: '1234567'
                  dealSensitivity: None
                  customerProfile:
                    name: test
                    isMatchingComplete: true
                    isMaccEligible: false
                    ids:
                    - id: '1234567'
                      profileType: External
                    address:
                      addressLine1: 1 Microsoft Way
                      city: Redmond
                      country: US
                    team:
                    - firstName: Test
                      lastName: Customer
                      phoneNumber: 555 555-5555
                      email: test@example.com
                  consent:
                    consentToShareReferralWithMicrosoftSellers: true
                    consentToToShareInfoWithOthers: true
                    consentToContact: true
                    consentToMicrosoftToContactSpecificPartners: true
                  details:
                    notes: Test environment inbound referral for receive-flow testing.
                    dealValue: 500
                    currency: USD
                    closingDateTime: '2025-07-10T05:00:00Z'
                    requirements:
                      customerMarketplaceIntent: HaveNotDecided
                      solutionArea: Data and AI
                      solutionPlay: Data Security
                      solutions:
                      - type: Name
                        id: '1234567'
                        name: Test Solution
                        solutionType: 3P
                        publisherName: example.co
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: cloudcosell@example.com
                  inviteContexts:
                  - organizationId: msft
                    organizationName: Microsoft
                    assistanceRequestCode: GeneralOrOther
                    notes: Microsoft is sharing this inbound referral with the ISV in a test environment.
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  tackleId:
                    type: string
                    description: The unique identifier for the opportunity
                  requestId:
                    type: string
                    description: Identifier for the call submitted to Microsoft Partner Center on the caller's behalf. Use it to correlate this response with subsequent referral events.
              example:
                tackleId: tackle-cosell-2jhD8b41CurTOqEsG2Soinublv3
                requestId: 2utc0ITX3k7iCBBNh6CqRLs8yGz
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/referrals/{referral_id}:
    get:
      operationId: getReferral
      summary: Get a referral
      description: 'Returns the current state of a co-sell referral by Tackle

        referral ID, including both the Microsoft Partner Center

        payload (`Referral`) and Tackle-side metadata

        (`ReferralMetadata` -- CRM linkage, sync health, archived

        state, related referrals). Returns `404 Not Found` when the

        referral does not exist for the authenticated vendor.'
      tags:
      - Referrals
      parameters:
      - $ref: '#/components/parameters/referral_id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferralResponse'
              examples:
                getReferral:
                  summary: Get Referral
                  description: You can retrieve the referral information by providing the unique identifier for the referral.
                  value:
                    id: 472b39ec-634e-433e-afea-8421d95d684c
                    engagementId: db56246a-5894-442e-80a7-57f18652262c
                    name: MSFT Test referral
                    createdDateTime: '2025-03-17T12:00:00Z'
                    updatedDateTime: '2025-03-17T12:00:00Z'
                    acceptedDateTime: '2025-03-17T12:00:00Z'
                    status: Closed
                    substatus: Won
                    statusReason: Referral was won
                    type: Shared
                    tags:
                    - IPCosell
                    qualification: SalesQualified
                    customerProfile:
                      name: Test Customer
                      isMatchingComplete: true
                      isMaccEligible: false
                      address:
                        addressLine1: 1 Microsoft Way
                        city: Redmond
                        state: Washington
                        postalCode: '98052'
                        country: US
                      team:
                      - firstName: Test
                        lastName: Employee
                        phoneNumber: 555 555-5555
                        email: test@customer.com
                        emailValidationStatus: None
                        phoneValidationStatus: None
                      ids:
                      - id: 9-VZOAOB6G6
                        profileType: External
                    consent:
                      consentToShareReferralWithMicrosoftSellers: true
                      consentToToShareInfoWithOthers: true
                      consentToContact: true
                      consentToMicrosoftToContactSpecificPartners: true
                    details:
                      notes: test notes
                      dealValue: 1000
                      currency: USD
                      closingDateTime: '2025-07-10T05:00:00Z'
                      requirements:
                        industries: []
                        products: []
                        services: []
                        solutions:
                        - id: d84d9a5b-639f-489d-a95c-100c487def71
                          name: Tackle Cloud GTM Platform
                          solutionType: 3P
                          type: Name
                          publisherName: Tackle.io, Inc.
                        additionalRequirements:
                          iot:
                            azureCertifiedDevice: false
                            attachServices: false
                          attributes:
                          - id: Business Applications
                            type: SolutionArea
                          - id: Accelerate Innovation with Low Code
                            type: SolutionPlay
                          - id: 'No'
                            type: CustomerMarketplaceIntent
                    team:
                    - firstName: Tackle
                      lastName: Tester
                      phoneNumber: '5555555'
                      email: testerupdated@example.com
                      emailValidationStatus: None
                      phoneValidationStatus: None
                    inviteContext:
                      notes: Some notes
                      invitedBy:
                        organizationId: 85ce85b8-faef-4c5f-beaa-e8e704ca6cef
                        organizationName: Tackle.io, Inc.
                      assistanceRequestCode: Unknown
                      invitedMpnId: '5341319'
                    eTag: \"97003301-0000-0100-0000-67d455d30001\"
                    target:
                    - id: d84d9a5b-639f-489d-a95c-100c487def77
                      type: SolutionProfile
                    mpnId: '5341318'
                    direction: Outgoing
                    organizationId: 85ce85b8-faef-4c5f-beaa-e8e704ca6cef
                    organizationName: Tackle.io, Inc.
                    lastModifiedVia: d5e95180-727b-4312-bca9-d46416511ffc
                    lastRunId: 8e797ec8-a0f8-4491-9086-4f1c03bfa7c9
                    favorite: false
                    campaignId: testCampaignUpdated
                    salesStage: '60'
                    quality: Unknown
                    isSpam: false
                    dealSensitivity: None
                    createdVia: d5e95180-727b-4312-bca9-d46416511ffc
                    closedDateTime: '2025-03-17T12:00:00Z'
                    registrationStatus: None
                    links:
                      relatedReferrals:
                        uri: https://api.partner.microsoft.com/v1.0/engagements/referrals?$filter=engagementId eq "db56246a-5894-442e-80a7-57f18652262c"
                        method: GET
                      self:
                        uri: https://api.partner.microsoft.com/v1.0/engagements/referrals/472b39ec-634e-433e-afea-8421d95d684c
                        method: GET
                    metadata:
                      tackleId: tackle-referral-2uJY3sgyqBz1EnKzRpx0PNol13A
                      companyName: Test INC.
                      companyWebsite: www.testInc.com
                      createdDate: '2025-03-17T12:00:00Z'
                      lastModifiedDate: '2025-03-17T12:00:00Z'
                      crmId: 006QL00000BahjGYAR
                      crmOrgId: testOrg
                      hasCloudErrors: false
                      hasSalesforceErrors: false
                      relatedReferrals: []
                      classification: ip
                      dealType: coSell
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      operationId: updateIPReferral
      summary: Update a referral
      description: 'Update a referral. The behavior of the request depends on the

        `tackle-operation-id` header. Sub-operations that look up the

        referral by ID -- in particular `requestSyncFromSalesforce` --

        may return `404 Not Found` when the referral does not exist for

        the authenticated vendor.'
      tags:
      - Referrals
      parameters:
      - $ref: '#/components/parameters/referral_id'
      - in: header
        name: tackle-operation-id
        schema:
          type: string
          enum:
          - updateIPReferral
          - updateDraftIPReferral
          - closeLostReferral
          - closeWonReferral
          - closeErrorReferral
          - acceptIncomingReferral
          - declineIncomingReferral
          - retryCreateIPReferral
          - createIPReferralFromDraft
          - updateReferralCRMID
          - resyncReferralToCRM
          - requestSyncFromSalesforce
          description: "Identifier for the sub-operation to perform when updating\nthe referral. Required. The value selects the request body\nschema and the side-effect -- see the request-body examples\nfor a payload per value.\n\n  - `updateIPReferral` -- update fields on an active outbound IP referral. Body: `UpdateReferralInput`.\n  - `updateDraftIPReferral` -- update fields on a draft referral that has not been submitted to Microsoft. Body: `CreateReferralInput`.\n  - `createIPReferralFromDraft` -- submit a previously-saved draft to Microsoft Partner Center. Body: `CreateReferralInput`.\n  - `retryCreateIPReferral` -- retry a failed create. Body: `CreateReferralInput`.\n  - `closeWonReferral` -- mark the referral closed-won. Body: `{}`.\n  - `closeLostReferral` -- mark the referral closed-lost. Body: `StatusChangedInput` with `statusReason`.\n  - `closeErrorReferral` -- mark the referral closed-error. Body: `StatusChangedInput` with `statusReason`.\n  - `acceptIncomingReferral` -- accept an inbound referral shared by Microsoft. Body: `StatusChangedInput`; supply `team` if the referral has none.\n  - `declineIncomingReferral` -- decline an inbound referral. Body: `StatusChangedInput` with `statusReason`.\n  - `updateReferralCRMID` -- update the CRM linkage only; does not call Microsoft. Body: `StatusChangedInput` with `crmId` / `crmOrgId`.\n  - `resyncReferralToCRM` -- re-push the latest referral state to your CRM. Body: `{}`. Does not call Microsoft.\n  - `requestSyncFromSalesforce` -- pull the latest state from Salesforce. Body: `{}`. Does not call Microsoft. Returns `404` when the referral is not found for the authenticated vendor."
        required: true
        example: updateIPReferral
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/UpdateReferralInput'
              - $ref: '#/components/schemas/CreateReferralInput'
              - $ref: '#/components/schemas/StatusChangedInput'
            examples:
              closeLostReferral:
                summary: Close a referral as lost. Should only include status reason.  Uses the StatusChangedInput schema.
                value:
                  statusReason: NotACustomer:This was not our customer
              closeWonReferral:
                summary: Close a referral as won. Should be an empty object.
                value: {}
              closeErrorReferral:
                summary: Close a referral as error. Should only include status reason.  Uses the StatusChangedInput schema.
                value:
                  statusReason: TestReferral:This was a test.
              declineIncomingReferral:
                summary: Decline an incoming referral. Should only include status reason.  Uses the StatusChangedInput schema.
                value:
                  statusReason: ProjectBudgetNotAdequate:Not enough money.
              acceptIncomingReferral:
                summary: Accept an incoming referral. May include crmID, crmOrgID, or team.  Team must be included if the referral has no team members. Uses the StatusChangedInput schema.
                value:
                  crmId: someSalesforceOpportunityID
                  crmOrgId: someSalesforceOrgID
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: test@test.com
              retryCreateIPReferral:
                summary: Retry creating a referral. Uses the CreateReferralInput schema; supply the same body shape as createIPReferral. See the createIPReferral request examples for a complete payload.
                value:
                  name: Test Tackle V3 Private Referral
                  companyWebsite: https://www.example.com
                  mpnId: '1234567'
                  dealSensitivity: None
                  customerProfile:
                    name: test
                    isMatchingComplete: true
                    isMaccEligible: false
                    address:
                      addressLine1: 1 Microsoft Way
                      city: Redmond
                      country: US
                  consent:
                    consentToShareReferralWithMicrosoftSellers: false
                    consentToToShareInfoWithOthers: true
                    consentToContact: true
                    consentToMicrosoftToContactSpecificPartners: true
                  details:
                    dealValue: 500
                    currency: USD
                    closingDateTime: '2025-07-10T05:00:00Z'
                    requirements:
                      customerMarketplaceIntent: HaveNotDecided
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: cloudcosell@example.com
              updateDraftIPReferral:
                summary: Update a draft referral. Uses the CreateReferralInput schema; supply the same body shape as createIPReferral. See the createIPReferral request examples for a complete payload.
                value:
                  name: Test Tackle V3 Private Referral (updated draft)
                  mpnId: '1234567'
                  dealSensitivity: None
                  customerProfile:
                    name: test
                    isMatchingComplete: true
                    isMaccEligible: false
                    address:
                      addressLine1: 1 Microsoft Way
                      city: Redmond
                      country: US
                  consent:
                    consentToShareReferralWithMicrosoftSellers: false
                    consentToToShareInfoWithOthers: true
                    consentToContact: true
                    consentToMicrosoftToContactSpecificPartners: true
                  details:
                    dealValue: 750
                    currency: USD
                    closingDateTime: '2025-07-10T05:00:00Z'
                    requirements:
                      customerMarketplaceIntent: HaveNotDecided
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: cloudcosell@example.com
              updateReferralCRMID:
                summary: Update the CRM ID of a referral. Should only include crmId and crmOrgId.
                value:
                  crmId: someSalesforceOpportunityID
                  crmOrgId: someSalesforceOrgID
              resyncReferralToCRM:
                summary: Resync a referral to CRM.
                value: {}
              requestSyncFromSalesforce:
                summary: Request a sync from Salesforce for the referral. Request body can be empty.
                value: {}
              updateIPReferral:
                summary: Update a referral.  Uses the UpdateReferralInput schema.
                value:
                  name: Test Tackle V3 Private Referral
                  campaignId: someCampaignID
                  consent:
                    consentToShareReferralWithMicrosoftSellers: false
                  details:
                    notes: Here are some test notes.
                    dealValue: 500
                    currency: USD
                    closingDateTime: '2025-07-10T05:00:00Z'
                    requirements:
                      customerMarketplaceIntent: HaveNotDecided
                      solutions:
                      - type: Name
                        id: '1234567'
                        name: Test Solution
                        solutionType: 3P
                        publisherName: example.co
                  team:
                  - firstName: Cosell
                    lastName: Tackle
                    phoneNumber: '8888888888'
                    email: cloudcosell@example.com
                  inviteContexts:
                  - assistanceRequestCode: GeneralOrOther
                    organizationId: '987654321'
                    organizationName: TEST PARTNER
                    notes: Partner Test Notes Here
                    dealValue: 2
                    currency: USD
                    closingDateTime: '2025-03-03T07:00:00.000Z'
                    solutions:
                    - id: '1234567'
                      type: Name
                      name: Tackle Cloud GTM Platform
                      solutionType: 3P
                      publisherName: Tackle.io, Inc.
                    team:
                    - firstName: Tackle
                      lastName: Tester
                      phoneNumber: '5555555'
                      email: tester@example.com
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  tackleId:
                    type: string
                    description: The unique identifier for the opportunity
                  requestId:
                    type: string
                    description: 'Identifier for the call submitted to Microsoft Partner Center

                      on the caller''s behalf. Always present in the response body.

                      The value is the empty string for sub-operations that do not

                      issue a Partner Center call -- specifically

                      `updateReferralCRMID`, `resyncReferralToCRM`, and

                      `requestSyncFromSalesforce`.'
              example:
                tackleId: tackle-cosell-2jhD8b41CurTOqEsG2Soinublv3
                requestId: 2utc0ITX3k7iCBBNh6CqRLs8yGz
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/referrals/{referral_id}/events:
    get:
      operationId: listReferralEvents
      summary: List referral events
      description: 'Returns the recorded history of a referral as a paginated list

        of events: client-initiated operations (matching the

        `tackle-operation-id` values), Microsoft Partner Center

        responses, and CRM-sync history items. Use this to follow up

        on a `requestId` returned from `createIPReferral` /

        `updateIPReferral`, audit lifecycle changes, or surface

        recent activity to end users. Pagination uses an opaque

        `next` cursor.'
      tags:
      - Referrals
      parameters:
      - $ref: '#/components/parameters/referral_id'
      - in: query
        name: next
        required: false
        description: Pagination cursor returned by a previous call as the `next` field. Omit on the first call.
        schema:
          type: string
          example: re#tackle-cosell-2lsw6vxN7rXsBer0hXABCDEFGH
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  events:
                    type: array
                    items:
                      $ref: '#/components/schemas/ListReferralEvent'
                  next:
                    type: string
                    description: Pagination cursor for the next page of events. Pass this value back as the `next` query parameter to fetch the next page. Omitted when there are no more results.
                    example: re#tackle-cosell-2lsw6vxN7rXsBer0hXABCDEFGH
              examples:
                listReferralEvents:
                  summary: List Referral Events for createIPReferral
                  value:
                    events:
                    - operation: cloudUpdateEvent
                      eventId: 2lsw8uaIoeMT72IRnlRz19gKxXY
                      timestamp: '2024-09-10T15:25:35Z'
                      cloudRaw:
                        id: 472b39ec-634e-433e-afea-8421d95d684c
                        engagementId: db56246a-5894-442e-80a7-57f18652262c
                        name: MSFT Test referral
                        createdDateTime: '2025-03-17T12:00:00Z'
                        updatedDateTime: '2025-03-17T12:00:00Z'
                        acceptedDateTime: '2025-03-17T12:00:00Z'
                        status: Closed
                        substatus: Won
                        statusReason: Referral was won
                        type: Shared
                        tags:
                        - IPCosell
                        qualification: SalesQualified
                        customerProfile:
                          name: Test Customer
                          isMaccEligible: false
                          address:
                            addressLine1: 1 Microsoft Way
                            city: Redmond
                            state: Washington
                            postalCode: '98052'
                            country: US
                          team:
                          - firstName: Test
                            lastName: Employee
                            phoneNumber: 555 555-5555
                            email: test@customer.com
                            emailValidationStatus: None
                            phoneValidationStatus: None
                          ids:
                          - id: 9-VZOAOB6G6
                            profileType: External
                        consent:
                          consentToShareReferralWithMicrosoftSellers: true
                          consentToToShareInfoWithOthers: true
                          consentToContact: true
                          consentToMicrosoftToContactSpecificPartners: true
                        details:
                          notes: test notes
                          dealValue: '1000'
                          currency: USD
                          closingDateTime: '2025-07-10T05:00:00Z'
                          requirements:
                            industries: []
                            products: []
                            services: []
                            solutions:
                            - id: d84d9a5b-639f-489d-a95c-100c487def71
                              name: Tackle Cloud GTM Platform
                              solutionType: 3P
                              type: Name
                              publisherName: Tackle.io, Inc.
                            additionalRequirements:
                              iot:
                                azureCertifiedDevice: false
                                attachServices: false
                              attributes:
      

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