Skip to content
← Public packages

@kentcdodds/fly

Manage Fly.io apps, Machines, logs, and metrics.

src/docs.ts

42 lines · 2.0 KB · TypeScript
/**
 * 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.',
		},
	}
}