/**
* Return Fly.io API patterns, auth notes, and export discovery metadata.
*/
export default async function docs() {
return {
package: '@kentcdodds/fly',
auth: 'Uses user secret flyApiToken. Machines REST (api.machines.dev) uses Authorization: Bearer {{secret:flyApiToken}}. GraphQL, app logs, and Prometheus (api.fly.io) keep their existing auth headers.',
api: {
machinesOpenApi: 'https://docs.machines.dev/spec/openapi3.json',
machinesBaseUrl: 'https://api.machines.dev/v1',
machinesOps: [
'apps_list GET /apps?org_slug=',
'apps_show GET /apps/{app_name}',
'machines_list GET /apps/{app_name}/machines',
'machines_show GET /apps/{app_name}/machines/{machine_id}',
'machines_org_list GET /orgs/{org_slug}/machines',
'currenttoken_show GET /tokens/current',
],
endpoint: 'https://api.fly.io/graphql',
logsEndpoint: 'https://api.fly.io/api/v1/apps/:app/logs',
prometheusEndpoint: 'https://api.fly.io/prometheus/:org/api/v1/query and /query_range',
usefulQueries: [
'organizations(first:, after:) { nodes { id name slug } }',
'machines REST preferred for apps/machines listing',
],
},
exports: {
'.': 'Package overview and helper list.',
'./graphql': 'Run custom Fly GraphQL queries.',
'./organizations': 'List or resolve organizations via GraphQL; defaults to personal.',
'./apps': 'List/get apps via Machines REST OpenAPI client; defaults org_slug=personal.',
'./machines': 'List/get machines via Machines REST (org-wide or by appName).',
'./machine-count': 'Count machines and group by state/app.',
'./app-machines': 'List machines for an app by appName or appId.',
'./logs':
'Fetch app logs by time window, normalize entries, return JSONL when requested, and summarize outage signals.',
'./metrics':
'Run Fly Prometheus instant/range queries and common app metrics for CPU, load, memory, disk, volumes, and edge HTTP responses.',
'./smoke-test': 'Read-only auth/API smoke test.',
},
}
}