Adobe Suite Challenge State API

Profile interaction with a Challenge affecting its state

Operations 8

POST /loyalty/challenges/{profileId}/withdraw/{challengeId} Withdraw up for a Challenge #
GET /loyalty/challenges/state Retrieve Challenges for a profileId #
POST /loyalty/challenges/signup/{challengeId} Sign up for a Challenge #
POST /loyalty/challenges/events Receive a Loyalty Event #
GET /loyalty/challenges/{profileId} Retrieve all active Challenges for a profileId #
GET /loyalty/challenges/org Retrieve all of the active Challenges #
GET /loyalty/challenges/health Health check #
GET /loyalty/challenges/challenge Retrieve Challenges for a profileId #

Documentation

📖
Documentation
https://developer.adobe.com/photoshop/api/docs/
📖
Authentication
https://developer.adobe.com/developer-console/docs/guides/authentication/
📖
Documentation
https://developer.adobe.com/lightroom/api/docs/
📖
Documentation
https://developer.adobe.com/illustrator/api/docs/
📖
Documentation
https://developer.adobe.com/indesign/docs/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/
📖
GettingStarted
https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/gettingstarted/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-accessibility-auto-tag-api/
📖
Documentation
https://developer.adobe.com/analytics-apis/docs/
📖
APIReference
https://developer.adobe.com/analytics-apis/docs/2.0/
📖
Documentation
https://developer.adobe.com/firefly-services/docs/
📖
APIReference
https://developer.adobe.com/firefly-services/docs/api/
📖
Documentation
https://developer.adobe.com/audio-video-firefly-services/
📖
GettingStarted
https://developer.adobe.com/audio-video-firefly-services/getting-started/
📖
Documentation
https://developer.adobe.com/creative-cloud-libraries/docs/
📖
APIReference
https://developer.adobe.com/creative-cloud-libraries/docs/api/
📖
Documentation
https://developer.adobe.com/express/embed-sdk/docs/guides/
📖
APIReference
https://developer.adobe.com/express/embed-sdk/docs/v4/
📖
GettingStarted
https://developer.adobe.com/express/embed-sdk/docs/guides/quickstart/
📖
Documentation
https://developer.adobe.com/experience-platform-apis/
📖
GettingStarted
https://experienceleague.adobe.com/en/docs/experience-platform/landing/platform-apis/api-guide
📖
Documentation
https://developer.adobe.com/marketo-apis/
📖
Authentication
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/authentication
📖
Documentation
https://developer.adobe.com/commerce/docs/
📖
GettingStarted
https://developer.adobe.com/commerce/webapi/get-started/
📖
Documentation
https://developer.adobe.com/experience-cloud/cloud-manager/
📖
Documentation
https://developer.adobe.com/journey-optimizer-apis/
📖
Documentation
https://developer.adobe.com/workfront-apis/
📖
Documentation
https://developer.adobe.com/firefly-services/docs/substance3d/
📖
Documentation
https://developer.adobe.com/data-collection-apis/
📖
Documentation
https://developer.adobe.com/adobe-status/
📖
Documentation
https://developer.adobe.com/vip-marketplace/

Specifications

Other Resources

🔗
Pricing
https://developer.adobe.com/document-services/pricing/
🔗
SDKs
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/sdks/
🔗
ReleaseNotes
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/releasenotes
🔗
Guides
https://developer.adobe.com/analytics-apis/docs/2.0/guides/
🔗
Guides
https://developer.adobe.com/firefly-services/docs/guides/
🔗
Usage Notes
https://developer.adobe.com/audio-video-firefly-services/getting_started/usage/
🔗
Overview
https://developer.adobe.com/creative-cloud-libraries/docs/overview/
🔗
Integration Guide
https://developer.adobe.com/creative-cloud-libraries/docs/integrate/
🔗
API Fundamentals
https://experienceleague.adobe.com/en/docs/experience-platform/landing/platform-apis/api-fundamentals
🔗
Developer Guide
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/home
🔗
REST API
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api
🔗
REST API
https://developer.adobe.com/commerce/webapi/rest/
🔗
GraphQL API
https://developer.adobe.com/commerce/webapi/graphql-api/
🔗
REST API Reference
https://developer.adobe.com/commerce/webapi/reference/rest/paas/
🔗
GraphQL
https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/graphql/adobe-suite-graphql.md
🔗
Webhooks
https://developer.adobe.com/experience-cloud/cloud-manager/guides/getting-started/create-event-integration/
🔗
StatusPage
https://status.adobe.com/

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/adobe-suite-challenge-state-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

adobe-suite-challenge-state-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AJO Customer Loyalty Challenge State API
  description: APIs for managing AJO Customer Loyalty Challenge State. <br/><br/>**Related documentation:** See [Loyalty challenges](https://experienceleague.adobe.com/docs/journey-optimizer/using/loyalty-challenges/get-started.html) in Journey Optimizer documentation. <br/><br/>**Required headers:** All calls require the headers Authorization, x-gw-ims-org-id, and x-api-key. For more information, see the [authentication tutorial](https://developer.adobe.com/journey-optimizer-apis/references/authentication).
  contact:
    url: http://adobe.com
  version: 1.1.0
servers:
- url: http://localhost:8080
  description: Local
- url: https://platform-stage-va7.adobe.io/ajo/
  description: Stage
- url: https://platform-va7.adobe.io/ajo/
  description: Prod
tags:
- name: Challenge-State
  description: Profile interaction with a Challenge affecting its state
paths:
  /loyalty/challenges/{profileId}/withdraw/{challengeId}:
    post:
      tags:
      - Challenge-State
      summary: Withdraw up for a Challenge
      operationId: withdraw
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: false
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
        schema:
          type: string
      - name: profileId
        in: path
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
  /loyalty/challenges/state:
    get:
      tags:
      - Challenge-State
      summary: Retrieve Challenges for a profileId
      operationId: activeChallengeStateByProfile
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-id
        in: header
        required: false
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: test
        in: query
        description: True if running the challenge as a test
        required: false
        schema:
          type: boolean
          default: false
      - name: v
        in: query
        description: Version of the response
        required: false
        schema:
          type: string
          default: 2
      - name: pid
        in: query
        description: Profile Id of the Loyalty guest
        required: true
        schema:
          type: string
      - name: cid
        in: query
        description: Challenge Id if a specific challenge is requested; otherwise, all 'active' will be returned
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallengeList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
  /loyalty/challenges/signup/{challengeId}:
    post:
      tags:
      - Challenge-State
      summary: Sign up for a Challenge
      operationId: signup
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Signup'
        required: true
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Could not find Challenge Id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Profile has already joined the challenge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Challenge personalization not found for profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/challenges/events:
    post:
      tags:
      - Challenge-State
      summary: Receive a Loyalty Event
      operationId: events
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: test
        in: query
        required: false
        schema:
          type: boolean
          default: false
      - name: cid
        in: query
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonNode'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonNode'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Profile has already joined the challenge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Challenge personalization not found for profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/challenges/{profileId}:
    get:
      tags:
      - Challenge-State
      summary: Retrieve all active Challenges for a profileId
      operationId: activeChallengesByProfile
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: profileId
        in: path
        required: true
        schema:
          type: string
      - name: state
        in: query
        description: The state of the challenge (active, complete)
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallengeList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
  /loyalty/challenges/org:
    get:
      tags:
      - Challenge-State
      summary: Retrieve all of the active Challenges
      operationId: activeChallenges
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallengeList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
  /loyalty/challenges/health:
    get:
      tags:
      - Challenge-State
      summary: Health check
      operationId: healthCheck
      parameters:
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
  /loyalty/challenges/challenge:
    get:
      tags:
      - Challenge-State
      summary: Retrieve Challenges for a profileId
      operationId: challengeDetail
      parameters:
      - name: x-request-id
        in: header
        required: false
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      - name: x-gw-ims-org-id
        in: header
        required: true
        schema:
          type: string
      - name: x-sandbox-id
        in: header
        required: false
        schema:
          type: string
      - name: x-sandbox-name
        in: header
        required: true
        schema:
          type: string
      - name: test
        in: query
        description: True if running the challenge as a test
        required: false
        schema:
          type: boolean
          default: false
      - name: v
        in: query
        description: Version of the response
        required: false
        schema:
          type: string
          default: 99
      - name: pid
        in: query
        description: Profile Id of the Loyalty guest
        required: true
        schema:
          type: string
      - name: cid
        in: query
        description: Challenge Id if a specific challenge is requested; otherwise, all 'active' will be returned
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallengeList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '422':
          description: Unprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomProblemDetail'
components:
  schemas:
    Item:
      type: object
      properties:
        item_set:
          uniqueItems: true
          type: array
          items:
            type: string
        item_name:
          type: string
        quantity:
          type: integer
          format: int32
        unit_price:
          type: number
          format: float
        sub_total:
          type: number
          format: float
    Daypart:
      type: object
      properties:
        startMinute:
          type: integer
          format: int32
        endMinute:
          type: integer
          format: int32
    Reward:
      type: object
      properties:
        endpoint:
          type: string
        definition:
          type: string
        rewardValue:
          type: string
        rewardDefinition:
          $ref: '#/components/schemas/RewardDefinition'
        source:
          type: string
    ProblemDetail:
      type: object
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
          format: int32
        detail:
          type: string
        instance:
          type: string
          format: uri
        properties:
          type: object
          additionalProperties:
            type: object
    ChallengeList:
      type: object
      properties:
        challengeList:
          type: array
          items:
            $ref: '#/components/schemas/Challenge'
    Variables:
      type: object
      properties:
        include:
          $ref: '#/components/schemas/IncludeExclude'
        exclude:
          $ref: '#/components/schemas/IncludeExclude'
        goal:
          type: number
          format: float
        type:
          type: string
        singleTrans:
          type: boolean
        spendMin:
          type: number
          format: float
        qtyMin:
          type: number
          format: float
        maxTrans:
          type: integer
          format: int32
    Challenge:
      type: object
      properties:
        challenge_id:
          type: string
        profileId:
          type: string
        name:
          type: string
        desc:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        completionDate:
          type: string
          format: date-time
        signupDate:
          type: string
          format: date-time
        tasks:
          type: array
          items:
            $ref: '#/components/schemas/Task'
        tasksToComplete:
          type: integer
          format: int32
        dependsOn:
          $ref: '#/components/schemas/DependsOn'
        state:
          type: string
        optedIn:
          type: boolean
        singleTrans:
          type: boolean
        dayPart:
          $ref: '#/components/schemas/Daypart'
        pickYourTask:
          type: boolean
        reward:
          $ref: '#/components/schemas/Reward'
        milestones:
          $ref: '#/components/schemas/Milestone'
        accumRewards:
          type: number
        accumSpend:
          type: number
        kvpCustom:
          type: object
          additionalProperties:
            type: string
        schedule:
          $ref: '#/components/schemas/Schedule'
        challengeCompletions:
          type: array
          items:
            $ref: '#/components/schemas/ChallengeCompletion'
        personalized:
          type: boolean
    Milestone:
      type: object
      properties:
        contiguous:
          type: boolean
        interval:
          type: string
          enum:
          - none
          - task
          - daily
          - weekly
          - monthly
          - annually
        completions:
          type: array
          items:
            $ref: '#/components/schemas/MilestoneProperties'
        periodThreshold:
          type: integer
          format: int32
    Health:
      type: object
      properties:
        status:
          type: boolean
    Signup:
      type: object
      properties:
        profileId:
          type: string
        taskPicked:
          type: string
        data:
          $ref: '#/components/schemas/JsonNode'
        test:
          type: boolean
        challenge:
          $ref: '#/components/schemas/JsonNode'
    IncludeExclude:
      type: object
      properties:
        valuesSet:
          uniqueItems: true
          type: array
          items:
            type: string
    Accumulators:
      type: object
      properties:
        qty:
          type: number
          format: float
        spend:
          type: number
          format: float
        days:
          type: integer
          format: int32
        item_list:
          type: array
          items:
            $ref: '#/components/schemas/AppliedItem'
    PersonalizedTaskAttributes:
      type: object
      properties:
        desc:
          type: boolean
        name:
          type: boolean
        include_csv:
          type: boolean
        exclude_csv:
          type: boolean
        qtyMin:
          type: boolean
        spendMin:
          type: boolean
        multiDayDays:
          type: boolean
        streak:
          type: boolean
        maxRepeat:
          type: boolean
        duration:
          type: boolean
        reward:
          type: boolean
    MilestoneProperties:
      type: object
      properties:
        state:
          type: string
          enum:
          - incomplete
          - complete
          - retry
          - sent
          - failed
        count:
          type: integer
          format: int32
        rewardValue:
          type: string
        reward:
          $ref: '#/components/schemas/Reward'
    Schedule:
      type: object
      properties:
        maxRepeat:
          type: integer
          format: int32
        repeatCount:
          type: integer
          format: int32
        currentStreak:
          type: integer
          format: int32
        currentVisits:
          type: integer
          format: int32
        windowHours:
          type: integer
          format: int32
        maxRepeatPerWindow:
          type: integer
          format: int32
        repeatWindowHours:
          type: integer
          format: int32
        lastCompletedAt:
          type: string
          format: date-time
        lockWindowStart:
          type: string
          format: date-time
        lockWindowCount:
          type: integer
          format: int32
    ChallengeCompletion:
      type: object
      properties:
        challengeComplete:
          type: string
          format: date-time
    JsonNode:
      type: object
    DependsOn:
      type: object
      properties:
        state:
          type: string
        challengeId:
          type: string
    Task:
      type: object
      properties:
        taskState:
          type: string
        taskId:
          type: string
        taskName:
          type: string
        desc:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        variables:
          $ref: '#/components/schemas/Variables'
        accumulators:
          $ref: '#/components/schemas/Accumulators'
        schedule:
          $ref: '#/components/schemas/Schedule'
        taskCompletions:
          type: array
          items:
            $ref: '#/components/schemas/TaskCompletion'
        dependsOnTaskName:
          uniqueItems: true
          type: array
          items:
            type: string
        reward:
          $ref: '#/components/schemas/Reward'
        accumSpend:
          type: number
        personalizedTaskAttributes:
          $ref: '#/components/schemas/PersonalizedTaskAttributes'
    RewardDefinition:
      type: object
      properties:
        name:
          type: string
        desc:
          type: string
        denomination:
          type: string
        enabled:
          type: boolean
        rewardJsonata:
          type: string
    AppliedItem:
      type: object
      properties:
        item:
          $ref: '#/components/schemas/Item'
        get_id:
          type: string
        timestamp:
          type: string
          format: date-time
        timestampApplied:
          type: string
          format: date-time
        utcOffset:
          type: object
          properties:
            totalSeconds:
              type: integer
              format: int32
            id:
              type: string
            rules:
              type: object
              properties:
                fixedOffset:
                  type: boolean
                transitions:
                  type: array
                  items:
                    type: object
                    properties:
                      instant:
                        type: string
                        format: date-time
                      overlap:
                        type: boolean
                      duration:
                        type: object
                        properties:
                          seconds:
                            type: integer
                            format: int64
                          zero:
                            type: boolean
                          nano:
                            type: integer
                            format: int32
                          negative:
                            type: boolean
                          positive:
                            type: boolean
                          units:
                            type: array
                            items:
                              type: object
                              properties:
                                durationEstimated:
                                  type: boolean
                                timeBased:
                                  type: boolean
                                dateBased:
                                  type: boolean
                      gap:
                        type: boolean
                      dateTimeAfter:
                        type: string
                        format: date-time
                      dateTimeBefore:
                        type: string
                        format: date-time
                transitionRules:
                  type: array
                  items:
                    type: object
                    properties:
                      month:
                        type: string
                        enum:
                        - JANUARY
                        - FEBRUARY
                        - MARCH
                        - APRIL
                        - MAY
                        - JUNE
                        - JULY
                        - AUGUST
                        - SEPTEMBER
                        - OCTOBER
                        - NOVEMBER
                        - DECEMBER
                      timeDefinition:
                        type: string
                        enum:
                        - UTC
                        - WALL
                        - STANDARD
                      dayOfWeek:
                        type: string
                        enum:
                        - MONDAY
                        - TUESDAY
                        - WEDNESDAY
                        - THURSDAY
                        - FRIDAY
                        - SATURDAY
                        - SUNDAY
                      dayOfMonthIndicator:
                        type: integer
                        format: int32
                      localTime:
                        $ref: '#/components/schemas/LocalTime'
                      midnightEndOfDay:
                        ty

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/openapi/adobe-suite-challenge-state-api-openapi.yml