Talon.One Customer data platforms API

You can integrate with any customer data platform, or CDP, using the following endpoints designed for third-party tools, rather than your own integration layer. Use these endpoints to automate the creation of coupon and referral codes and deliver them to specific customer segments.

Operations 7

PUT /cdp/customer_profile/{customerProfileId} Update customer profile (CDP) #
PUT /cdp/customer_profile/{customerProfileId}/audiences Update customer profile audiences using external ID (CDP) #
PUT /cdp/customer_profiles/audiences Update audiences in multiple customer profiles (CDP) #
PUT /cdp/v2/customer_profiles/audiences Update audiences in multiple customer profiles using external ID (CDP) #
POST /cdp/audiences Create audience (CDP) #
PUT /cdp/audiences/{audienceId} Update audience (CDP) #
DELETE /cdp/audiences/{audienceId} Delete audience (CDP) #

Documentation

Specifications

Other Resources

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/talon-one-customer-data-platforms-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

talon-one-customer-data-platforms-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: ''
  title: Third-party Customer data platforms API
  description: "Use the Third-party API to exchange data between Talon.One and one of the supported [technology partners](https://docs.talon.one/docs/dev/technology-partners/overview).\n\nFor example, use the Braze-specific endpoints from your Braze campaigns to interact with Talon.One.\n\nIf the CDP or CEP you are using isn't listed here, use the generic\n[Customer Data Platforms](#tag/Customer-data-platforms) and [Customer Engagement Platform](#tag/Customer-engagement-platforms) endpoints.\n\n> [!note] \n> All endpoints of this API start with `https://integration.talon.one`.\n> You must specify the base URL of your deployment in the headers or parameters.\n\n> [!note] **Are you looking for a different API?**\n> - To implement use cases that aren't covered by the Third-party API, see the [Integration API](https://docs.talon.one/management-api).\n> - To interact with the Campaign Manager for back-office operations, see the [Management API](https://docs.talon.one/management-api).\n"
servers:
- url: https://integration.talon.one
security:
- ApiKeyAuth: []
tags:
- name: Customer data platforms
  description: 'You can integrate with any customer data platform, or CDP, using the following endpoints designed for third-party tools, rather than your own integration layer.


    Use these endpoints to automate the creation of coupon and referral codes and deliver them to specific customer segments.

    '
paths:
  /cdp/customer_profile/{customerProfileId}:
    parameters:
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    - $ref: '#/components/parameters/skipNonExistingAttributes'
    put:
      tags:
      - Customer data platforms
      parameters:
      - name: customerProfileId
        in: path
        description: The integration ID of the customer profile. If the customer profile does not exist, it will be created.
        required: true
        example: customer1
        schema:
          type: string
      summary: Update customer profile (CDP)
      operationId: cdp/updateCustomerProfile
      description: 'Update or create a [customer profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles). This endpoint triggers the Rule Builder.


        You can use this endpoint for the following tasks:

        - Set attributes for the given customer profile. Ensure you create the attributes in the Campaign Manager first.

        - Add the customer profile to audiences or remove it from audiences.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CDPCustomerProfileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationStateV2'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /cdp/customer_profile/{customerProfileId}/audiences:
    parameters:
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    put:
      tags:
      - Customer data platforms
      parameters:
      - name: customerProfileId
        in: path
        description: The integration ID of the customer profile. If the customer profile does not exist, it will be created.
        required: true
        example: customer1
        schema:
          type: string
      summary: Update customer profile audiences using external ID (CDP)
      operationId: cdp/updateCustomerProfileAudiences
      description: 'Add a [customer profile](https://docs.talon.one/docs/dev/concepts/entities/customer-profiles) to or remove it from a list of audiences. This endpoint triggers the Rule Builder.


        To identify the audience, you can use its ID in the third-party integration.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleCustomerProfileIntegrationAudiencesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationStateV2'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /cdp/customer_profiles/audiences:
    parameters:
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    put:
      tags:
      - Customer data platforms
      summary: Update audiences in multiple customer profiles (CDP)
      operationId: cdp/updateCustomerProfilesAudiences
      description: 'Update the specified audiences for the specified profiles.


        If a provided customer profile doesn''t exist, it will be created.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerProfilesAudiencesRequest'
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /cdp/v2/customer_profiles/audiences:
    parameters:
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    put:
      tags:
      - Customer data platforms
      summary: Update audiences in multiple customer profiles using external ID (CDP)
      operationId: cdp/v2/updateCustomerProfilesAudiences
      description: 'Update the specified audiences for the specified profiles. To identify the audience, you can use its ID in the third-party integration.


        If a provided customer profile doesn''t exist, it will be created.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerProfilesIntegrationAudiencesRequest'
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /cdp/audiences:
    parameters:
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    post:
      tags:
      - Customer data platforms
      summary: Create audience (CDP)
      operationId: cdp/createAudience
      description: 'Create an audience. The audience can be created directly from scratch or can come from third party platforms.


        Once you create your first audience, audience-specific rule conditions are enabled in the Rule Builder.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAndUpdateAudienceRequest'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAndUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/AudienceAlreadyExist'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /cdp/audiences/{audienceId}:
    parameters:
    - $ref: '#/components/parameters/audienceId'
    - $ref: '#/components/parameters/customerDataPlatformName'
    - $ref: '#/components/parameters/destinationHostname'
    put:
      tags:
      - Customer data platforms
      summary: Update audience (CDP)
      operationId: cdp/updateAudience
      description: 'Update an audience created by a third-party integration.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAndUpdateAudienceRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAndUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    delete:
      tags:
      - Customer data platforms
      summary: Delete audience (CDP)
      operationId: cdp/deleteAudience
      description: 'Delete an audience created by a third-party integration.


        **Warning:** This endpoint also removes any associations recorded between a customer profile and this audience.

        '
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    limitConfig:
      type: object
      required:
      - action
      - limit
      - entities
      properties:
        action:
          type: string
          description: "The limitable action to which this limit applies. For example:\n - `setDiscount`\n - `setDiscountEffect`\n - `redeemCoupon`\n - `createCoupon`\n"
          example: createCoupon
        limit:
          type: number
          minimum: 0
          example: 1000
          description: The value to set for the limit.
        period:
          description: The period on which the budget limit recurs.
          type: string
          enum:
          - daily
          - weekly
          - monthly
          - yearly
          example: yearly
        entities:
          type: array
          description: The entity that this limit applies to.
          example:
          - Coupon
          items:
            type: string
            enum:
            - Coupon
            - Referral
            - Profile
            - Identifier
    newCampaign:
      type: object
      properties:
        name:
          type: string
          title: Campaign Name
          description: A user-facing name for this campaign.
          minLength: 1
          example: Summer promotions
        description:
          type: string
          title: Campaign Description
          description: A detailed description of the campaign.
          example: Campaign for all summer 2021 promotions
        startTime:
          type: string
          format: date-time
          description: Timestamp when the campaign will become active.
          example: '2021-07-20T22:00:00Z'
        endTime:
          type: string
          format: date-time
          description: Timestamp the campaign will become inactive.
          example: '2021-09-22T22:00:00Z'
        attributes:
          type: object
          description: Arbitrary properties associated with this campaign.
          additionalProperties: true
        state:
          type: string
          enum:
          - enabled
          - disabled
          - archived
          default: enabled
          description: 'A disabled or archived campaign is not evaluated for rules or coupons.

            '
        activeRulesetId:
          type: integer
          description: '[ID of Ruleset](https://docs.talon.one/management-api#operation/getRulesets) this

            campaign applies on customer session evaluation.

            '
        tags:
          type: array
          description: A list of tags for the campaign.
          example:
          - summer
          maxItems: 50
          items:
            type: string
            minLength: 1
            maxLength: 50
        features:
          type: array
          description: The features enabled in this campaign.
          example:
          - coupons
          - referrals
          items:
            type: string
            enum:
            - coupons
            - referrals
            - loyalty
            - giveaways
        couponSettings:
          $ref: '#/components/schemas/codeGeneratorSettings'
        referralSettings:
          $ref: '#/components/schemas/codeGeneratorSettings'
        limits:
          type: array
          description: 'The set of [budget limits](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-budgets) for this campaign.

            '
          items:
            $ref: '#/components/schemas/limitConfig'
        campaignGroups:
          type: array
          description: 'The IDs of the [campaign groups](https://docs.talon.one/docs/product/account/managing-campaign-groups) this campaign belongs to.

            '
          example:
          - 1
          - 3
          items:
            type: integer
      required:
      - name
      - state
      - tags
      - limits
      - features
    effectProps:
      type: object
      oneOf:
      - $ref: '#/components/schemas/acceptCouponEffectProps'
      - $ref: '#/components/schemas/acceptReferralEffectProps'
      - $ref: '#/components/schemas/redeemReferralEffectProps'
      - $ref: '#/components/schemas/rejectCouponEffectProps'
      - $ref: '#/components/schemas/rejectReferralEffectProps'
      - $ref: '#/components/schemas/couponCreatedEffectProps'
      - $ref: '#/components/schemas/referralCreatedEffectProps'
      - $ref: '#/components/schemas/setDiscountEffectProps'
      - $ref: '#/components/schemas/setDiscountPerItemEffectProps'
      - $ref: '#/components/schemas/setDiscountPerAdditionalCostEffectProps'
      - $ref: '#/components/schemas/triggerWebhookEffectProps'
      - $ref: '#/components/schemas/addLoyaltyPointsEffectProps'
      - $ref: '#/components/schemas/deductLoyaltyPointsEffectProps'
      - $ref: '#/components/schemas/addFreeItemEffectProps'
      - $ref: '#/components/schemas/showNotificationEffectProps'
      - $ref: '#/components/schemas/updateAttributeEffectProps'
      - $ref: '#/components/schemas/rollbackCouponEffectProps'
      - $ref: '#/components/schemas/rollbackReferralEffectProps'
      - $ref: '#/components/schemas/rollbackDiscountEffectProps'
      - $ref: '#/components/schemas/rollbackAddedLoyaltyPointsEffectProps'
      - $ref: '#/components/schemas/rollbackDeductedLoyaltyPointsEffectProps'
      - $ref: '#/components/schemas/showBundleMetadataEffectProps'
      - $ref: '#/components/schemas/awardGiveawayEffectProps'
      - $ref: '#/components/schemas/willAwardGiveawayEffectProps'
      - $ref: '#/components/schemas/errorEffectProps'
      - $ref: '#/components/schemas/customEffectProps'
      - $ref: '#/components/schemas/setDiscountPerAdditionalCostPerItemEffectProps'
    referral:
      allOf:
      - $ref: '#/components/schemas/entity'
      - $ref: '#/components/schemas/newReferral'
      - $ref: '#/components/schemas/importEntity'
      - type: object
        x-attributable: true
        required:
        - code
        - usageCounter
        - usageLimit
        properties:
          code:
            type: string
            title: Referral code
            description: The referral code.
            minLength: 4
            example: 27G47Y54VH9L
          usageCounter:
            type: integer
            title: Referral code Usages
            description: The number of times this referral code has been successfully used.
            example: 1
          batchId:
            type: string
            title: Batch ID
            description: The ID of the batch the referrals belong to.
            example: tqyrgahe
    customerProfile:
      allOf:
      - $ref: '#/components/schemas/entity'
      - $ref: '#/components/schemas/accountEntity'
      - properties:
          attributes:
            $ref: '#/components/schemas/attributeValuePairs'
          integrationId:
            type: string
            format: string
            example: URNGV8294NV
            maxLength: 1000
            description: The integration ID for this entity sent to and used in the Talon.One system.
          closedSessions:
            type: integer
            title: Closed sessions
            description: The total amount of closed sessions by a customer. A closed session is a successful purchase.
            example: 3
          totalSales:
            type: number
            description: Sum of all purchases made by this customer
            example: 299.99
            title: Total Sales
          audienceMemberships:
            type: array
            description: A list of audiences the customer belongs to
            items:
              type: object
              required:
              - id
              - name
              properties:
                id:
                  $ref: '#/components/schemas/id'
                name:
                  type: string
                  title: Audience Name
                  description: The Name of the audience belonging to this entity.
                  example: audience1
            title: Audience memberships
          lastActivity:
            type: string
            format: date-time
            description: 'Timestamp of the most recent event received from this customer.

              This field is updated on calls that trigger the rule-engine and that are

              not [dry requests](https://docs.talon.one/docs/dev/integration-api/dry-requests#overlay).


              For example, [reserving a coupon](https://docs.talon.one/integration-api#operation/createCouponReservation)

              for a customer doesn''t impact this field.

              '
            example: '2020-02-08T14:15:20Z'
    deleteAudienceIds:
      type: array
      description: The IDs of the audiences for the customer to leave.
      example:
      - 4
      - 5
      - 6
      items:
        $ref: '#/components/schemas/id'
    inventoryReferral:
      allOf:
      - $ref: '#/components/schemas/referral'
      - type: object
        x-attributable: true
        required:
        - referredCustomers
        properties:
          referredCustomers:
            type: array
            description: An array of referred customers.
            items:
              type: string
    additionalCost:
      type: object
      properties:
        price:
          description: Price of the additional cost.
          type: number
          example: 4.5
    id:
      type: integer
      title: ID
      description: Unique ID for this entity.
      format: int64
      example: 6
      minimum: 1
    loyalty:
      type: object
      description: Customer specific information about loyalty points.
      required:
      - programs
      properties:
        cards:
          title: Point balances of the loyalty cards used.
          description: Displays information about the balances of the loyalty cards.
          type: array
          items:
            $ref: '#/components/schemas/loyaltyCard'
        programs:
          type: object
          title: Customer's current loyalty program balance.
          description: Displays information about point balances in profile-based programs.
          additionalProperties:
            $ref: '#/components/schemas/loyaltyProgramLedgers'
    triggerWebhookEffectProps:
      type: object
      description: The properties specific to the "triggerWebhook" effect. This gets triggered whenever a validated rule contained a "trigger webhook" effect. This is communicated as an FYI and should usually not require action on your side.
      required:
      - webhookId
      - webhookName
      properties:
        webhookId:
          type: number
          description: The ID of the webhook that was triggered.
        webhookName:
          type: string
          description: The name of the webhook that was triggered.
    CreateAndUpdateAudienceRequest:
      type: object
      required:
      - audienceId
      - audienceName
      properties:
        audienceId:
          $ref: '#/components/schemas/audienceId'
        audienceName:
          $ref: '#/components/schemas/audienceName'
    loyaltyProgramEntity:
      type: object
      required:
      - programID
      properties:
        programID:
          type: integer
          description: The ID of the loyalty program that owns this entity.
          example: 125
    deleteIntegrationAudienceIds:
      type: array
      description: The external IDs of the audiences for the customer to leave.
      example:
      - external_id_4
      - external_id_5
      - external_id_6
      items:
        type: string
        minLength: 1
    customerProfileID:
      type: string
      format: string
      example: URN-GV8294NV
      maxLength: 1000
      description: The integration ID of the customer profile. If the customer profile does not exist, it will be created.
    setDiscountPerItemEffectProps:
      type: object
      description: 'The properties specific to the `setDiscountPerItem` effect, triggered whenever a validated rule contained a

        "set per item discount" effect.

        This is a discount that will be applied either on a specific item, on a specific item + additional cost or on all additional costs per item.

        This depends on the chosen scope.

        '
      required:
      - name
      - value
      - position
      properties:
        name:
          type: string
          description: 'The name of the discount. Contains a hashtag character indicating the index of the position of the item the discount applies

            to. It is identical to the value of the `position` property.

            '
        value:
          type: number
          description: The total monetary value of the discount.
        position:
          type: number
          description: The index of the item in the cart items list on which this discount should be applied.
        subPosition:
          type: number
          description: 'Only used when [cart item flattening](https://docs.talon.one/docs/product/campaigns/campaign-evaluation#flattened-cart-items) is enabled.

            Indicates which item the discount applies to for cart items with `quantity` > 1.

            '
        desiredValue:
          type: number
          description: The original value of the discount.
        scope:
          type: string
          description: 'The scope of the discount:

            - `additionalCosts`: The discount applies to all the additional costs of the item.

            - `itemTotal`: The discount applies to the price of the item + the additional costs of the item.

            - `price`: The discount applies to the price of the item.

            '
        totalDiscount:
          type: number
          description: The total discount given if this effect is a result of a prorated discount.
        desiredTotalDiscount:
          type: number
          description: The original total discount to give if this effect is a result of a prorated discount.
        bundleIndex:
          type: integer
          description: The position of the bundle in a list of item bundles created from the same bundle definition.
        bundleName:
          type: string
          description: The name of the bundle binding.
    addLoyaltyPointsEffectProps:
      type: object
      description: 'The properties specific to the "addLoyaltyPoints" effect. This gets triggered whenever a validated rule contained an "add loyalty" effect. These points are automatically stored and managed inside Talon.One.

        '
      required:
      - name
      - programId
      - subLedgerId
      - value
      - recipientIntegrationId
      - transactionUUID
      properties:
        name:
          type: string
          description: The name/description of this loyalty point addition.
        programId:
          type: integer
          description: The ID of the loyalty program where these points were added.
        subLedgerId:
          type: string
          description: The ID of the subledger within the loyalty program where these points were added.
        value:
          type: number
          description: The amount of points that were added.
        desiredValue:
          type: number
          description: The original amount of loyalty points to be awarded.
        recipientIntegrationId:
          type: string
          maxLength: 1000
          description: The user for whom these points were added.
        startDate:
          type: string
          format: date-time
          description: Date after which points will be valid.
        expiryDate:
          type: string
          format: date-time
          description: Date after which points will expire.
        transactionUUID:
          type: string
          description: The identifier of this addition in the loyalty ledger.
        cartItemPosition:
          type: number
          description: The index of the item in the cart items list on which the loyal points addition should be applied.
        cartItemSubPosition:
          type: number
          description: 'The sub position is triggered when application flattening is enabled.

            It indicates to which item the loyalty points addition applies, for cart items with `quantity` > 1.

            '
        cardIdentifier:
          type: string
          description: The card on which these points were added.
    newAudience:
      type: object
      required:
      - name
      properties:
        name:
          $ref: '#/components/schemas/audienceName'
        integration:
          type: string
          description: The third-party platform that this audience was created in.
          example: My platform name
        integrationId:
          $ref: '#/components/schemas/audienceId'
    importEntity:
      type: object
      required:
      - id
      properties:
        importId:
          type: integer
          description: The ID of the Import which created this referral.
    meta:
      type: object
      properties:
        campaigns:
          description: Maps each evaluated campaign ID to a key-value list of that campaigns attributes. Campaigns without attributes will be omitted.
          type: object
          additionalProperties: true
        coupons:
          description: Maps the coupon value to a key-value list of that coupons attributes.
          type: object
          additionalProperties: true
        couponRejectionReason:
          $ref: '#/components/schemas/couponRejectionReason'
        referralRejectionReason:
          $ref: '#/components/schemas/referralRejectionReason'
        warnings:
          description: Contains warnings about possible misuse.
          type: object
          additionalProperties: true
    customerSessionV2:
      allOf:
      - $ref: '#/components/schemas/entity'
      - $ref: '#/components/schemas/integrationEntity'
      - $ref: '#/components/schemas/applicationEntity'
      - $ref: '#/components/schemas/newCustomerSessionV2'
      - type: object
        x-attributable: true
        properties:
          firstSession:
            type: boolean
            description: Indicates whether this is the first session for the customer's profile. Will always be true for anonymous sessions.
            title: First session ever?
            example: true
          total:
            type: number
            title: Session Total
            description: The total sum of cart-items, as well as additional costs, before any discounts applied.
            example: 119.99
          cartItemTotal:
            type: number
            title: Cart Items Total
            description: The total sum of cart-items before any discounts applied.
            example: 99.99
          additionalCostTotal:
            type: number
            title: Additional Costs Total
            description: The total sum of additional costs before any discounts applied.
            example: 20
          updated:
            type: string
            format: date-time
            description: Timestamp of the most recent event received on this session.
            title: Last activity on the session
            example: '2020-02-08T14:15:22Z'
        required:
        - profileId
        - firstSession
        - coupon
        - referral
        - state
        - cartItems
        - integrationId
        - applicationId
        - attributes
        - total
        - cartItemTotal
        - additionalCostTotal
        - updated
    customEffectProps:
      type: object
      description: Effect containing custom payload.
      required:
      - effectId
      - name
      - payload
      properties:
        effectId:
          type: integer
          description: The ID of the custom effect that was triggered.
        name:
          type: string
          description: The type of the custom effect.
        payload:
          description: The JSON payload of the custom effect.
          type: object
          additionalProperties: true
          x-arbitraryJSON: true
    updateLoyaltyCard:
      type: object
      required:
      - status
      properties:
        status:
          type: string
          description: 'Status of the loyalty card. Can be one of: [''active'', ''disabled''].

            '
    referralConstraints:
      type: object
      required:
      - campaignId
      properties:
        startDate:
          type: string
          format: date-time
          minimum: 0
          title: Referral code valid from
          description: Timestamp at which point the referral code becomes valid.
          example: '2020-11-10T23:00:00Z'
        expiryDate:
          type: string
          format: date-time
          minimum: 0
          title: Referral code valid until
          description: Expiry date of the referral code. Referral never expires if this is omitted, zero, or negative.
          example: '2021-11-10T23:00:00Z'
        usageLimit:
          type: integer
          title: Referral code Usage Limit
          description: 'The number of times a referral code can be used. `0` means no limit but any campaign usage limits will still apply.

            '
          minimum: 0
          maximum: 999999
          example: 1
    entityWithTalangVisibleID:
      type: object
      required:
      - id
      - created
      properties:
        id:
          type: integer
          description: Unique ID for this entity.
        created:
          type: string
          format: date-time
          description: The exact moment this entity was created.
    campaignEntity:
      type: object
      required:
      - campaignId
      properties:
        campaignId:
          type: integer
          title: Campaign ID
          description: The ID of the campaign that owns this entity.
          example: 211
    applicationEntity:
      type: object
      required:
      - applicationId
      properties:
        applicationId:
          type: integer
          description: The ID of the application that owns this entity.
          example: 322
    audienceId:
      type: string
      format: string
      minLength: 1
      maxLength: 1000
      description: The integration ID of this audience. If the audience comes from a third-party platform, set this property to the ID given by the third-party platform.
      example: 382370BKDB946
    loyaltyCardProfileRegistration:
      type: object
      required:
      - integrationId
      - timestamp
      properties:
        integrationId:
          type: string
          maxLength: 1000
          description: Integration ID of the customer associated with the card.
        timestamp:
          type: string
          format: date-time
          description: Timestamp of the registration to the card.
          example: '2021-09-12T10:12:42Z'
    couponLimitConfigs:
      type: 

# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/talon-one/refs/heads/main/openapi/talon-one-customer-data-platforms-api-openapi.yml