# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Microsoft Azure Azure Communication Service Routing API version: 1.0.0 extends: openapi/microsoft-azure-routing-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: 33 - target: $.paths['/routing/classificationPolicies'].get update: x-apievangelist-phrasing: intent: List job classification policies effect: read questions: - How do I see every classification policy set up in Job Router? - Which classification policies decide how incoming jobs get their queue and priority? instructions: - text: List all my Job Router classification policies. - text: Show up to {maxpagesize} classification policies per page. slots: maxpagesize: query.maxpagesize method: generated generated: '2026-09-26' - target: $.paths['/routing/classificationPolicies/{classificationPolicyId}'].get update: x-apievangelist-phrasing: intent: Get a classification policy effect: read questions: - Can I look up the rules inside one specific classification policy? - What fallback queue does a given classification policy use? instructions: - text: Get classification policy {classificationPolicyId}. slots: classificationPolicyId: path.classificationPolicyId - text: Show me the queue selectors and prioritization rule on classification policy {classificationPolicyId}. slots: classificationPolicyId: path.classificationPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/classificationPolicies/{classificationPolicyId}'].delete update: x-apievangelist-phrasing: intent: Delete a classification policy effect: destructive questions: - How do I remove a classification policy I no longer use for routing jobs? - Can a classification policy be deleted by its id? instructions: - text: Delete classification policy {classificationPolicyId}. slots: classificationPolicyId: path.classificationPolicyId - text: Remove the job classification policy {classificationPolicyId} from Job Router. slots: classificationPolicyId: path.classificationPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/classificationPolicies/{classificationPolicyId}'].patch update: x-apievangelist-phrasing: intent: Create or update a classification policy effect: write questions: - How do I set up a classification policy that assigns a fallback queue to jobs? - Can I change the prioritization rule on an existing classification policy? - Is there a way to attach worker selectors to jobs automatically when they are classified? instructions: - text: Create classification policy {classificationPolicyId} named {name} with fallback queue {fallbackQueueId}. slots: classificationPolicyId: path.classificationPolicyId name: requestBody.name fallbackQueueId: requestBody.fallbackQueueId - text: Update classification policy {classificationPolicyId} to use prioritization rule {prioritizationRule}. slots: classificationPolicyId: path.classificationPolicyId prioritizationRule: requestBody.prioritizationRule method: generated generated: '2026-09-26' - target: $.paths['/routing/distributionPolicies'].get update: x-apievangelist-phrasing: intent: List job distribution policies effect: read questions: - Where can I see all the distribution policies that control how job offers go out to workers? - Which distribution policies exist in my Job Router setup? instructions: - text: List all Job Router distribution policies. - text: Page through distribution policies {maxpagesize} at a time. slots: maxpagesize: query.maxpagesize method: generated generated: '2026-09-26' - target: $.paths['/routing/distributionPolicies/{distributionPolicyId}'].get update: x-apievangelist-phrasing: intent: Get a distribution policy effect: read questions: - How long do offers last under a particular distribution policy? - Can I check which distribution mode a specific policy uses? instructions: - text: Get distribution policy {distributionPolicyId}. slots: distributionPolicyId: path.distributionPolicyId - text: Show the offer expiry and mode for distribution policy {distributionPolicyId}. slots: distributionPolicyId: path.distributionPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/distributionPolicies/{distributionPolicyId}'].delete update: x-apievangelist-phrasing: intent: Delete a distribution policy effect: destructive questions: - How do I get rid of a distribution policy no queue uses anymore? - Can I delete a job distribution policy by id? instructions: - text: Delete distribution policy {distributionPolicyId}. slots: distributionPolicyId: path.distributionPolicyId - text: Remove the distribution policy {distributionPolicyId} from Job Router. slots: distributionPolicyId: path.distributionPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/distributionPolicies/{distributionPolicyId}'].patch update: x-apievangelist-phrasing: intent: Create or update a distribution policy effect: write questions: - How do I create a distribution policy that expires job offers after a set number of seconds? - Can I switch the distribution mode on an existing policy? instructions: - text: Create distribution policy {distributionPolicyId} named {name} with offers expiring after {offerExpiresAfterSeconds} seconds. slots: distributionPolicyId: path.distributionPolicyId name: requestBody.name offerExpiresAfterSeconds: requestBody.offerExpiresAfterSeconds - text: Set the mode of distribution policy {distributionPolicyId} to {mode}. slots: distributionPolicyId: path.distributionPolicyId mode: requestBody.mode method: generated generated: '2026-09-26' - target: $.paths['/routing/exceptionPolicies'].get update: x-apievangelist-phrasing: intent: List job exception policies effect: read questions: - Which exception policies are defined for handling jobs that wait too long or overflow? - How can I view all Job Router exception policies? instructions: - text: List all Job Router exception policies. - text: Show exception policies with {maxpagesize} per page. slots: maxpagesize: query.maxpagesize method: generated generated: '2026-09-26' - target: $.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].get update: x-apievangelist-phrasing: intent: Get an exception policy effect: read questions: - What exception rules are inside one particular exception policy? - Can I inspect a single exception policy by its id? instructions: - text: Get exception policy {exceptionPolicyId}. slots: exceptionPolicyId: path.exceptionPolicyId - text: Show me the exception rules in policy {exceptionPolicyId}. slots: exceptionPolicyId: path.exceptionPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].delete update: x-apievangelist-phrasing: intent: Delete an exception policy effect: destructive questions: - How do I delete an exception policy from Job Router? - Can I remove an exception policy that queues no longer reference? instructions: - text: Delete exception policy {exceptionPolicyId}. slots: exceptionPolicyId: path.exceptionPolicyId - text: Remove the exception policy {exceptionPolicyId}. slots: exceptionPolicyId: path.exceptionPolicyId method: generated generated: '2026-09-26' - target: $.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].patch update: x-apievangelist-phrasing: intent: Create or update an exception policy effect: write questions: - How do I define exception rules that trigger when a job sits in a queue too long? - Can I rename or change the rules on an existing exception policy? instructions: - text: Create exception policy {exceptionPolicyId} named {name}. slots: exceptionPolicyId: path.exceptionPolicyId name: requestBody.name - text: Replace the exception rules on policy {exceptionPolicyId} with {exceptionRules}. slots: exceptionPolicyId: path.exceptionPolicyId exceptionRules: requestBody.exceptionRules method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs'].get update: x-apievangelist-phrasing: intent: List router jobs with filters effect: read questions: - How do I find all router jobs sitting in a particular queue? - Can I filter jobs by status or by the channel they came in on? - Which jobs are scheduled to run before a certain time? instructions: - text: List router jobs with status {status}. slots: status: query.status - text: Show jobs in queue {queueId} on channel {channelId}. slots: queueId: query.queueId channelId: query.channelId - text: Find jobs scheduled after {scheduledAfter} and before {scheduledBefore}. slots: scheduledAfter: query.scheduledAfter scheduledBefore: query.scheduledBefore method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}'].get update: x-apievangelist-phrasing: intent: Get a router job effect: read questions: - Can I pull up the full details of one router job by its id? - What priority and labels does a specific job currently have? instructions: - text: Get router job {jobId}. slots: jobId: path.jobId - text: Show me the details of job {jobId}. slots: jobId: path.jobId method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}'].delete update: x-apievangelist-phrasing: intent: Delete a job and its traces effect: destructive questions: - How do I permanently delete a router job along with all its traces? - Can I purge a job's history completely from Job Router? instructions: - text: Delete router job {jobId} and all of its traces. slots: jobId: path.jobId - text: Purge job {jobId} from Job Router. slots: jobId: path.jobId method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}'].patch update: x-apievangelist-phrasing: intent: Create or update a router job effect: write questions: - How do I submit a new job into a Job Router queue? - Can I change the priority of a job that's already waiting? - Is it possible to require specific worker selectors when creating a job? instructions: - text: Create job {jobId} on channel {channelId} in queue {queueId} with priority {priority}. slots: jobId: path.jobId channelId: requestBody.channelId queueId: requestBody.queueId priority: requestBody.priority - text: Update job {jobId} to use classification policy {classificationPolicyId}. slots: jobId: path.jobId classificationPolicyId: requestBody.classificationPolicyId - text: Add the notes {notes} to job {jobId}. slots: notes: requestBody.notes jobId: path.jobId method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}:reclassify'].post update: x-apievangelist-phrasing: intent: Reclassify a job effect: write questions: - How do I rerun classification on a job after its labels changed? - Can a waiting job be sent back through its classification policy? instructions: - text: Reclassify job {jobId}. slots: jobId: path.jobId - text: Run classification again on router job {jobId}. slots: jobId: path.jobId method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}:cancel'].post update: x-apievangelist-phrasing: intent: Cancel a router job effect: destructive questions: - How do I cancel a job before any worker picks it up? - Can I record a reason or disposition code when cancelling a job? instructions: - text: Cancel job {jobId}. slots: jobId: path.jobId - text: Cancel job {jobId} with the note {note} and disposition code {dispositionCode}. slots: jobId: path.jobId note: requestBody.note dispositionCode: requestBody.dispositionCode method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}/assignments/{assignmentId}:complete'].post update: x-apievangelist-phrasing: intent: Complete an assigned job effect: write questions: - How does a worker mark an assigned job as done? - Can I attach a note when completing a job assignment? instructions: - text: Complete assignment {assignmentId} of job {jobId}. slots: assignmentId: path.assignmentId jobId: path.jobId - text: Mark job {jobId} assignment {assignmentId} complete with note {note}. slots: jobId: path.jobId assignmentId: path.assignmentId note: requestBody.note method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}/assignments/{assignmentId}:close'].post update: x-apievangelist-phrasing: intent: Close a completed job effect: destructive questions: - How do I close out a job that has already been completed? - Can I schedule a completed job to close at a later time with a disposition code? instructions: - text: Close job {jobId} for assignment {assignmentId}. slots: jobId: path.jobId assignmentId: path.assignmentId - text: Close completed job {jobId} assignment {assignmentId} at {closeAt} with disposition {dispositionCode}. slots: jobId: path.jobId assignmentId: path.assignmentId closeAt: requestBody.closeAt dispositionCode: requestBody.dispositionCode method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}/assignments/{assignmentId}:unassign'].post update: x-apievangelist-phrasing: intent: Unassign a job from a worker effect: write questions: - How do I take a job back from the worker it was assigned to? - Can I unassign a job and stop it from being matched again right away? instructions: - text: Unassign job {jobId} from assignment {assignmentId}. slots: jobId: path.jobId assignmentId: path.assignmentId - text: Unassign job {jobId} assignment {assignmentId} and set suspend matching to {suspendMatching}. slots: jobId: path.jobId assignmentId: path.assignmentId suspendMatching: requestBody.suspendMatching method: generated generated: '2026-09-26' - target: $.paths['/routing/jobs/{jobId}/position'].get update: x-apievangelist-phrasing: intent: Get a job's position in its queue effect: read questions: - Where is my job in the queue right now? - How many jobs are ahead of a particular waiting job? instructions: - text: Get the queue position of job {jobId}. slots: jobId: path.jobId - text: Tell me where job {jobId} sits in its queue. slots: jobId: path.jobId method: generated generated: '2026-09-26' - target: $.paths['/routing/queues'].get update: x-apievangelist-phrasing: intent: List job queues effect: read questions: - What queues are configured in Job Router? - How can I list every queue jobs can be routed to? instructions: - text: List all Job Router queues. - text: Show queues {maxpagesize} per page. slots: maxpagesize: query.maxpagesize method: generated generated: '2026-09-26' - target: $.paths['/routing/queues/{queueId}'].get update: x-apievangelist-phrasing: intent: Get a queue's configuration effect: read questions: - Which distribution and exception policies does one queue use? - Can I read the labels set on a specific queue? instructions: - text: Get queue {queueId}. slots: queueId: path.queueId - text: Show the policies attached to queue {queueId}. slots: queueId: path.queueId method: generated generated: '2026-09-26' - target: $.paths['/routing/queues/{queueId}'].delete update: x-apievangelist-phrasing: intent: Delete a queue effect: destructive questions: - How do I delete a Job Router queue I no longer need? - Can a queue be removed by its id? instructions: - text: Delete queue {queueId}. slots: queueId: path.queueId - text: Remove Job Router queue {queueId}. slots: queueId: path.queueId method: generated generated: '2026-09-26' - target: $.paths['/routing/queues/{queueId}'].patch update: x-apievangelist-phrasing: intent: Create or update a queue effect: write questions: - How do I create a new queue with its own distribution policy? - Can I attach an exception policy to an existing queue? instructions: - text: Create queue {queueId} named {name} using distribution policy {distributionPolicyId}. slots: queueId: path.queueId name: requestBody.name distributionPolicyId: requestBody.distributionPolicyId - text: Attach exception policy {exceptionPolicyId} to queue {queueId}. slots: exceptionPolicyId: requestBody.exceptionPolicyId queueId: path.queueId method: generated generated: '2026-09-26' - target: $.paths['/routing/queues/{queueId}/statistics'].get update: x-apievangelist-phrasing: intent: Get queue statistics effect: read questions: - How many jobs are waiting in a queue and how long have they waited? - Is there a way to see live statistics for a single queue? instructions: - text: Get statistics for queue {queueId}. slots: queueId: path.queueId - text: Show me the current wait metrics for queue {queueId}. slots: queueId: path.queueId method: generated generated: '2026-09-26' - target: $.paths['/routing/workers'].get update: x-apievangelist-phrasing: intent: List router workers effect: read questions: - Which workers are currently active and have capacity to take jobs? - Can I list workers that serve a specific queue or channel? instructions: - text: List workers in state {state}. slots: state: query.state - text: Show workers on queue {queueId} with capacity available set to {hasCapacity}. slots: queueId: query.queueId hasCapacity: query.hasCapacity - text: List workers registered for channel {channelId}. slots: channelId: query.channelId method: generated generated: '2026-09-26' - target: $.paths['/routing/workers/{workerId}'].get update: x-apievangelist-phrasing: intent: Get a router worker effect: read questions: - What queues and channels is a specific worker registered for? - Can I check whether one worker is available for offers? instructions: - text: Get worker {workerId}. slots: workerId: path.workerId - text: Show the capacity and offers for worker {workerId}. slots: workerId: path.workerId method: generated generated: '2026-09-26' - target: $.paths['/routing/workers/{workerId}'].delete update: x-apievangelist-phrasing: intent: Delete a worker and its traces effect: destructive questions: - How do I remove a worker and all its history from Job Router? - Can I delete a worker who has left the team? instructions: - text: Delete worker {workerId} and all of its traces. slots: workerId: path.workerId - text: Remove worker {workerId} from Job Router. slots: workerId: path.workerId method: generated generated: '2026-09-26' - target: $.paths['/routing/workers/{workerId}'].patch update: x-apievangelist-phrasing: intent: Create or update a worker effect: write questions: - How do I register a new worker with a set capacity? - Can I toggle whether a worker is available for job offers? - What limits how many offers a worker gets at once? instructions: - text: Register worker {workerId} with capacity {capacity}. slots: workerId: path.workerId capacity: requestBody.capacity - text: Set worker {workerId} available for offers to {availableForOffers}. slots: workerId: path.workerId availableForOffers: requestBody.availableForOffers - text: Limit worker {workerId} to {maxConcurrentOffers} concurrent offers. slots: workerId: path.workerId maxConcurrentOffers: requestBody.maxConcurrentOffers method: generated generated: '2026-09-26' - target: $.paths['/routing/workers/{workerId}/offers/{offerId}:accept'].post update: x-apievangelist-phrasing: intent: Accept a job offer effect: write questions: - How does a worker accept an offer to work on a job? - What happens if another agent already accepted the same job offer? instructions: - text: Accept offer {offerId} for worker {workerId}. slots: offerId: path.offerId workerId: path.workerId - text: Have worker {workerId} take the job in offer {offerId}. slots: workerId: path.workerId offerId: path.offerId method: generated generated: '2026-09-26' - target: $.paths['/routing/workers/{workerId}/offers/{offerId}:decline'].post update: x-apievangelist-phrasing: intent: Decline a job offer effect: write questions: - How can a worker turn down a job offer? - Can I decline an offer but have it retried at a later time? instructions: - text: Decline offer {offerId} for worker {workerId}. slots: offerId: path.offerId workerId: path.workerId - text: Decline offer {offerId} for worker {workerId} and retry it at {retryOfferAt}. slots: offerId: path.offerId workerId: path.workerId retryOfferAt: requestBody.retryOfferAt method: generated generated: '2026-09-26'