Talon.One Events API

Represents a single occurrence of a specific customer action, for example, updating the cart or signing up for a newsletter. There are 2 types of events: - **Built-in events:** They are triggered by various endpoints, such as the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. [Learn more](https://docs.talon.one/docs/dev/concepts/entities/events). - **Custom events:** They are triggered by the [Track event](https://docs.talon.one/integration-api#tag/Events/operation/trackEventV2) endpoint.

Operations 4

POST /v2/events Track event #
POST /v3/events Track advanced event #
GET /v3/events/{integrationId} Get advanced event #
GET /v1/event_types List event types #

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-events-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-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Talon One Events API
  version: ''
  description: 'Operations tagged Events across 2 of this provider''s published API definitions: talon-one-integration-api-openapi.yml, talon-one-management-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://yourbaseurl.talon.one
tags:
- name: Events
  description: 'Represents a single occurrence of a specific customer action, for example, updating the cart or signing up for a newsletter.


    There are 2 types of events:

    - **Built-in events:** They are triggered by various endpoints, such as the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) endpoint. [Learn more](https://docs.talon.one/docs/dev/concepts/entities/events).

    - **Custom events:** They are triggered by the [Track event](https://docs.talon.one/integration-api#tag/Events/operation/trackEventV2) endpoint.

    '
paths:
  /v2/events:
    post:
      operationId: trackEventV2
      summary: Track event
      description: 'Trigger a custom event.


        To use this endpoint:


        1. [Create a custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event)

        in the Campaign Manager.

        1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created.

        1. Trigger the event with this endpoint.


        You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager.


        For example, you can use this endpoint to trigger an event when a customer shares a

        link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing).


        > [!note] **Note**

        > - `profileId` is required even though the schema does not specify it.

        > - If the customer profile ID is new, a new profile is automatically created but the `customer_profile_created` [built-in event ](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered.

        > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests).

        > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.


        > [!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:
      - Events
      parameters:
      - name: silent
        in: query
        description: 'Possible values: `yes` or `no`.

          - `yes`: Increases the performance of the API call by returning a 204 response.

          - `no`: Returns a 200 response that contains the updated customer profiles.

          '
        example: 'yes'
        required: false
        schema:
          type: string
          default: 'yes'
      - 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: forceCompleteEvaluation
        in: query
        description: 'Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`.

          '
        example: false
        required: false
        schema:
          type: boolean
          default: false
      requestBody:
        $ref: '#/components/requestBodies/IntegrationEventV2Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationEventV2Response'
        '204':
          description: No content
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
        '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 profile at the same time
                  errors:
                    type: array
                    items: {}
                  StatusCode:
                    type: integer
                    example: 409
    servers:
    - url: https://yourbaseurl.talon.one
  /v3/events:
    post:
      operationId: trackEventV3
      summary: Track advanced event
      description: 'Trigger an advanced event.


        Advanced events are idempotent, uniquely identifiable events. They can also

        reference a previously closed session to add more context for rule evaluation.


        To use this endpoint:


        1. [Create a custom event](https://docs.talon.one/docs/dev/concepts/entities/events#creating-a-custom-event)

        in the Campaign Manager.

        1. In a rule, add the **Check for event types** [condition](https://docs.talon.one/docs/dev/concepts/entities/events#use-an-event-in-a-rule) and select the event you created.

        1. Trigger the event with this endpoint.


        You can [list](https://docs.talon.one/docs/product/applications/display-events#list-events) the received events in the **Events** view of the Campaign Manager.


        For example, you can use this endpoint to trigger an event when a customer shares a

        link to a product. See our [tutorial](https://docs.talon.one/docs/product/tutorials/referrals/incentivizing-product-link-sharing).


        > [!note] **Note**

        > - If the customer profile does not exist, it will be created. However, the `customer_profile_created` [built-in event](https://docs.talon.one/docs/dev/concepts/entities/events) is **not** triggered.

        > - We recommend sending requests sequentially. See [Managing parallel requests](https://docs.talon.one/docs/dev/getting-started/integration-tutorial#managing-parallel-requests).

        > - [Archived campaigns](https://docs.talon.one/docs/product/campaigns/managing-campaigns#archiving-a-campaign) are not considered in rule evaluation.

        '
      security:
      - api_key_v1: []
      tags:
      - Events
      parameters:
      - name: silent
        in: query
        description: 'Possible values: `yes` or `no`.

          - `yes`: Increases the performance of the API call by returning a 204 response.

          - `no`: Returns a 200 response that contains the updated customer profiles.

          '
        example: 'yes'
        required: false
        schema:
          type: string
          default: 'yes'
      - 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: forceCompleteEvaluation
        in: query
        description: 'Forces evaluation for all matching campaigns regardless of the [campaign evaluation mode](https://docs.talon.one/docs/product/applications/managing-campaign-evaluation#setting-campaign-evaluation-mode). Requires `dry=true`.

          '
        example: false
        required: false
        schema:
          type: boolean
          default: false
      requestBody:
        $ref: '#/components/requestBodies/IntegrationEventV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationEventV3Response'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
        '409':
          description: An advanced event already exists, 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 profile at the same time
                  errors:
                    type: array
                    items: {}
                  StatusCode:
                    type: integer
                    example: 409
    servers:
    - url: https://yourbaseurl.talon.one
  /v3/events/{integrationId}:
    get:
      operationId: getEventV3
      summary: Get advanced event
      description: 'Retrieve an advanced event by its identifier.

        '
      security:
      - api_key_v1: []
      tags:
      - Events
      parameters:
      - name: integrationId
        in: path
        description: The unique ID of the advanced event.
        required: true
        example: pe_12345
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventV3'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseWithStatus'
    servers:
    - url: https://yourbaseurl.talon.one
  /v1/event_types:
    get:
      operationId: getEventTypes
      summary: List event types
      description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.


        Fetch all event type definitions for your account.

        '
      tags:
      - Events
      parameters:
      - name: name
        in: query
        description: Filter results to event types with the given name. This parameter implies `includeOldVersions`.
        example: event1
        schema:
          type: string
      - name: includeOldVersions
        in: query
        description: Include all versions of every event type.
        example: false
        schema:
          type: boolean
          default: false
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/skip'
      - $ref: '#/components/parameters/sort'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - totalResultSize
                - data
                properties:
                  totalResultSize:
                    type: integer
                    example: 1
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EventType'
      security:
      - manager_auth: []
      - management_key: []
    servers:
    - url: https://yourbaseurl.talon.one
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.
    NewEventV3Entity:
      type: object
      required:
      - integrationId
      properties:
        integrationId:
          type: string
          description: 'The unique ID of the event. Only one event with this ID can be registered.

            '
          minLength: 1
          example: 175KJPS947296
    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.
    ResponseContentObject:
      type: object
      properties:
        responseContent:
          type: array
          description: 'Extends the response with the chosen data entities. Use this property to get as much data back as needed from one request instead of sending extra requests to other endpoints.

            '
          example:
          - triggeredCampaigns
          - customerProfile
          items:
            type: string
            enum:
            - customerProfile
            - triggeredCampaigns
            - loyalty
            - event
            - awardedGiveaways
            - ruleFailureReasons
            - campaignEligibility
            - achievements
    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
    UserEntity:
      type: object
      required:
      - userId
      properties:
        userId:
          type: integer
          description: The ID of the user associated with this entity.
          example: 388
    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-time
          description: Expiry date of the transaction after applying the extension or update.
    RejectCouponEffectProps:
      type: object
      title: rejectCoupon
      description: 'This effect indicates that the coupon code supplied couldn''t be used.


        You should handle this effect by informing their user the coupon code is invalid.'
      example:
        value: COUP-XYZ789
        rejectionReason: CouponRejectedCondition
        conditionIndex: 2
        effectIndex: 0
        details: Coupon usage limit reached
        campaignExclusionReason: CampaignGaveLowerDiscount
      required:
      - value
      - rejectionReason
      properties:
        value:
          type: string
          description: The coupon code that was rejected.
        rejectionReason:
          type: string
          description: 'The reason why the code was rejected.


            - `CampaignLimitReached`: The campaign-wide coupon code redemption limit has been reached.

            - `CouponExpired`: The coupon is expired.

            - `CouponLimitReached`: The coupon redemption limit or a campaign budget was reached.

            - `CouponNotFound`: The coupon code is incorrect.

            - `CouponPartOfNotRunningCampaign`: The campaign the coupon belongs to is currently not active. The campaignId field contains the ID of that campaign.

            - `CouponRecipientDoesNotMatch`: The given coupon value does not match the recipient or the coupon is linked to a `recipientIntegrationID` but there is no profile in the session.

            - `CouponRejectedByCondition`: Other conditions failed in the rule or all conditions passed but the `Coupon code is valid` condition is not present.

            - `CouponStartDateInFuture`: The coupon isn''t active yet.

            - `EffectCouldNotBeApplied`: One of the effects in the campaign wasn''t applied because a limit for that effect was reached (most common use case will be `setDiscount` cannot be applied because a discount limit is reached).

            - `ProfileLimitReached`: The profile-specific coupon redemption limit has been reached.

            - `CouponPartOfNotTriggeredCampaign`: The campaign the coupon belongs to was not triggered during evaluation (an exclusive or stackable campaign). The `campaignId` field contains the ID of that campaign.

            - `CouponReservationRequired`: The coupon''s `isReservationMandatory` property is `true`, but the profile does not have a reservation.

            - `ProfileRequired`: The coupon''s `isReservationMandatory` property is `true` or a [campaign profile budget](https://docs.talon.one/docs/product/campaigns/settings/manage-campaign-budgets) was set, but no profile exists in the session.'
        conditionIndex:
          type: integer
          description: The index of the condition that caused the rejection of the coupon.
        effectIndex:
          type: integer
          description: The index of the effect that caused the rejection of the coupon.
        details:
          type: string
          description: More details about the failure.
        campaignExclusionReason:
          type: string
          example: CampaignGaveLowerDiscount
          description: 'The reason why the campaign the coupon belongs to was excluded during [campaign evaluation](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation), when `rejectionReason` was `CouponPartOfNotTriggeredCampaign`.

            Its possible values are:


            - `CampaignGaveLowerDiscount`: The required campaign and coupon conditions were met, but another campaign in a [Highest discount value](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group offered a higher discount value.

            - `CampaignIsNotFirst`: The campaign was not evaluated because another campaign in a [First campaign](https://docs.talon.one/docs/product/applications/manage-campaign-evaluation#set-campaign-evaluation-mode) group was picked and evaluated first.

            - `CampaignNotInEvaluationSet`: The campaign did not meet other evaluation requirements, for example, because the coupon is part of an archived campaign.'
    IntegrationEventV3Request:
      allOf:
      - $ref: '#/components/schemas/EventV3RequestEntity'
      - type: object
        properties:
          loyaltyCards:
            type: array
            maxItems: 1
            items:
              type: string
            description: Identifiers of the loyalty cards used during this event.
            example:
            - loyalty-card-1
          responseContent:
            type: array
            description: 'Optional list of requested information to be present on the response related to the tracking custom event.

              '
            example:
            - triggeredCampaigns
            - customerProfile
            items:
              type: string
              enum:
              - customerProfile
              - triggeredCampaigns
              - loyalty
              - advancedEvent
              - awardedGiveaways
              - ruleFailureReasons
    ErrorResponseWithStatus:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          description: An array of individual problems encountered during the request.
          items:
            $ref: '#/components/schemas/APIError'
        StatusCode:
          type: integer
          description: The error code
    WillAwardGiveawayEffectProps:
      type: object
      title: willAwardGiveaway
      description: 'The equivalent of the `awardGiveaway` effect but returned when updating a session with any state other than `closed`. This ensures no giveaway codes are leaked when they are still not guaranteed to be awarded.


        For more information about session states, see [Manage the session''s state](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions#manage-the-sessions-state).'
      example:
        poolId: 2
        poolName: My pool
        recipientIntegrationId: URNGV8294NV
      required:
      - poolId
      - poolName
      - recipientIntegrationId
      properties:
        poolId:
          type: integer
          description: The internal ID of the giveaway pool.
          example: 2
        poolName:
          type: string
          description: The name of the giveaway pool.
          example: My pool
        recipientIntegrationId:
          type: string
          maxLength: 1000
          description: The integration ID of the customer that receives the giveaway.
          example: URNGV8294NV
    Giveaway:
      allOf:
      - $ref: '#/components/schemas/Entity'
      - type: object
        required:
        - id
        - created
        - code
        - poolId
        properties:
          code:
            type: string
            description: The code value of this giveaway.
            example: GIVEAWAY1
          poolId:
            type: integer
            description: The ID of the pool to return giveaway codes from.
            example: 1
          startDate:
            format: date-time
            description: Timestamp at which point the giveaway becomes valid.
            type: string
            example: 2022-01-02T15:04:05Z07:00
          endDate:
            format: date-time
            description: Timestamp at which point the giveaway becomes invalid.
            type: string
            example: 2023-01-02T15:04:05Z07:00
          attributes:
            type: object
            description: Arbitrary properties associated with this giveaway.
          used:
            type: boolean
            description: Indicates whether this giveaway code was given before.
            example: true
          importId:
            type: integer
            description: The ID of the Import which created this giveaway.
            example: 4
          profileIntegrationId:
            type: string
            description: The third-party integration ID of the customer profile that was awarded the giveaway, if the giveaway was awarded.
            example: R195412
          profileId:
            type: integer
            description: The internal ID of the customer profile that was awarded the giveaway, if the giveaway was awarded and an internal ID exists.
            example: 1
    CampaignEligibilityFailureDetails:
      type: object
      description: The details about why the customer was not eligible for the campaign in the current session.
      required:
      - failureCode
      properties:
        failureCode:
          type: string
          description: A code identifying why the customer was not eligible for the campaign.
          enum:
          - ALL_RULES_FAILED
          - SKIPPED
          - AUDIENCE_NOT_MATCHED
    CouponEntity:
      type: object
      required:
      - id
      - created
      properties:
        id:
          type: integer
          description: The internal ID of the coupon.
          example: 6
        created:
          type: string
          format: date-time
          description: The time the coupon was created.
          example: '2020-06-10T09:05:27.993483Z'
    RuleMetadata:
      type: object
      required:
      - title
      properties:
        title:
          type: string
          description: A short description of the rule.
          example: Give discount via coupon
        displayName:
          type: string
          description: A customer-facing name for the rule.
          example: 20% off all shoes!
        displayDescription:
          type: string
          description: "A customer-facing description that explains the details of the rule. \n\nFor example, this property can contain details about eligibility requirements, reward timelines, or terms and conditions.\n"
          example: Get a 20% discount on all shoes during Thanksgiving! Offer valid till Dec 5 only.
        relatedData:
          type: string
          description: 'Any additional data associated with the rule, such as an image URL, vendor name, or a content management system (CMS) ID.

            '
          example: https://example.com/discounts/20-off-shoes.png
    RollbackIncreasedAchievementProgressEffectProps:
      type: object
      title: rollbackIncreasedAchievementProgress
      description: 'This effect indicates that the customer''s progress in an achievement was rolled back.


        The Rule Engine triggers this effect when you cancel or [reopen a customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/reopenCustomerSession) that previously validated the [Update customer progress](https://docs.talon.one/docs/product/rules/effects/use-effects#update-customer-progress) effect and triggered the [increaseAchievementProgress](https://docs.talon.one/docs/dev/integration-api/api-effects#increaseachievementprogress) API effect.


        The effect is also triggered for completed achievements if the **Allow progress rollback for completed achievements** setting is enabled. You can enable this through the [Campaign Manager](https://docs.talon.one/docs/product/achievements/manage-achievements) or the [Management API](https://docs.talon.one/management-api#tag/Achievements/operation/createAchievement) by setting the `achievementAllowRollbackAfterCompletion` property to `true`. This setting only applies to one-time and recurring on expiration achievements.'
      example:
        achievementId: 10
        achievementName: FreeCoffee10Orders
        progressTrackerId: 42
        decreaseProgressBy: 1
        currentProgress: 6
        target: 10
      required:
      - achievementId
      - achievementName
      - progressTrackerId
      - decreaseProgressBy
      - currentProgress
      - target
      properties:
        achievementId:
          type: integer
          description: The internal ID of the achievement.
          example: 10
        achievementName:
          type: string
          description: The name of the achievement.
          example: FreeCoffee10Orders
        progressTrackerId:
          type: integer
          description: The internal ID of the achievement progress tracker.
        decreaseProgressBy:
          type: number
          description: The value by which the customer's current progress in the achievement has decreased.
        curr

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