Adobe Suite Challenges API

Manage the creation, updating, deleting, and retrieval of Challenges

Operations 11

GET /loyalty/metadata/challenges/{challengeId} Retrieve a Challenge by its challengeId #
PUT /loyalty/metadata/challenges/{challengeId} Replace an existing challenge by overwriting #
DELETE /loyalty/metadata/challenges/{challengeId} Delete a challenge and its associated journey #
PATCH /loyalty/metadata/challenges/{challengeId} Patch an existing challenge by root keys if present #
GET /loyalty/metadata/challenges Retrieve all Challenges with filtering and sorting #
POST /loyalty/metadata/challenges Create a Challenge #
POST /loyalty/metadata/challenges/{challengeId}/unpublish Unpublish a Challenge and make it unavailable to your customers #
POST /loyalty/metadata/challenges/{challengeId}/publish Publish a Challenge and make it available to your customers #
POST /loyalty/metadata/challenges/{challengeId}/duplicate Duplicate a challenge including journey metadata and campaigns #
POST /loyalty/metadata/challenges/{challengeId}/archive Archive a Challenge. Once in this state, the challenge can only be deleted. #
POST /loyalty/metadata/challenges/initialize Initialize shell journey & challenges #

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-challenges-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-challenges-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AJO Customer Loyalty Metadata Challenges API
  description: APIs for managing AJO Customer Loyalty. <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: 0.1.0
servers:
- url: http://localhost:8081
  description: Local
- url: https://loyalty-metadata-service-stage2.corp.ethos12-stage-va7.ethos.adobe.net
  description: Stage
- url: https://platform.adobe.io/ajo
  description: Prod
tags:
- name: Challenges
  description: Manage the creation, updating, deleting, and retrieval of Challenges
paths:
  /loyalty/metadata/challenges/{challengeId}:
    get:
      tags:
      - Challenges
      summary: Retrieve a Challenge by its challengeId
      operationId: readOne_1
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        description: Challenge to retrieve
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Challenge'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    put:
      tags:
      - Challenges
      summary: Replace an existing challenge by overwriting
      operationId: update_1
      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: 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/Challenge'
        required: true
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Cannot modify a published challenge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    delete:
      tags:
      - Challenges
      summary: Delete a challenge and its associated journey
      description: Deletes the challenge from MongoDB. If a journey is linked, it will be automatically deleted from AJO.
      operationId: delete_1
      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: Authorization
        in: header
        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/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    patch:
      tags:
      - Challenges
      summary: Patch an existing challenge by root keys if present
      operationId: patch_1
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: object
        required: true
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Cannot modify a published challenge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges:
    get:
      tags:
      - Challenges
      summary: Retrieve all Challenges with filtering and sorting
      operationId: readMany_1
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Specifies a positive integer as a hint as to the maximum number of items that should be returned for a given request.
        required: false
        schema:
          type: integer
          format: int32
          default: 25
      - name: start
        in: query
        description: Specifies where a sub-set list of items should begin
        required: false
        schema:
          type: string
      - name: orderby
        in: query
        description: Specifies the comma-separated list of properties by which the resource should be sorted
        required: false
        schema:
          type: string
          default: -creationDate
      - name: property
        in: query
        description: One or more of the comma-separated list of properties. MUST all match for an item to match that is multiple filters MUST be AND-ed
        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/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
    post:
      tags:
      - Challenges
      summary: Create a Challenge
      operationId: create_1
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Challenge'
        required: true
      responses:
        '200':
          description: Success
          headers:
            x-resource-id:
              description: id of the newly created Challenge
              style: simple
            Location:
              description: URI of the newly created Challenge
              style: simple
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Challenge'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Referenced task template not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges/{challengeId}/unpublish:
    post:
      tags:
      - Challenges
      summary: Unpublish a Challenge and make it unavailable to your customers
      operationId: unPublish
      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: Authorization
        in: header
        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/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges/{challengeId}/publish:
    post:
      tags:
      - Challenges
      summary: Publish a Challenge and make it available to your customers
      operationId: publish
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        required: true
        schema:
          type: string
      - name: dry-run
        in: query
        description: When provided and is 'true', the challenge is merely checked for correctness and determines whether it can be published
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Success
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge or configuration not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges/{challengeId}/duplicate:
    post:
      tags:
      - Challenges
      summary: Duplicate a challenge including journey metadata and campaigns
      operationId: duplicate
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: challengeId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Challenge duplicated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Challenge'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Source challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges/{challengeId}/archive:
    post:
      tags:
      - Challenges
      summary: Archive a Challenge. Once in this state, the challenge can only be deleted.
      operationId: archive
      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: Authorization
        in: header
        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/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
  /loyalty/metadata/challenges/initialize:
    post:
      tags:
      - Challenges
      summary: Initialize shell journey & challenges
      operationId: initialize
      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: Authorization
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: Challenge not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '409':
          description: Challenge is already associated with a journey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
components:
  schemas:
    ContentPhaseConfig:
      type: object
      description: Message sequence for a journey phase
      properties:
        messages:
          type: array
          description: Ordered list of messages for this phase
          items:
            $ref: '#/components/schemas/MessageConfig'
    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
    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: double
        type:
          type: string
        singleTrans:
          type: boolean
        spendMin:
          type: number
          format: float
        qtyMin:
          type: number
          format: float
        maxTrans:
          type: integer
          format: int32
    AudienceQualificationConfig:
      type: object
      description: Audience configuration for journey targeting
      properties:
        segmentName:
          type: string
          description: Human-readable segment name (optional, for documentation)
          example: High-Value Mobile Users
        segmentId:
          type: string
          description: Adobe Experience Platform segment/audience UUID
          example: 88e4300a-c762-4cd6-8bd0-c0c02ba9afcf
          pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
      required:
      - segmentId
    Challenge:
      type: object
      properties:
        get_id:
          type: string
        imsOrgId:
          type: string
        sandboxId:
          type: string
        name:
          type: string
        desc:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        signupEventName:
          type: string
        dependsOn:
          type: array
          items:
            $ref: '#/components/schemas/DependsOn'
        tasks:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/PurchaseTask'
        creationDate:
          type: string
          format: date-time
        lastModifiedDate:
          type: string
          format: date-time
        state:
          type: string
          enum:
          - draft
          - published
          - archived
        tasksToComplete:
          type: integer
          format: int32
        schemaVersion:
          type: integer
          format: int32
        publishedVersion:
          type: integer
          format: int32
        active:
          type: boolean
        autoSignupWhenEventApplied:
          type: boolean
        linkedJourneyContainerId:
          type: string
        linkedJourneyVersionId:
          type: string
        eventTemplates:
          $ref: '#/components/schemas/EventTemplatesConfig'
        dirtyJourneyState:
          type: boolean
        singleTrans:
          type: boolean
        dayPart:
          $ref: '#/components/schemas/Daypart'
        personalized:
          type: boolean
        pickYourTask:
          type: boolean
        reward:
          $ref: '#/components/schemas/Reward'
        personalizedAttributes:
          $ref: '#/components/schemas/PersonalizedAttributes'
        kvpCustom:
          type: object
          additionalProperties:
            type: string
        uiStash:
          type: string
        createdBy:
          type: string
        lastModifiedBy:
          type: string
        journeyMetadata:
          $ref: '#/components/schemas/JourneyMetadata'
        milestones:
          $ref: '#/components/schemas/Milestone'
        audienceId:
          type: string
        p13nDatasetId:
          type: string
        taskTemplates:
          type: array
          items:
            $ref: '#/components/schemas/TaskTemplate'
    Milestone:
      type: object
      properties:
        contiguous:
          type: boolean
        interval:
          type: string
          enum:
          - none
          - task
          - daily
          - weekly
          - monthly
          - annually
        completions:
          type: array
          items:
            $ref: '#/components/schemas/MilestoneReward'
    PurchaseTask:
      allOf:
      - $ref: '#/components/schemas/Task'
    IncludeExclude:
      type: object
      properties:
        values_csv:
          type: string
        valuesSet:
          type: array
          items:
            type: string
          uniqueItems: true
    PersonalizedAttributes:
      type: object
      properties:
        desc:
          type: boolean
        dayPart:
          type: boolean
        reward:
          type: boolean
        milestones:
          type: boolean
        allTasks:
          type: boolean
    MetadataConfig:
      type: object
      description: Journ

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