Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Testflinger Job API
10 actions
10 updates
phrasing
extends
openapi/canonical-job-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canonical's API. It is a proposal applied on top of the contract, not a document Canonical publishes.
What the actions change
x-apievangelist-phrasing
Targets 10
$.info
$.paths['/v1/job'].get
$.paths['/v1/job'].post
$.paths['/v1/job/search'].get
$.paths['/v1/job/{job_id}'].get
$.paths['/v1/job/{job_id}/action'].post
$.paths['/v1/job/{job_id}/events'].post
$.paths['/v1/job/{job_id}/position'].get
$.paths['/v1/job/{job_id}/attachments'].get
$.paths['/v1/job/{job_id}/attachments'].post
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 Testflinger Job API
version: 1.0.0
extends: openapi/canonical-job-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 9
- target: $.paths['/v1/job'].get
update:
x-apievangelist-phrasing:
intent: Pick up the next job from a queue
effect: read
questions:
- How does an agent ask the server for the next job on its queues?
- What does an agent get back when no job is waiting on its queues?
instructions:
- text: Request the next available job for my agent's queues.
- text: Fetch a job to run from the queues this agent supports.
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job'].post
update:
x-apievangelist-phrasing:
intent: Submit a test job
effect: write
questions:
- How do I submit a test job to a Testflinger queue?
- Can I set a priority and a global timeout when I submit a job?
- Is it possible to get webhook updates as my job changes status?
instructions:
- text: Submit a job to queue {job_queue}.
slots:
job_queue: requestBody.job_queue
- text: Queue job {name} on {job_queue} with priority {job_priority}.
slots:
name: requestBody.name
job_queue: requestBody.job_queue
job_priority: requestBody.job_priority
- text: Submit a job to {job_queue} tagged {tags} and post status to {job_status_webhook}.
slots:
job_queue: requestBody.job_queue
tags: requestBody.tags
job_status_webhook: requestBody.job_status_webhook
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/search'].get
update:
x-apievangelist-phrasing:
intent: Search jobs by tag
effect: read
questions:
- Can I find all jobs carrying a certain tag?
- Which of my tagged jobs are still running?
instructions:
- text: Search for jobs tagged {tags}.
slots:
tags: query.tags
- text: Find jobs matching {match} of tags {tags} in state {state}.
slots:
match: query.match
tags: query.tags
state: query.state
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a job's definition
effect: read
questions:
- What did I submit as the definition of a job that already ran?
- Can I see the provision and test data of a past job?
instructions:
- text: Show the job definition for {job_id}.
slots:
job_id: path.job_id
- text: Get the submitted JSON of job {job_id}.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}/action'].post
update:
x-apievangelist-phrasing:
intent: Take an action on a job
effect: write
questions:
- How do I change the status of a job that is queued or running?
- Which job actions does the server accept for a job ID?
instructions:
- text: Apply action {action} to job {job_id}.
slots:
action: requestBody.action
job_id: path.job_id
- text: Send the {action} action to job {job_id}.
slots:
action: requestBody.action
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}/events'].post
update:
x-apievangelist-phrasing:
intent: Forward job status events to a webhook
effect: write
questions:
- How does an agent push job status events to the webhook the user registered?
- Can job events be forwarded to the configured status webhook?
instructions:
- text: Post events {events} for job {job_id} to webhook {job_status_webhook}.
slots:
events: requestBody.events
job_id: path.job_id
job_status_webhook: requestBody.job_status_webhook
- text: Forward job {job_id} status updates to {job_status_webhook}.
slots:
job_id: path.job_id
job_status_webhook: requestBody.job_status_webhook
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}/position'].get
update:
x-apievangelist-phrasing:
intent: Get a job's place in the queue
effect: read
questions:
- How many jobs are ahead of mine in the queue?
- Has my queued job moved up yet?
instructions:
- text: Show the queue position of job {job_id}.
slots:
job_id: path.job_id
- text: Tell me where job {job_id} sits in its queue.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}/attachments'].get
update:
x-apievangelist-phrasing:
intent: Download a job's attachments
effect: read
questions:
- Where can an agent download the files attached to a job?
- Can I retrieve the attachment tarball I uploaded with a job?
instructions:
- text: Download the attachments bundle for job {job_id}.
slots:
job_id: path.job_id
- text: Get the attachment tarball of job {job_id}.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/job/{job_id}/attachments'].post
update:
x-apievangelist-phrasing:
intent: Upload a job's attachments
effect: write
questions:
- How do I attach local files to a job I submitted?
- Can I send an attachment bundle along with a test job?
instructions:
- text: Upload the attachments bundle for job {job_id}.
slots:
job_id: path.job_id
- text: Attach this tarball to job {job_id}.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'