Microsoft Azure · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Microsoft Azure Azure Communication Service Routing API
34 actions
34 updates
phrasing
extends
openapi/microsoft-azure-routing-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Microsoft Azure's API. It is a proposal applied on top of the contract, not a document Microsoft Azure publishes.
What the actions change
x-apievangelist-phrasing
Targets 34 · first 16 shown; the file carries all of them
$.info
$.paths['/routing/classificationPolicies'].get
$.paths['/routing/classificationPolicies/{classificationPolicyId}'].get
$.paths['/routing/classificationPolicies/{classificationPolicyId}'].delete
$.paths['/routing/classificationPolicies/{classificationPolicyId}'].patch
$.paths['/routing/distributionPolicies'].get
$.paths['/routing/distributionPolicies/{distributionPolicyId}'].get
$.paths['/routing/distributionPolicies/{distributionPolicyId}'].delete
$.paths['/routing/distributionPolicies/{distributionPolicyId}'].patch
$.paths['/routing/exceptionPolicies'].get
$.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].get
$.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].delete
$.paths['/routing/exceptionPolicies/{exceptionPolicyId}'].patch
$.paths['/routing/jobs'].get
$.paths['/routing/jobs/{jobId}'].get
$.paths['/routing/jobs/{jobId}'].delete
OpenAPI Overlay
# 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'
Work with this as data
Every overlay 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 openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.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.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/microsoft-azure-routing-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.