Talon.One Customer sessions API

Represents the data related to a customer session. Typically, a customer session is the value and content of the customer's cart. Sessions can be anonymous or linked to a customer profile and they have a life cycle from `open` to `closed`. In general, a session is closed when the customer completes the checkout step. Sessions are a key concept of Talon.One. We strongly recommend you read the [documentation about customer sessions](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).

Operations 4

PUT /v2/customer_sessions/{customerSessionId} Update customer session #
GET /v2/customer_sessions/{customerSessionId} Get customer session #
POST /v2/customer_sessions/{customerSessionId}/returns Return cart items #
PUT /v2/customer_sessions/{customerSessionId}/reopen Reopen customer session #

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-sessions-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-sessions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Integration Customer sessions API
  version: ''
  description: "Use the Integration API for user-facing, real time, high-traffic flows.\nFor example, use it to apply promotional offers or loyalty rewards during customer interactions,\ntrack customer behavior, or deliver personalized incentives based on customer activity.\n\nFor more background information about this API, see\n[Integration API](https://docs.talon.one/docs/dev/integration-api/overview).\n\n> [!note] **Are you looking for a different API?**\n> - To interact with the Campaign Manager for backoffice operations, see the [Management API](https://docs.talon.one/management-api).\n> - To integrate with Talon.One from a CEP or CDP platform, see the [Third-party API](https://docs.talon.one/third-party-api).\n\n## Authentication\n\nIntegration API keys are scoped to an Application and are independent of any user account.\n\nA `401 Unauthorized` response means the key is invalid, expired, or scoped to a different\nenvironment.\n\nFor details on generating and managing API keys, see\n[Manage API keys](https://docs.talon.one/docs/product/applications/manage-api-keys).\n\n## Response codes and error handling\n\nTalon.One uses conventional HTTP response codes to indicate the success or failure of an API request.\nCodes in the `2xx` range indicate success. Codes in the `4xx` range indicate the request failed based\non the information provided. Codes in the `5xx` range indicate an error with Talon.One servers.\n\nError responses include a `message` that summarizes what went wrong. Use it for logging and debugging.\n\nWhen a request has one or more specific problems, the `errors` array lists each one separately:\n- `title` gives a short description of the problem\n- `source` shows where the error originated, for example, using a `pointer` property indicating the\n  problematic property in the request body.\n\n| Code | Description | Action |\n|------|-------------|--------|\n| `2xx` | Success | None. |\n| `400` | Bad request | Fix the request. For example, add a missing parameter or correct an invalid one. Not retryable. |\n| `401` | Unauthorized | Provide a valid API key. Not retryable. |\n| `404` | Not found | Check the resource path or ID. Not retryable. |\n| `409` | Concurrency conflict | Switch to sequential requests. Retryable. |\n| `429` | Rate limit exceeded | Retry with exponential backoff. |\n| `5xx` | Server error | Retry with exponential backoff. |\n\n## URL encoding\n\nEncode all path and query parameter values that contain special characters. This applies to\ncustomer profile IDs, session IDs, coupon codes, and any other user-supplied string passed as\na URL segment or query parameter.\n\nFor example, encode a `10$OFF_NOW` coupon code as `10%24OFF_NOW` before\nincluding it in a request URL.\n\nRequests with unencoded special characters may be misrouted or return unexpected errors.\n\nFor more information, see [HTML URL Encoding Reference](https://www.w3schools.com/tags/ref_urlencode.asp).\n\n## Rate limiting\n\nThe Integration API returns `429 Too Many Requests` when you exceed the allowed request rate.\nImplement exponential backoff before retrying.\n\nTo protect data integrity, a separate limit applies to **parallel requests for the same profile or\nsession**. For each customer profile or session integration ID, Talon.One allows up to **three parallel\nrequests**. It processes one immediately and queues up to two more. A request that arrives while the\nqueue is full receives a `409 Too many requests are updating this profile/session at the same time`\nresponse.\n\nThis limit applies only to the following endpoints:\n- [Update customer profile](https://docs.talon.one/integration-api#tag/Customer-profiles/operation/updateCustomerProfileV2)\n- [Update customer session](https://docs.talon.one/integration-api/#tag/customer-sessions/PUT/v2/customer_sessions/{customerSessionId})\n- [Track event](https://docs.talon.one/integration-api/#tag/events/POST/v2/events)\n\nTo avoid these `409` responses, send requests sequentially for each profile or session.\n"
servers:
- url: https://yourbaseurl.talon.one
security:
- api_key_v1: []
tags:
- name: Customer sessions
  description: 'Represents the data related to a customer session. Typically, a customer session is the value and content of the customer''s cart.


    Sessions can be anonymous or linked to a customer profile and they have a life cycle from `open` to `closed`.

    In general, a session is closed when the customer completes the checkout step.


    Sessions are a key concept of Talon.One. We strongly recommend you read the [documentation about customer sessions](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).

    '
paths:
  /v2/customer_sessions/{customerSessionId}:
    put:
      operationId: updateCustomerSessionV2
      summary: Update customer session
      description: "Update or create a [customer\nsession](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).\n\nThe endpoint responds with the potential promotion rule\n[effects](https://docs.talon.one/docs/dev/integration-api/api-effects) that\nmatch the current cart.\n\nFor example, use this endpoint to share the contents of a customer's cart\nwith Talon.One.\n\n> [!note] **Note**\n> - The currency for the session and the cart items in it is the currency set for the Application linked to this session.\n> - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered for rule evaluation.\n\n> [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also:\n> - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs.\n> - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent.\n> - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.\n\n### Session management\n\nTo use this endpoint, start by learning about [customer\nsessions](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions)\nand their states and refer to the `state` parameter documentation the\nrequest body schema docs below.\n\n### Sessions and customer profiles\n\n- To link a session to a customer profile, set the `profileId` parameter in\nthe request body to a customer profile's `integrationId`.\n\n- While you can create an anonymous session with `profileId=\"\"`, we\nrecommend you use a guest ID instead.\n\n- A profile can be linked to simultaneous sessions in different\nApplications. Either:\n  - Use unique session integration IDs or,\n  - Use the same session integration ID across all of the Applications.\n\n> [!note] **Note**\n> - If the specified profile does not exist, an empty profile is **created automatically**.\n>   You can update it with [Update customer profile](https://docs.talon.one/integration-api#tag/Customer-profiles/operation/updateCustomerProfileV2).\n> - Updating a customer session returns a response with the new integration state. Use the `responseContent` property to save yourself extra API calls.\n>   For example, you can get the customer profile details directly without extra requests.\n> - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests).\n\nFor more information, see:\n\n- The introductory video in [Getting started](https://docs.talon.one/docs/dev/getting-started/overview).\n- The [integration tutorial](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one).\n"
      security:
      - api_key_v1: []
      tags:
      - Customer sessions
      parameters:
      - name: dry
        in: query
        description: "Indicates whether to persist the changes. Changes are ignored when `dry=true`.\n\nWhen set to `true`:\n- The endpoint considers **only** the payload that you pass when **closing** the session.\n  When you do not use the `dry` parameter, the endpoint behaves as a typical PUT endpoint. Each update builds upon the previous ones.\n- You can use the `evaluableCampaignIds` body property to select specific campaigns to run.\n\n[See the docs](https://docs.talon.one/docs/dev/integration-api/dry-requests).\n"
        example: false
        required: false
        schema:
          type: boolean
      - name: customerSessionId
        in: path
        required: true
        description: 'The `integration ID` of the customer session. You set this ID when you create a customer session.


          You can see existing customer session integration IDs in the Campaign Manager''s **Sessions** menu, or via the

          [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.

          **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).

          '
        example: session1
        schema:
          type: string
      - name: now
        in: query
        required: false
        description: 'A timestamp value of a future date that acts as a current date when

          included in the query.


          Use this parameter, for example, to test campaigns that would be

          evaluated for this customer session in the future (say, [scheduled

          campaigns](https://docs.talon.one/docs/product/campaigns/settings/managing-campaign-schedule)).


          > [!note] **Note**

          > - It must be an RFC3339 timestamp string.

          > - It can **only** be a date in the future.

          > - It can **only** be used if the `dry` parameter in the query is set to `true`.

          '
        example: '2024-05-29T15:04:05+07:00'
        schema:
          type: string
          format: date-time
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationRequest'
            examples:
              Full request:
                summary: Full request
                x-vertical: none
                value:
                  customerSession:
                    profileId: URNGV8294NV
                    storeIntegrationId: STORE-001
                    evaluableCampaignIds:
                    - 10
                    - 12
                    couponCodes:
                    - XMAS-20-2021
                    referralCode: NT2K54D9
                    loyaltyCards:
                    - loyalty-card-1
                    state: open
                    cartItems:
                    - name: Air Glide
                      sku: SKU1241028
                      quantity: 1
                      price: 99.99
                      category: shoes
                      product:
                        name: sample_product
                      weight: 1130
                      height: 0
                      width: 0
                      length: 0
                      attributes:
                        image: 11.jpeg
                        material: leather
                      additionalCosts:
                        shipping:
                          price: 9
                    experimentVariantAllocations:
                    - experimentID: 1
                      variantID: 2
                    additionalCosts:
                      shipping:
                        price: 9
                    identifiers:
                    - d41306257915f83fe01e54092ae470f631161ea16fcf4415842eed41470386ea
                    attributes:
                      ShippingCity: Berlin
                  responseContent:
                  - customerSession
                  - customerProfile
              eCommerce:
                x-vertical: ecommerce
                summary: 'Example: ecommerce'
                description: 'Update a customer session with multiple cart items and attributes,

                  including SKUs, prices, and more.

                  '
                value:
                  customerSession:
                    profileId: 382370BKDB946
                    cartItems:
                    - name: Wireless Bluetooth Headphones
                      sku: AUDIO-WH350
                      quantity: 1
                      price: 79.99
                      weight: 310
                    - name: USB-C Charging Cable
                      sku: CABLE-USBC-2M
                      quantity: 2
                      price: 15.99
                      weight: 40
                  responseContent:
                  - customerSession
                  - customerProfile
              QSR & dining:
                x-vertical: qsr
                summary: 'Example: QSR & dining'
                description: 'Update a customer session as a customer builds a combo meal, including

                  quantities, categories, and more.

                  '
                value:
                  customerSession:
                    profileId: 382370BKDB946
                    cartItems:
                    - name: Cheeseburger
                      sku: BURGER-001
                      quantity: 1
                      price: 8.99
                      category: Main
                    - name: French Fries
                      sku: SIDE-002
                      quantity: 1
                      price: 3.49
                      category: Side
                    - name: Cola
                      sku: DRINK-003
                      quantity: 1
                      price: 2.49
                      category: Beverage
                  responseContent:
                  - customerSession
                  - customerProfile
                  - loyalty
              Financial services:
                x-vertical: finance
                summary: 'Example: Financial services'
                description: 'Update a customer session when a cardholder completes a purchase.

                  '
                value:
                  customerSession:
                    profileId: customer-789
                    cartItems:
                    - name: Card Purchase - Electronics Store
                      sku: TXN-CC-001
                      quantity: 1
                      price: 250
                    attributes:
                      CardType: credit
                      MerchantCategory: electronics
                      TransactionType: card_payment
                  responseContent:
                  - customerSession
                  - customerProfile
                  - loyalty
              Travel & hospitality:
                x-vertical: travel
                summary: 'Example: Travel & hospitality'
                description: 'Update a customer session when a guest books a hotel stay to

                  automatically award bonus loyalty points for stays that exceed

                  the minimum night count.

                  '
                value:
                  customerSession:
                    profileId: customer-321
                    cartItems:
                    - name: Deluxe Room - 5 nights
                      sku: HOTEL-ROOM-DLX
                      quantity: 5
                      price: 189
                    attributes:
                      CheckInDate: '2026-06-10'
                      CheckOutDate: '2026-06-15'
                      StayNights: 5
                      PropertyType: hotel
                  responseContent:
                  - customerSession
                  - customerProfile
                  - loyalty
        description: body
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationStateV2'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
        '409':
          description: Too many requests or limit reached - Avoid parallel requests. See the [docs](https://docs.talon.one/docs/dev/tutorials/integrating-talon-one#managing-parallel-requests).
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Too many requests are updating this session at the same time
                  errors:
                    type: array
                    items: {}
                  StatusCode:
                    type: integer
                    example: 409
    get:
      operationId: getCustomerSession
      summary: Get customer session
      description: 'Get the details of the given customer session.


        You can get the same data via other endpoints that also apply changes, which can help you save requests and increase performance. See:


        - [Update customer session](#tag/Customer-sessions/operation/updateCustomerSessionV2)

        - [Update customer profile](#tag/Customer-profiles/operation/updateCustomerProfileV2)

        '
      security:
      - api_key_v1: []
      tags:
      - Customer sessions
      parameters:
      - name: customerSessionId
        in: path
        required: true
        description: 'The `integration ID` of the customer session. You set this ID when you create a customer session.


          You can see existing customer session integration IDs in the Campaign Manager''s **Sessions** menu, or via the

          [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.

          **Notes**: - There is no length limit for this ID. - It must be URL-encoded. For example, replace spaces with `%20`. [Learn more](https://www.w3schools.com/tags/ref_urlencode.asp).

          '
        example: session1
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationCustomerSessionResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
  /v2/customer_sessions/{customerSessionId}/returns:
    post:
      operationId: returnCartItems
      summary: Return cart items
      description: 'Create a new return request for the specified cart items.


        This endpoint automatically changes the session state from `closed` to

        `partially_returned`.


        > [!note] This will roll back any effects associated with these cart items.

        > For more information, see [our documentation on session

        > states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states)

        > and [this tutorial](https://docs.talon.one/docs/dev/tutorials/partially-returning-a-session).


        > [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also:

        > - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs.

        > - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent.

        > - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.

        '
      security:
      - api_key_v1: []
      tags:
      - Customer sessions
      parameters:
      - name: dry
        in: query
        description: 'Indicates whether to persist the changes. Changes are ignored when `dry=true`.

          '
        example: false
        required: false
        schema:
          type: boolean
      - name: customerSessionId
        in: path
        required: true
        description: 'The `integration ID` of the customer session. You set this ID when you create a customer session.


          You can see existing customer session integration IDs in the Campaign Manager''s **Sessions** menu, or via the

          [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.

          '
        example: session1
        schema:
          type: string
      - name: runRuleEngine
        in: query
        description: 'When set to `true`, reevaluates the updated session after items are returned. Only reevaluates campaigns where `reevaluateOnReturn` is set to `true` and which produced an effect when the session was closed.

          '
        example: false
        required: false
        schema:
          type: boolean
      requestBody:
        $ref: '#/components/requestBodies/ReturnIntegrationRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationStateV2'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
  /v2/customer_sessions/{customerSessionId}/reopen:
    put:
      operationId: reopenCustomerSession
      summary: Reopen customer session
      description: "Reopen a closed [customer\nsession](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions).\n\nFor example, if a session has been completed but still needs to be edited,\nyou can reopen it with this endpoint.\n\nA reopen session is treated like a standard open session.\n\nWhen reopening a session:\n\n- The `talon_session_reopened` event is triggered. You can see it in the **Events** view in the Campaign Manager.\n- The session state is updated to `open`.\n- Any modified budgets and triggered effects are rolled back when the session closes.\n- Depending on the [return policy](https://docs.talon.one/docs/product/loyalty-programs/managing-loyalty-programs#return-policy)\n in your loyalty programs, points are rolled back in the following ways:\n  - Pending points are rolled back automatically.\n  - If **Active points deduction** setting is enabled, any points that were earned and activated when the session closed\n  are rolled back.\n  - If **Negative balance** is enabled, the rollback can create a negative points balance.\n\n<details>\n  <summary><strong>Effects and budgets unimpacted by a session reopening</strong></summary>\n  <div>\n    <p>The following effects and budgets remain in the state they were in when the session closed:</p>\n    <ul>\n      <li>Add free item effect</li>\n      <li>Award giveaway</li>\n      <li>Coupon and referral creation</li>\n      <li>Coupon reservation</li>\n      <li>Custom effect</li>\n      <li>Update attribute value</li>\n      <li>Update cart item attribute value</li>\n    </ul>\n  </div>\n</details>\n\nTo see an example of a rollback, see the\n[Cancelling a session with campaign budgets](https://docs.talon.one/docs/dev/tutorials/rolling-back-effects) tutorial.\n\n> [!note] If your order workflow requires you to create a new session\n> instead of reopening a session, use the\n> [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)\n> endpoint to cancel a closed session and create a new one.\n\n> [!note] To make request processing idempotent for this endpoint, include the `Idempotency-Key` header with an idempotency key in requests. Also:\n> - Requests with the `Idempotency-Key` header are logged in the Talon.One access logs.\n> - Responses for idempotent requests are stored in the database and expire 24 hours after the request is sent.\n> - Idempotency keys are typically UUID keys and should not exceed 255 characters in length.\n"
      security:
      - api_key_v1: []
      tags:
      - Customer sessions
      parameters:
      - name: customerSessionId
        in: path
        required: true
        description: 'The `integration ID` of the customer session. You set this ID when you create a customer session.


          You can see existing customer session integration IDs in the Campaign Manager''s **Sessions** menu, or via the

          [List Application session](https://docs.talon.one/management-api#tag/Customer-data/operation/getApplicationSessions) endpoint.

          '
        example: session1
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReopenSessionResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
components:
  schemas:
    RollbackReferralEffectProps:
      type: object
      title: rollbackReferral
      description: 'This effect indicates that the redemption of the referral code has been rolled back. It triggers when a closed session that redeemed a referral is gets cancelled. The code becomes redeemable again.


        For more information about session states, see [Managing states](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#customer-session-states).'
      example:
        value: REF-ABC123
      required:
      - value
      properties:
        value:
          type: string
          description: The referral code to be rolled back.
    SetDiscountEffectProps:
      type: object
      title: setDiscount
      description: 'This effect indicates that a discount should be set on the total shopping cart value of the current order with the given label and amount.


        The discount should overwrite any existing discount with the same name. The most recent integration state update always returns the latest values for **all** effects, effectively overwriting any previous effects.


        Enabling [partial discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#partial-discounts) allows a rule that would fail because of insufficient budget to pass. The rule still fails when the budget reaches `0`. Use the `desiredValue` property to identify the original value of the discount.'
      example:
        name: 10% Off
        value: 2.5
        scope: sessionTotal
        desiredValue: 2.5
      required:
      - name
      - value
      properties:
        name:
          type: string
          description: The name or description of this discount.
        value:
          type: number
          description: The monetary value of the effective discount.
        scope:
          type: string
          description: 'What the discount applies to. Possible values:


            - `cartItems`: Discount on the price of the items.

            - `additionalCosts`: Discount on the [additional costs](https://docs.talon.one/docs/product/account/dev-tools/manage-additional-costs) of the items.

            - `sessionTotal`: Discount on the total value of the customer session.


            **Note:** [Cascading discounts](https://docs.talon.one/docs/product/applications/manage-general-settings#cascading-discounts) must be enabled for this property to be returned.'
        desiredValue:
          type: number
          description: _(Partial discounts enabled only)_ The monetary value of the discount to be applied without considering budget limitations.
    AcceptReferralEffectProps:
      type: object
      title: acceptReferral
      description: 'This effect indicates that the referral code supplied is valid.


        You should handle this effect by informing the user that the referral code is valid.


        The code is automatically redeemed when you close the session.


        Other effects will provide more information about the actual reward.'
      example:
        value: REF-ABC123
      required:
      - value
      properties:
        value:
          type: string
          description: The referral code provided in the session.
    RedeemReferralEffectProps:
      type: object
      deprecated: true
      title: redeemReferral
      description: 'This effect is **deprecated**. It has been replaced by the `acceptReferral` effect.

        This effect indicates that the referral code is valid and has been redeemed.

        '
      example:
        id: 12
        value: REF-ABC123
      required:
      - id
      - value
      properties:
        id:
          type: integer
          description: The id of the referral code that was redeemed.
        value:
          type: string
          description: The referral code that was redeemed.
    AcceptCouponEffectProps:
      type: object
      title: acceptCoupon
      description: 'This effect indicates that the coupon code supplied was valid.


        You should handle this effect by clearing any messages from previous `rejectCoupon` effects and informing the user that the coupon is valid.


        The code is automatically redeemed when you close the session.


        Other effects, such as [setDiscount](https://docs.talon.one/docs/dev/integration-api/api-effects#setdiscount), provide more information about the actual rewards received.'
      example:
        value: COUP-XYZ789
      required:
      - value
      properties:
        value:
          type: string
          description: The coupon code that was accepted.
    UpdateLoyaltyCard:
      type: object
      required:
      - status
      properties:
        status:
          type: string
          description: 'Status of the loyalty card. Can be `active` or `inactive`.

            '
          example: active
        blockReason:
          type: string
          description: 'Reason for transferring and blocking the loyalty card.

            '
          example: Current card lost. Customer needs a new card.
    EvaluableCampaignIds:
      type: object
      properties:
        evaluableCampaignIds:
          type: array
          items:
            type: integer
          description: 'When using the `dry` query parameter, use this property to list the campaign to be evaluated by the Rule Engine.


            These campaigns will be evaluated, even if they are disabled, allowing you to test specific campaigns before activating them.

            '
          title: Campaigns to evaluate
          example:
          - 10
          - 12
    InventoryReferral:
      allOf:
      - $ref: '#/components/schemas/Referral'
      - type: object
        required:
        - referredCustomers
        properties:
          referredCustomers:
            type: array
            description: An array of referred customers.
            items:
              type: string
    EventV3Entity:
      type: object
      properties:
        integrationId:
          type: string
          description: 'The unique ID of the event. Only one event with this ID can be registered.

            '
          minLength: 1
          example: 175KJPS947296
    LoyaltyLedgerEntryExpiryDateChange:
      type: object
      description: The properties specific to effects for changing the expiry dates of loyalty ledger entries.
      required:
      - transactionUUID
      - newExpiryDate
      properties:
        transactionUUID:
          type: string
          format: uuid
          description: The identifier of the transaction affected by the extension or update.
        previousExpiryDate:
          type: string
          format: date-time
          description: Expiry date of the transactions before applying the extension or update.
        newExpiryDate:
          type: string
          format: date-

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