Canonical V1 API

The V1 API from Canonical — 29 operation(s) for v1.

Operations 41

GET /v1/ Identify ourselves #
GET /v1/job Request a job to run from supported queues #
POST /v1/job Add a job to the queue #
GET /v1/job/search Search for jobs by tags #
GET /v1/agents/data Get all agent data #
GET /v1/job/{job_id} Request the json job definition for a specified job, even if it has #
POST /v1/oauth2/token Issue both access token and refresh token for a client #
GET /v1/agents/queues Get all advertised queues from this server #
POST /v1/agents/queues Tell testflinger the queue names that are being serviced #
POST /v1/agents/images Tell testflinger about known images for a specified queue #
POST /v1/oauth2/revoke Revoke a refresh token. Only admins can perform this action #
POST /v1/oauth2/refresh Refresh access token using a valid refresh token #
GET /v1/result/{job_id} Return results for a specified job_id #
POST /v1/result/{job_id} Post a result for a specified job_id #
GET /v1/queues/wait_times Get wait time metrics - optionally take a list of queues #
GET /v1/restricted-queues List all agent's restricted queues and its owners #
GET /v1/client-permissions Retrieve all client permissions from database #
POST /v1/job/{job_id}/action Take action on the job status for a specified job ID #
POST /v1/job/{job_id}/events Post status updates from the agent to the server to be forwarded #
GET /v1/agents/images/{queue} Get a dict of known images for a given queue #
GET /v1/job/{job_id}/position Return the position of the specified jobid in the queue #
GET /v1/result/{job_id}/status Return job state and phase exit codes for a specified job_id #
GET /v1/job/{job_id}/attachments Return the attachments bundle for a specified job_id #
POST /v1/job/{job_id}/attachments Post attachment bundle for a specified job_id #
GET /v1/result/{job_id}/artifact Return artifact bundle for a specified job_id #
POST /v1/result/{job_id}/artifact Post artifact bundle for a specified job_id #
GET /v1/agents/data/{agent_name} Get the information from a specified agent #
POST /v1/agents/data/{agent_name} Post information about the agent to the server #
GET /v1/queues/{queue_name}/jobs Get the jobs in a specified queue along with its state #
GET /v1/queues/{queue_name}/agents Get the list of all data for agents listening to a specified queue #
GET /v1/restricted-queues/{queue_name} Get restricted queues for a specific agent #
POST /v1/restricted-queues/{queue_name} Add an owner to the specific restricted queue #
DELETE /v1/restricted-queues/{queue_name} Delete an owner from the specific restricted queue #
GET /v1/client-permissions/{client_id} Retrieve single client-permissions from database #
PUT /v1/client-permissions/{client_id} Add or create client permissions for a specified user #
DELETE /v1/client-permissions/{client_id} Delete client id along with its permissions #
PUT /v1/secrets/{client_id}/{path} Store a secret value for the specified client_id and path #
DELETE /v1/secrets/{client_id}/{path} Remove a secret value for the specified client_id and path #
POST /v1/agents/provision_logs/{agent_name} Post provision logs for the agent to the server #
GET /v1/result/{job_id}/log/{log_type} Get logs for a specified job_id #
POST /v1/result/{job_id}/log/{log_type} Post logs for a specified job ID #

Documentation

Specifications

Other Resources

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/canonical-v1-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 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.

OpenAPI Specification

canonical-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Testflinger V1 API
  version: 1.0.0
servers:
- url: https://testflinger.ps7.canonical.com/
tags:


# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canonical/refs/heads/main/openapi/canonical-v1-api-openapi.yml