# TKFlight TKFlight distributes ad-hoc iOS builds for Tinkertanker. Canonical origin: https://flight.tk.sg ## Authentication All /api/v1 routes require: Authorization: Bearer The administrative capability enrolls apps, issues and revokes app-scoped tokens, rotates read links and deletes builds. ## Publisher flow 1. POST /api/v1/apps/:appId/builds Idempotency-Key required 2. POST /api/v1/apps/:appId/builds/:buildId/uploads Idempotency-Key required 3. PUT /api/v1/uploads/:uploadId/parts/:partNumber 16 MiB parts 4. GET /api/v1/uploads/:uploadId resume from missingParts 5. POST /api/v1/uploads/:uploadId/complete Idempotency-Key required 6. POST /api/v1/apps/:appId/builds/:buildId/finalize Idempotency-Key required 7. GET /api/v1/apps/:appId/builds/:buildId verify state is "ready" ## Read routes (no token; the page id is the capability) GET /a/:pageId GET /api/pages/:pageId GET /api/pages/:pageId/builds/:buildId GET /api/pages/:pageId/builds/:buildId/manifest.plist GET|HEAD /api/pages/:pageId/builds/:buildId/app.ipa GET /api/pages/:pageId/builds/:buildId/screenshots/:name GET /api/pages/:pageId/icon ## Errors { "error": { "code": "...", "message": "...", "details": {} }, "requestId": "req_..." } Full contract: https://flight.tk.sg/docs