# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for AJO Customer Loyalty Metadata Challenges API version: 1.0.0 extends: openapi/adobe-suite-challenges-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 11 - target: $.paths['/loyalty/metadata/challenges/{challengeId}'].get update: x-apievangelist-phrasing: intent: Get a loyalty challenge effect: read questions: - What tasks and rewards are set up on one particular loyalty challenge? - Can I look up a loyalty challenge by its ID to check its state? instructions: - text: Show loyalty challenge {challengeId}. slots: challengeId: path.challengeId - text: Get the configuration of challenge {challengeId}. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}'].put update: x-apievangelist-phrasing: intent: Replace a loyalty challenge entirely effect: write questions: - How do I overwrite a whole loyalty challenge definition with a new one? - Can I change a challenge's start and end dates by replacing it? instructions: - text: Replace challenge {challengeId} with name {name}, running {startDate} to {endDate}. slots: challengeId: path.challengeId name: requestBody.name startDate: requestBody.startDate endDate: requestBody.endDate - text: Overwrite challenge {challengeId} with tasks {tasks} and reward {reward}. slots: challengeId: path.challengeId tasks: requestBody.tasks reward: requestBody.reward method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}'].delete update: x-apievangelist-phrasing: intent: Delete a loyalty challenge and its journey effect: destructive questions: - What happens to the linked journey when I delete a loyalty challenge? - How do I permanently remove a loyalty challenge? instructions: - text: Delete loyalty challenge {challengeId} along with its journey. slots: challengeId: path.challengeId - text: Remove challenge {challengeId} for good. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}'].patch update: x-apievangelist-phrasing: intent: Partially update a loyalty challenge effect: write questions: - Can I change only a few top-level fields of a challenge without resending the whole thing? - Is there a way to patch a loyalty challenge instead of replacing it? instructions: - text: Patch just the changed fields on challenge {challengeId}. slots: challengeId: path.challengeId - text: Partially update loyalty challenge {challengeId}. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges'].get update: x-apievangelist-phrasing: intent: List loyalty challenges effect: read questions: - Which loyalty challenges have we set up in this sandbox? - Can I filter and sort the list of loyalty challenges by property? instructions: - text: List all loyalty challenges. - text: Show {limit} challenges matching {property}, ordered by {orderby}. slots: limit: query.limit property: query.property orderby: query.orderby method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges'].post update: x-apievangelist-phrasing: intent: Create a loyalty challenge effect: write questions: - How do I set up a new loyalty challenge for customers to complete? - Can a new challenge require only some of its tasks to be completed? instructions: - text: Create a loyalty challenge named {name} from {startDate} to {endDate}. slots: name: requestBody.name startDate: requestBody.startDate endDate: requestBody.endDate - text: Create challenge {name} with tasks {tasks}, needing {tasksToComplete} completed, reward {reward}. slots: name: requestBody.name tasks: requestBody.tasks tasksToComplete: requestBody.tasksToComplete reward: requestBody.reward method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}/unpublish'].post update: x-apievangelist-phrasing: intent: Unpublish a loyalty challenge effect: write questions: - How can I take a live loyalty challenge away from customers? - Can I pull a published challenge without deleting it? instructions: - text: Unpublish challenge {challengeId}. slots: challengeId: path.challengeId - text: Make challenge {challengeId} unavailable to customers. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}/publish'].post update: x-apievangelist-phrasing: intent: Publish a loyalty challenge to customers effect: write questions: - What makes a loyalty challenge go live for customers? - Can I dry-run publishing a challenge just to check it for errors? instructions: - text: Publish challenge {challengeId}. slots: challengeId: path.challengeId - text: Validate challenge {challengeId} for publishing with dry-run {dryRun}. slots: challengeId: path.challengeId dryRun: query.dry-run method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}/duplicate'].post update: x-apievangelist-phrasing: intent: Duplicate a loyalty challenge effect: write questions: - Can I clone an existing loyalty challenge including its journey and campaigns? - What's the fastest way to make a copy of a challenge as a starting point? instructions: - text: Duplicate challenge {challengeId}. slots: challengeId: path.challengeId - text: Make a copy of loyalty challenge {challengeId} with its journey metadata. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/{challengeId}/archive'].post update: x-apievangelist-phrasing: intent: Archive a loyalty challenge effect: destructive questions: - What can I still do with a loyalty challenge after it's archived? - Can I retire a challenge without deleting it right away? instructions: - text: Archive challenge {challengeId}. slots: challengeId: path.challengeId - text: Retire loyalty challenge {challengeId} into the archived state. slots: challengeId: path.challengeId method: generated generated: '2026-09-26' - target: $.paths['/loyalty/metadata/challenges/initialize'].post update: x-apievangelist-phrasing: intent: Initialize shell journeys and challenges effect: write questions: - How do I bootstrap the shell journey and challenges for loyalty in a new sandbox? - Is there a setup call that initializes loyalty challenges before I create any? instructions: - text: Initialize the shell journey and challenges for loyalty. - text: Set up the starter loyalty challenge shells in sandbox {sandboxId}. slots: sandboxId: header.x-sandbox-id method: generated generated: '2026-09-26'