[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-labs-vercel":3,"mdc--88qbjj-key":35,"related-repo-vercel-labs-vercel":6821,"related-org-vercel-labs-vercel":6924},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"vercel","emulate Vercel API for local development","Emulated Vercel REST API for local development and testing. Use when the user needs to interact with Vercel API endpoints locally, test Vercel integrations, emulate projects\u002Fdeployments\u002Fdomains, set up Vercel OAuth flows, manage environment variables, create API keys, configure protection bypass, emulate Vercel Blob storage, or test without hitting the real Vercel API. Triggers include \"Vercel API\", \"emulate Vercel\", \"mock Vercel\", \"test Vercel OAuth\", \"Vercel integration\", \"Vercel Blob\", \"local Vercel\", or any task requiring a local Vercel API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel-labs","Vercel Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel-labs.png",[12,15,18,21],{"name":13,"slug":4,"type":14},"Vercel","tag",{"name":16,"slug":17,"type":14},"Local Development","local-development",{"name":19,"slug":20,"type":14},"API Development","api-development",{"name":22,"slug":23,"type":14},"Testing","testing",1511,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Femulate","2026-07-17T06:05:50.712482",null,95,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Local API emulation for CI and no-network sandboxes","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Femulate\u002Ftree\u002FHEAD\u002Fskills\u002Fvercel","---\nname: vercel\ndescription: Emulated Vercel REST API for local development and testing. Use when the user needs to interact with Vercel API endpoints locally, test Vercel integrations, emulate projects\u002Fdeployments\u002Fdomains, set up Vercel OAuth flows, manage environment variables, create API keys, configure protection bypass, emulate Vercel Blob storage, or test without hitting the real Vercel API. Triggers include \"Vercel API\", \"emulate Vercel\", \"mock Vercel\", \"test Vercel OAuth\", \"Vercel integration\", \"Vercel Blob\", \"local Vercel\", or any task requiring a local Vercel API.\nallowed-tools: Bash(npx emulate:*), Bash(emulate:*), Bash(curl:*)\n---\n\n# Vercel API Emulator\n\nFully stateful Vercel REST API emulation with Vercel-style JSON responses and cursor-based pagination.\n\n## Start\n\n```bash\n# Vercel only\nnpx emulate --service vercel\n\n# Default port\n# http:\u002F\u002Flocalhost:4000\n```\n\nOr programmatically:\n\n```typescript\nimport { createEmulator } from 'emulate'\n\nconst vercel = await createEmulator({ service: 'vercel', port: 4000 })\n\u002F\u002F vercel.url === 'http:\u002F\u002Flocalhost:4000'\n```\n\n## Auth\n\nPass tokens as `Authorization: Bearer \u003Ctoken>`. All endpoints accept `teamId` or `slug` query params for team scoping.\n\n```bash\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser \\\n  -H \"Authorization: Bearer test_token_admin\"\n```\n\nTeam-scoped requests resolve the account from the `teamId` or `slug` query parameter. User-scoped requests resolve the account from the authenticated user.\n\n## Pointing Your App at the Emulator\n\n### Environment Variable\n\n```bash\nVERCEL_EMULATOR_URL=http:\u002F\u002Flocalhost:4000\n```\n\n### Vercel SDK \u002F Custom Fetch\n\n```typescript\nconst VERCEL_API = process.env.VERCEL_EMULATOR_URL ?? 'https:\u002F\u002Fapi.vercel.com'\n\nconst res = await fetch(`${VERCEL_API}\u002Fv10\u002Fprojects`, {\n  headers: { Authorization: `Bearer ${token}` },\n})\n```\n\n### OAuth URL Mapping\n\n| Real Vercel URL | Emulator URL |\n|-----------------|-------------|\n| `https:\u002F\u002Fvercel.com\u002Fintegrations\u002Foauth\u002Fauthorize` | `$VERCEL_EMULATOR_URL\u002Foauth\u002Fauthorize` |\n| `https:\u002F\u002Fapi.vercel.com\u002Flogin\u002Foauth\u002Ftoken` | `$VERCEL_EMULATOR_URL\u002Flogin\u002Foauth\u002Ftoken` |\n| `https:\u002F\u002Fapi.vercel.com\u002Flogin\u002Foauth\u002Fuserinfo` | `$VERCEL_EMULATOR_URL\u002Flogin\u002Foauth\u002Fuserinfo` |\n\n### Auth.js \u002F NextAuth.js\n\n```typescript\n{\n  id: 'vercel',\n  name: 'Vercel',\n  type: 'oauth',\n  authorization: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Foauth\u002Fauthorize`,\n  },\n  token: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Flogin\u002Foauth\u002Ftoken`,\n  },\n  userinfo: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Flogin\u002Foauth\u002Fuserinfo`,\n  },\n  clientId: process.env.VERCEL_CLIENT_ID,\n  clientSecret: process.env.VERCEL_CLIENT_SECRET,\n  profile(profile) {\n    return {\n      id: profile.sub,\n      name: profile.name,\n      email: profile.email,\n      image: profile.picture,\n    }\n  },\n}\n```\n\n## Seed Config\n\n```yaml\ntokens:\n  test_token_admin:\n    login: admin\n    scopes: []\n\nvercel:\n  users:\n    - username: developer\n      name: Developer\n      email: dev@example.com\n  teams:\n    - slug: my-team\n      name: My Team\n      description: Engineering team\n  projects:\n    - name: my-app\n      team: my-team\n      framework: nextjs\n      buildCommand: next build\n      outputDirectory: .next\n      rootDirectory: null\n      nodeVersion: \"20.x\"\n      envVars:\n        - key: DATABASE_URL\n          value: postgres:\u002F\u002Flocalhost\u002Fmydb\n          type: encrypted\n          target: [production, preview]\n  integrations:\n    - client_id: oac_abc123\n      client_secret: secret_abc123\n      name: My Vercel App\n      redirect_uris:\n        - http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\n```\n\n## Pagination\n\nCursor-based pagination using `limit`, `since`, and `until` query params. Responses include a `pagination` object:\n\n```bash\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?limit=10\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\n## API Endpoints\n\n### User & Teams\n\n```bash\n# Registration check\ncurl http:\u002F\u002Flocalhost:4000\u002Fregistration\n\n# Authenticated user\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser -H \"Authorization: Bearer $TOKEN\"\n\n# Update user\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"New Name\", \"email\": \"new@example.com\"}'\n\n# List teams (cursor paginated)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams -H \"Authorization: Bearer $TOKEN\"\n\n# Get team (by ID or slug)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team -H \"Authorization: Bearer $TOKEN\"\n\n# Create team\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"slug\": \"new-team\", \"name\": \"New Team\"}'\n\n# Update team (name, slug, description)\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Updated Team\", \"description\": \"New description\"}'\n\n# List members\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team\u002Fmembers -H \"Authorization: Bearer $TOKEN\"\n\n# Add member (by uid or email, with role)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fteam_id\u002Fmembers\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"email\": \"dev@example.com\", \"role\": \"MEMBER\"}'\n```\n\nRoles: `OWNER`, `MEMBER`, `DEVELOPER`, `VIEWER`.\n\n### Projects\n\n```bash\n# Create project (with optional env vars, git, and build config)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv11\u002Fprojects \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"framework\": \"nextjs\", \"buildCommand\": \"next build\", \"outputDirectory\": \".next\", \"nodeVersion\": \"20.x\", \"environmentVariables\": [{\"key\": \"API_KEY\", \"value\": \"secret\", \"type\": \"encrypted\", \"target\": [\"production\"]}]}'\n\n# List projects (search, cursor pagination)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?search=my-app\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get project (includes env vars)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Update project (framework, buildCommand, devCommand, installCommand,\n#   outputDirectory, rootDirectory, nodeVersion, serverlessFunctionRegion,\n#   publicSource, autoAssignCustomDomains, gitForkProtection,\n#   commandForIgnoringBuildStep)\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"framework\": \"remix\"}'\n\n# Delete project (cascades deployments, domains, env vars, protection bypasses)\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Promote aliases status\ncurl http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fpromote\u002Faliases \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Protection bypass: generate, revoke, regenerate\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"generate\": {\"note\": \"CI preview\", \"scope\": \"deployment\"}}'\n\n# Revoke protection bypass secrets\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"revoke\": [\"secret_to_revoke\"]}'\n\n# Regenerate protection bypass secrets\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"regenerate\": [\"old_secret\"]}'\n```\n\n### Deployments\n\n```bash\n# Create deployment (auto-transitions to READY)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"target\": \"production\", \"meta\": {\"commit\": \"abc123\"}, \"regions\": [\"iad1\"], \"gitSource\": {\"type\": \"github\", \"ref\": \"main\", \"sha\": \"abc123\", \"repoId\": \"123\", \"org\": \"my-org\", \"repo\": \"my-app\", \"message\": \"Deploy\", \"authorName\": \"dev\", \"commitAuthorName\": \"dev\"}}'\n\n# Targets: \"production\", \"preview\", \"staging\"\n\n# Get deployment (by ID or URL)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments\u002Fdpl_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployments (filter by projectId, app, target, state; cursor paginated)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments?projectId=my-app&target=production&limit=10\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Delete deployment\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments\u002Fdpl_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Cancel building deployment\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv12\u002Fdeployments\u002Fdpl_abc123\u002Fcancel \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployment aliases\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fdeployments\u002Fdpl_abc123\u002Faliases \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get build events\u002Flogs (supports direction, limit)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv3\u002Fdeployments\u002Fdpl_abc123\u002Fevents?direction=forward&limit=50\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployment files\ncurl http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments\u002Fdpl_abc123\u002Ffiles \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Upload file (by SHA digest)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv2\u002Ffiles \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Foctet-stream\" \\\n  -H \"x-vercel-digest: sha256hash\" \\\n  --data-binary @file.txt\n```\n\n### Domains\n\n```bash\n# Add domain (with optional redirect, gitBranch, customEnvironmentId)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fdomains \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"example.com\", \"redirect\": null, \"redirectStatusCode\": null, \"gitBranch\": null}'\n\n# *.vercel.app domains are auto-verified\n\n# List domains (cursor paginated)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get, update, remove domain\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Verify domain\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com\u002Fverify \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\nRedirect status codes: `301`, `302`, `307`, `308`.\n\n### Environment Variables\n\n```bash\n# List env vars (with decrypt option; filter by gitBranch, customEnvironmentId)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?decrypt=true\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Create env vars (single, batch, or upsert)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?upsert=true\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"key\": \"API_KEY\", \"value\": \"secret123\", \"type\": \"encrypted\", \"target\": [\"production\", \"preview\"], \"comment\": \"API key for service\"}'\n\n# Get env var\ncurl http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Update env var\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"value\": \"newsecret\"}'\n\n# Delete env var\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\nEnv var types: `system`, `encrypted`, `plain`, `secret`, `sensitive`.\n\n### Blob\n\nImplements the Vercel Blob API used by the `@vercel\u002Fblob` SDK (`put`, `head`, `list`, `del`). Point the SDK at the emulator with two environment variables:\n\n```bash\nVERCEL_BLOB_API_URL=http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\nBLOB_READ_WRITE_TOKEN=vercel_blob_rw_mystore_secret\n```\n\nAny token of the form `vercel_blob_rw_\u003CstoreId>_\u003Csecret>` is accepted; the store id is parsed from the token.\n\n```typescript\nimport { put, head, list, del } from '@vercel\u002Fblob'\n\nconst blob = await put('avatars\u002Fuser.png', data, { access: 'public' })\n\u002F\u002F blob.url serves the bytes from the emulator\nawait head(blob.url)\nawait list({ prefix: 'avatars\u002F' })\nawait del(blob.url)\n```\n\nDirect HTTP:\n\n```bash\nBLOB_TOKEN=\"vercel_blob_rw_mystore_secret\"\n\n# Upload (honors x-add-random-suffix, x-allow-overwrite, x-content-type,\n#   x-cache-control-max-age, x-if-match headers)\ncurl -X PUT \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?pathname=docs\u002Freadme.txt\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\" \\\n  --data-binary @readme.txt\n\n# Metadata (head)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?url=docs\u002Freadme.txt\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\"\n\n# List (prefix, limit, cursor, mode=folded)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?prefix=docs\u002F\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\"\n\n# Delete\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\u002Fdelete \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"urls\": [\"docs\u002Freadme.txt\"]}'\n\n# Serve content (public, no auth; ?download=1 forces attachment)\ncurl http:\u002F\u002Flocalhost:4000\u002Fblob\u002Fmystore\u002Fdocs\u002Freadme.txt\n```\n\nMultipart uploads and client (browser) uploads are not supported yet.\n\n### API Keys\n\n```bash\n# Create API key (optional teamId scope)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"CI Deploy Key\"}'\n\n# List API keys (optional teamId filter)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Delete API key\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys\u002Fak_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\nCreated API keys are automatically registered in the token map and can be used as Bearer tokens for all endpoints.\n\n### OAuth \u002F Integrations\n\n```bash\n# Authorize (browser flow, shows user picker)\n# GET \u002Foauth\u002Fauthorize?client_id=...&redirect_uri=...&scope=...&state=...\n\n# Token exchange (supports PKCE; accepts JSON or form-urlencoded)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Ftoken \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"client_id\": \"oac_abc123\", \"client_secret\": \"secret_abc123\", \"code\": \"\u003Ccode>\", \"redirect_uri\": \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\"}'\n\n# User info (returns sub, email, email_verified, name, preferred_username, picture)\ncurl http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Fuserinfo \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\n## Common Patterns\n\n### Create Project and Deploy\n\n```bash\nTOKEN=\"test_token_admin\"\nBASE=\"http:\u002F\u002Flocalhost:4000\"\n\n# Create project\ncurl -X POST $BASE\u002Fv11\u002Fprojects \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"framework\": \"nextjs\"}'\n\n# Add env var\ncurl -X POST $BASE\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"key\": \"DATABASE_URL\", \"value\": \"postgres:\u002F\u002F...\", \"type\": \"encrypted\", \"target\": [\"production\"]}'\n\n# Create deployment\ncurl -X POST $BASE\u002Fv13\u002Fdeployments \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"target\": \"production\"}'\n```\n\n### OAuth Integration Flow\n\n1. Redirect user to `$VERCEL_EMULATOR_URL\u002Foauth\u002Fauthorize?client_id=...&redirect_uri=...&state=...`\n2. User picks a seeded user on the emulator's UI\n3. Emulator redirects back with `?code=...&state=...`\n4. Exchange code for token via `POST \u002Flogin\u002Foauth\u002Ftoken`\n5. Fetch user info via `GET \u002Flogin\u002Foauth\u002Fuserinfo`\n\nPKCE is supported. Pass `code_challenge` and `code_challenge_method` on authorize, then `code_verifier` on token exchange.\n\n### Team-Scoped Requests\n\nAll endpoints accept `teamId` or `slug` query params:\n\n```bash\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?slug=my-team\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n",{"data":36,"body":38},{"name":4,"description":6,"allowed-tools":37},"Bash(npx emulate:*), Bash(emulate:*), Bash(curl:*)",{"type":39,"children":40},"root",[41,50,56,63,141,146,308,314,343,391,409,415,422,446,452,653,659,750,756,1357,1363,1926,1932,1968,2025,2031,2037,2703,2736,2742,3550,3556,4216,4222,4516,4549,4555,4958,4998,5004,5046,5087,5100,5371,5376,5764,5769,5775,6015,6020,6026,6185,6191,6197,6594,6600,6654,6683,6689,6707,6815],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"vercel-api-emulator",[47],{"type":48,"value":49},"text","Vercel API Emulator",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Fully stateful Vercel REST API emulation with Vercel-style JSON responses and cursor-based pagination.",{"type":42,"tag":57,"props":58,"children":60},"h2",{"id":59},"start",[61],{"type":48,"value":62},"Start",{"type":42,"tag":64,"props":65,"children":70},"pre",{"className":66,"code":67,"language":68,"meta":69,"style":69},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Vercel only\nnpx emulate --service vercel\n\n# Default port\n# http:\u002F\u002Flocalhost:4000\n","bash","",[71],{"type":42,"tag":72,"props":73,"children":74},"code",{"__ignoreMap":69},[75,87,113,123,132],{"type":42,"tag":76,"props":77,"children":80},"span",{"class":78,"line":79},"line",1,[81],{"type":42,"tag":76,"props":82,"children":84},{"style":83},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[85],{"type":48,"value":86},"# Vercel only\n",{"type":42,"tag":76,"props":88,"children":90},{"class":78,"line":89},2,[91,97,103,108],{"type":42,"tag":76,"props":92,"children":94},{"style":93},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[95],{"type":48,"value":96},"npx",{"type":42,"tag":76,"props":98,"children":100},{"style":99},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[101],{"type":48,"value":102}," emulate",{"type":42,"tag":76,"props":104,"children":105},{"style":99},[106],{"type":48,"value":107}," --service",{"type":42,"tag":76,"props":109,"children":110},{"style":99},[111],{"type":48,"value":112}," vercel\n",{"type":42,"tag":76,"props":114,"children":116},{"class":78,"line":115},3,[117],{"type":42,"tag":76,"props":118,"children":120},{"emptyLinePlaceholder":119},true,[121],{"type":48,"value":122},"\n",{"type":42,"tag":76,"props":124,"children":126},{"class":78,"line":125},4,[127],{"type":42,"tag":76,"props":128,"children":129},{"style":83},[130],{"type":48,"value":131},"# Default port\n",{"type":42,"tag":76,"props":133,"children":135},{"class":78,"line":134},5,[136],{"type":42,"tag":76,"props":137,"children":138},{"style":83},[139],{"type":48,"value":140},"# http:\u002F\u002Flocalhost:4000\n",{"type":42,"tag":51,"props":142,"children":143},{},[144],{"type":48,"value":145},"Or programmatically:",{"type":42,"tag":64,"props":147,"children":151},{"className":148,"code":149,"language":150,"meta":69,"style":69},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createEmulator } from 'emulate'\n\nconst vercel = await createEmulator({ service: 'vercel', port: 4000 })\n\u002F\u002F vercel.url === 'http:\u002F\u002Flocalhost:4000'\n","typescript",[152],{"type":42,"tag":72,"props":153,"children":154},{"__ignoreMap":69},[155,201,208,300],{"type":42,"tag":76,"props":156,"children":157},{"class":78,"line":79},[158,164,170,176,181,186,191,196],{"type":42,"tag":76,"props":159,"children":161},{"style":160},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[162],{"type":48,"value":163},"import",{"type":42,"tag":76,"props":165,"children":167},{"style":166},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[168],{"type":48,"value":169}," {",{"type":42,"tag":76,"props":171,"children":173},{"style":172},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[174],{"type":48,"value":175}," createEmulator",{"type":42,"tag":76,"props":177,"children":178},{"style":166},[179],{"type":48,"value":180}," }",{"type":42,"tag":76,"props":182,"children":183},{"style":160},[184],{"type":48,"value":185}," from",{"type":42,"tag":76,"props":187,"children":188},{"style":166},[189],{"type":48,"value":190}," '",{"type":42,"tag":76,"props":192,"children":193},{"style":99},[194],{"type":48,"value":195},"emulate",{"type":42,"tag":76,"props":197,"children":198},{"style":166},[199],{"type":48,"value":200},"'\n",{"type":42,"tag":76,"props":202,"children":203},{"class":78,"line":89},[204],{"type":42,"tag":76,"props":205,"children":206},{"emptyLinePlaceholder":119},[207],{"type":48,"value":122},{"type":42,"tag":76,"props":209,"children":210},{"class":78,"line":115},[211,217,222,227,232,237,242,247,253,258,262,266,271,276,281,285,291,295],{"type":42,"tag":76,"props":212,"children":214},{"style":213},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[215],{"type":48,"value":216},"const",{"type":42,"tag":76,"props":218,"children":219},{"style":172},[220],{"type":48,"value":221}," vercel ",{"type":42,"tag":76,"props":223,"children":224},{"style":166},[225],{"type":48,"value":226},"=",{"type":42,"tag":76,"props":228,"children":229},{"style":160},[230],{"type":48,"value":231}," await",{"type":42,"tag":76,"props":233,"children":235},{"style":234},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[236],{"type":48,"value":175},{"type":42,"tag":76,"props":238,"children":239},{"style":172},[240],{"type":48,"value":241},"(",{"type":42,"tag":76,"props":243,"children":244},{"style":166},[245],{"type":48,"value":246},"{",{"type":42,"tag":76,"props":248,"children":250},{"style":249},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[251],{"type":48,"value":252}," service",{"type":42,"tag":76,"props":254,"children":255},{"style":166},[256],{"type":48,"value":257},":",{"type":42,"tag":76,"props":259,"children":260},{"style":166},[261],{"type":48,"value":190},{"type":42,"tag":76,"props":263,"children":264},{"style":99},[265],{"type":48,"value":4},{"type":42,"tag":76,"props":267,"children":268},{"style":166},[269],{"type":48,"value":270},"'",{"type":42,"tag":76,"props":272,"children":273},{"style":166},[274],{"type":48,"value":275},",",{"type":42,"tag":76,"props":277,"children":278},{"style":249},[279],{"type":48,"value":280}," port",{"type":42,"tag":76,"props":282,"children":283},{"style":166},[284],{"type":48,"value":257},{"type":42,"tag":76,"props":286,"children":288},{"style":287},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[289],{"type":48,"value":290}," 4000",{"type":42,"tag":76,"props":292,"children":293},{"style":166},[294],{"type":48,"value":180},{"type":42,"tag":76,"props":296,"children":297},{"style":172},[298],{"type":48,"value":299},")\n",{"type":42,"tag":76,"props":301,"children":302},{"class":78,"line":125},[303],{"type":42,"tag":76,"props":304,"children":305},{"style":83},[306],{"type":48,"value":307},"\u002F\u002F vercel.url === 'http:\u002F\u002Flocalhost:4000'\n",{"type":42,"tag":57,"props":309,"children":311},{"id":310},"auth",[312],{"type":48,"value":313},"Auth",{"type":42,"tag":51,"props":315,"children":316},{},[317,319,325,327,333,335,341],{"type":48,"value":318},"Pass tokens as ",{"type":42,"tag":72,"props":320,"children":322},{"className":321},[],[323],{"type":48,"value":324},"Authorization: Bearer \u003Ctoken>",{"type":48,"value":326},". All endpoints accept ",{"type":42,"tag":72,"props":328,"children":330},{"className":329},[],[331],{"type":48,"value":332},"teamId",{"type":48,"value":334}," or ",{"type":42,"tag":72,"props":336,"children":338},{"className":337},[],[339],{"type":48,"value":340},"slug",{"type":48,"value":342}," query params for team scoping.",{"type":42,"tag":64,"props":344,"children":346},{"className":66,"code":345,"language":68,"meta":69,"style":69},"curl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser \\\n  -H \"Authorization: Bearer test_token_admin\"\n",[347],{"type":42,"tag":72,"props":348,"children":349},{"__ignoreMap":69},[350,368],{"type":42,"tag":76,"props":351,"children":352},{"class":78,"line":79},[353,358,363],{"type":42,"tag":76,"props":354,"children":355},{"style":93},[356],{"type":48,"value":357},"curl",{"type":42,"tag":76,"props":359,"children":360},{"style":99},[361],{"type":48,"value":362}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser",{"type":42,"tag":76,"props":364,"children":365},{"style":172},[366],{"type":48,"value":367}," \\\n",{"type":42,"tag":76,"props":369,"children":370},{"class":78,"line":89},[371,376,381,386],{"type":42,"tag":76,"props":372,"children":373},{"style":99},[374],{"type":48,"value":375},"  -H",{"type":42,"tag":76,"props":377,"children":378},{"style":166},[379],{"type":48,"value":380}," \"",{"type":42,"tag":76,"props":382,"children":383},{"style":99},[384],{"type":48,"value":385},"Authorization: Bearer test_token_admin",{"type":42,"tag":76,"props":387,"children":388},{"style":166},[389],{"type":48,"value":390},"\"\n",{"type":42,"tag":51,"props":392,"children":393},{},[394,396,401,402,407],{"type":48,"value":395},"Team-scoped requests resolve the account from the ",{"type":42,"tag":72,"props":397,"children":399},{"className":398},[],[400],{"type":48,"value":332},{"type":48,"value":334},{"type":42,"tag":72,"props":403,"children":405},{"className":404},[],[406],{"type":48,"value":340},{"type":48,"value":408}," query parameter. User-scoped requests resolve the account from the authenticated user.",{"type":42,"tag":57,"props":410,"children":412},{"id":411},"pointing-your-app-at-the-emulator",[413],{"type":48,"value":414},"Pointing Your App at the Emulator",{"type":42,"tag":416,"props":417,"children":419},"h3",{"id":418},"environment-variable",[420],{"type":48,"value":421},"Environment Variable",{"type":42,"tag":64,"props":423,"children":425},{"className":66,"code":424,"language":68,"meta":69,"style":69},"VERCEL_EMULATOR_URL=http:\u002F\u002Flocalhost:4000\n",[426],{"type":42,"tag":72,"props":427,"children":428},{"__ignoreMap":69},[429],{"type":42,"tag":76,"props":430,"children":431},{"class":78,"line":79},[432,437,441],{"type":42,"tag":76,"props":433,"children":434},{"style":172},[435],{"type":48,"value":436},"VERCEL_EMULATOR_URL",{"type":42,"tag":76,"props":438,"children":439},{"style":166},[440],{"type":48,"value":226},{"type":42,"tag":76,"props":442,"children":443},{"style":99},[444],{"type":48,"value":445},"http:\u002F\u002Flocalhost:4000\n",{"type":42,"tag":416,"props":447,"children":449},{"id":448},"vercel-sdk-custom-fetch",[450],{"type":48,"value":451},"Vercel SDK \u002F Custom Fetch",{"type":42,"tag":64,"props":453,"children":455},{"className":148,"code":454,"language":150,"meta":69,"style":69},"const VERCEL_API = process.env.VERCEL_EMULATOR_URL ?? 'https:\u002F\u002Fapi.vercel.com'\n\nconst res = await fetch(`${VERCEL_API}\u002Fv10\u002Fprojects`, {\n  headers: { Authorization: `Bearer ${token}` },\n})\n",[456],{"type":42,"tag":72,"props":457,"children":458},{"__ignoreMap":69},[459,517,524,587,642],{"type":42,"tag":76,"props":460,"children":461},{"class":78,"line":79},[462,466,471,475,480,485,490,494,499,504,508,513],{"type":42,"tag":76,"props":463,"children":464},{"style":213},[465],{"type":48,"value":216},{"type":42,"tag":76,"props":467,"children":468},{"style":172},[469],{"type":48,"value":470}," VERCEL_API ",{"type":42,"tag":76,"props":472,"children":473},{"style":166},[474],{"type":48,"value":226},{"type":42,"tag":76,"props":476,"children":477},{"style":172},[478],{"type":48,"value":479}," process",{"type":42,"tag":76,"props":481,"children":482},{"style":166},[483],{"type":48,"value":484},".",{"type":42,"tag":76,"props":486,"children":487},{"style":172},[488],{"type":48,"value":489},"env",{"type":42,"tag":76,"props":491,"children":492},{"style":166},[493],{"type":48,"value":484},{"type":42,"tag":76,"props":495,"children":496},{"style":172},[497],{"type":48,"value":498},"VERCEL_EMULATOR_URL ",{"type":42,"tag":76,"props":500,"children":501},{"style":166},[502],{"type":48,"value":503},"??",{"type":42,"tag":76,"props":505,"children":506},{"style":166},[507],{"type":48,"value":190},{"type":42,"tag":76,"props":509,"children":510},{"style":99},[511],{"type":48,"value":512},"https:\u002F\u002Fapi.vercel.com",{"type":42,"tag":76,"props":514,"children":515},{"style":166},[516],{"type":48,"value":200},{"type":42,"tag":76,"props":518,"children":519},{"class":78,"line":89},[520],{"type":42,"tag":76,"props":521,"children":522},{"emptyLinePlaceholder":119},[523],{"type":48,"value":122},{"type":42,"tag":76,"props":525,"children":526},{"class":78,"line":115},[527,531,536,540,544,549,553,558,563,568,573,578,582],{"type":42,"tag":76,"props":528,"children":529},{"style":213},[530],{"type":48,"value":216},{"type":42,"tag":76,"props":532,"children":533},{"style":172},[534],{"type":48,"value":535}," res ",{"type":42,"tag":76,"props":537,"children":538},{"style":166},[539],{"type":48,"value":226},{"type":42,"tag":76,"props":541,"children":542},{"style":160},[543],{"type":48,"value":231},{"type":42,"tag":76,"props":545,"children":546},{"style":234},[547],{"type":48,"value":548}," fetch",{"type":42,"tag":76,"props":550,"children":551},{"style":172},[552],{"type":48,"value":241},{"type":42,"tag":76,"props":554,"children":555},{"style":166},[556],{"type":48,"value":557},"`${",{"type":42,"tag":76,"props":559,"children":560},{"style":172},[561],{"type":48,"value":562},"VERCEL_API",{"type":42,"tag":76,"props":564,"children":565},{"style":166},[566],{"type":48,"value":567},"}",{"type":42,"tag":76,"props":569,"children":570},{"style":99},[571],{"type":48,"value":572},"\u002Fv10\u002Fprojects",{"type":42,"tag":76,"props":574,"children":575},{"style":166},[576],{"type":48,"value":577},"`",{"type":42,"tag":76,"props":579,"children":580},{"style":166},[581],{"type":48,"value":275},{"type":42,"tag":76,"props":583,"children":584},{"style":166},[585],{"type":48,"value":586}," {\n",{"type":42,"tag":76,"props":588,"children":589},{"class":78,"line":125},[590,595,599,603,608,612,617,622,627,632,637],{"type":42,"tag":76,"props":591,"children":592},{"style":249},[593],{"type":48,"value":594},"  headers",{"type":42,"tag":76,"props":596,"children":597},{"style":166},[598],{"type":48,"value":257},{"type":42,"tag":76,"props":600,"children":601},{"style":166},[602],{"type":48,"value":169},{"type":42,"tag":76,"props":604,"children":605},{"style":249},[606],{"type":48,"value":607}," Authorization",{"type":42,"tag":76,"props":609,"children":610},{"style":166},[611],{"type":48,"value":257},{"type":42,"tag":76,"props":613,"children":614},{"style":166},[615],{"type":48,"value":616}," `",{"type":42,"tag":76,"props":618,"children":619},{"style":99},[620],{"type":48,"value":621},"Bearer ",{"type":42,"tag":76,"props":623,"children":624},{"style":166},[625],{"type":48,"value":626},"${",{"type":42,"tag":76,"props":628,"children":629},{"style":172},[630],{"type":48,"value":631},"token",{"type":42,"tag":76,"props":633,"children":634},{"style":166},[635],{"type":48,"value":636},"}`",{"type":42,"tag":76,"props":638,"children":639},{"style":166},[640],{"type":48,"value":641}," },\n",{"type":42,"tag":76,"props":643,"children":644},{"class":78,"line":134},[645,649],{"type":42,"tag":76,"props":646,"children":647},{"style":166},[648],{"type":48,"value":567},{"type":42,"tag":76,"props":650,"children":651},{"style":172},[652],{"type":48,"value":299},{"type":42,"tag":416,"props":654,"children":656},{"id":655},"oauth-url-mapping",[657],{"type":48,"value":658},"OAuth URL Mapping",{"type":42,"tag":660,"props":661,"children":662},"table",{},[663,682],{"type":42,"tag":664,"props":665,"children":666},"thead",{},[667],{"type":42,"tag":668,"props":669,"children":670},"tr",{},[671,677],{"type":42,"tag":672,"props":673,"children":674},"th",{},[675],{"type":48,"value":676},"Real Vercel URL",{"type":42,"tag":672,"props":678,"children":679},{},[680],{"type":48,"value":681},"Emulator URL",{"type":42,"tag":683,"props":684,"children":685},"tbody",{},[686,708,729],{"type":42,"tag":668,"props":687,"children":688},{},[689,699],{"type":42,"tag":690,"props":691,"children":692},"td",{},[693],{"type":42,"tag":72,"props":694,"children":696},{"className":695},[],[697],{"type":48,"value":698},"https:\u002F\u002Fvercel.com\u002Fintegrations\u002Foauth\u002Fauthorize",{"type":42,"tag":690,"props":700,"children":701},{},[702],{"type":42,"tag":72,"props":703,"children":705},{"className":704},[],[706],{"type":48,"value":707},"$VERCEL_EMULATOR_URL\u002Foauth\u002Fauthorize",{"type":42,"tag":668,"props":709,"children":710},{},[711,720],{"type":42,"tag":690,"props":712,"children":713},{},[714],{"type":42,"tag":72,"props":715,"children":717},{"className":716},[],[718],{"type":48,"value":719},"https:\u002F\u002Fapi.vercel.com\u002Flogin\u002Foauth\u002Ftoken",{"type":42,"tag":690,"props":721,"children":722},{},[723],{"type":42,"tag":72,"props":724,"children":726},{"className":725},[],[727],{"type":48,"value":728},"$VERCEL_EMULATOR_URL\u002Flogin\u002Foauth\u002Ftoken",{"type":42,"tag":668,"props":730,"children":731},{},[732,741],{"type":42,"tag":690,"props":733,"children":734},{},[735],{"type":42,"tag":72,"props":736,"children":738},{"className":737},[],[739],{"type":48,"value":740},"https:\u002F\u002Fapi.vercel.com\u002Flogin\u002Foauth\u002Fuserinfo",{"type":42,"tag":690,"props":742,"children":743},{},[744],{"type":42,"tag":72,"props":745,"children":747},{"className":746},[],[748],{"type":48,"value":749},"$VERCEL_EMULATOR_URL\u002Flogin\u002Foauth\u002Fuserinfo",{"type":42,"tag":416,"props":751,"children":753},{"id":752},"authjs-nextauthjs",[754],{"type":48,"value":755},"Auth.js \u002F NextAuth.js",{"type":42,"tag":64,"props":757,"children":759},{"className":148,"code":758,"language":150,"meta":69,"style":69},"{\n  id: 'vercel',\n  name: 'Vercel',\n  type: 'oauth',\n  authorization: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Foauth\u002Fauthorize`,\n  },\n  token: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Flogin\u002Foauth\u002Ftoken`,\n  },\n  userinfo: {\n    url: `${process.env.VERCEL_EMULATOR_URL}\u002Flogin\u002Foauth\u002Fuserinfo`,\n  },\n  clientId: process.env.VERCEL_CLIENT_ID,\n  clientSecret: process.env.VERCEL_CLIENT_SECRET,\n  profile(profile) {\n    return {\n      id: profile.sub,\n      name: profile.name,\n      email: profile.email,\n      image: profile.picture,\n    }\n  },\n}\n",[760],{"type":42,"tag":72,"props":761,"children":762},{"__ignoreMap":69},[763,771,800,828,857,873,929,938,955,1008,1016,1033,1086,1094,1132,1170,1197,1210,1241,1271,1301,1331,1340,1348],{"type":42,"tag":76,"props":764,"children":765},{"class":78,"line":79},[766],{"type":42,"tag":76,"props":767,"children":768},{"style":166},[769],{"type":48,"value":770},"{\n",{"type":42,"tag":76,"props":772,"children":773},{"class":78,"line":89},[774,779,783,787,791,795],{"type":42,"tag":76,"props":775,"children":776},{"style":93},[777],{"type":48,"value":778},"  id",{"type":42,"tag":76,"props":780,"children":781},{"style":166},[782],{"type":48,"value":257},{"type":42,"tag":76,"props":784,"children":785},{"style":166},[786],{"type":48,"value":190},{"type":42,"tag":76,"props":788,"children":789},{"style":99},[790],{"type":48,"value":4},{"type":42,"tag":76,"props":792,"children":793},{"style":166},[794],{"type":48,"value":270},{"type":42,"tag":76,"props":796,"children":797},{"style":166},[798],{"type":48,"value":799},",\n",{"type":42,"tag":76,"props":801,"children":802},{"class":78,"line":115},[803,808,812,816,820,824],{"type":42,"tag":76,"props":804,"children":805},{"style":93},[806],{"type":48,"value":807},"  name",{"type":42,"tag":76,"props":809,"children":810},{"style":166},[811],{"type":48,"value":257},{"type":42,"tag":76,"props":813,"children":814},{"style":166},[815],{"type":48,"value":190},{"type":42,"tag":76,"props":817,"children":818},{"style":99},[819],{"type":48,"value":13},{"type":42,"tag":76,"props":821,"children":822},{"style":166},[823],{"type":48,"value":270},{"type":42,"tag":76,"props":825,"children":826},{"style":166},[827],{"type":48,"value":799},{"type":42,"tag":76,"props":829,"children":830},{"class":78,"line":125},[831,836,840,844,849,853],{"type":42,"tag":76,"props":832,"children":833},{"style":93},[834],{"type":48,"value":835},"  type",{"type":42,"tag":76,"props":837,"children":838},{"style":166},[839],{"type":48,"value":257},{"type":42,"tag":76,"props":841,"children":842},{"style":166},[843],{"type":48,"value":190},{"type":42,"tag":76,"props":845,"children":846},{"style":99},[847],{"type":48,"value":848},"oauth",{"type":42,"tag":76,"props":850,"children":851},{"style":166},[852],{"type":48,"value":270},{"type":42,"tag":76,"props":854,"children":855},{"style":166},[856],{"type":48,"value":799},{"type":42,"tag":76,"props":858,"children":859},{"class":78,"line":134},[860,865,869],{"type":42,"tag":76,"props":861,"children":862},{"style":93},[863],{"type":48,"value":864},"  authorization",{"type":42,"tag":76,"props":866,"children":867},{"style":166},[868],{"type":48,"value":257},{"type":42,"tag":76,"props":870,"children":871},{"style":166},[872],{"type":48,"value":586},{"type":42,"tag":76,"props":874,"children":876},{"class":78,"line":875},6,[877,882,886,891,896,900,904,908,912,916,921,925],{"type":42,"tag":76,"props":878,"children":879},{"style":93},[880],{"type":48,"value":881},"    url",{"type":42,"tag":76,"props":883,"children":884},{"style":166},[885],{"type":48,"value":257},{"type":42,"tag":76,"props":887,"children":888},{"style":166},[889],{"type":48,"value":890}," `${",{"type":42,"tag":76,"props":892,"children":893},{"style":172},[894],{"type":48,"value":895},"process",{"type":42,"tag":76,"props":897,"children":898},{"style":166},[899],{"type":48,"value":484},{"type":42,"tag":76,"props":901,"children":902},{"style":172},[903],{"type":48,"value":489},{"type":42,"tag":76,"props":905,"children":906},{"style":166},[907],{"type":48,"value":484},{"type":42,"tag":76,"props":909,"children":910},{"style":172},[911],{"type":48,"value":436},{"type":42,"tag":76,"props":913,"children":914},{"style":166},[915],{"type":48,"value":567},{"type":42,"tag":76,"props":917,"children":918},{"style":99},[919],{"type":48,"value":920},"\u002Foauth\u002Fauthorize",{"type":42,"tag":76,"props":922,"children":923},{"style":166},[924],{"type":48,"value":577},{"type":42,"tag":76,"props":926,"children":927},{"style":166},[928],{"type":48,"value":799},{"type":42,"tag":76,"props":930,"children":932},{"class":78,"line":931},7,[933],{"type":42,"tag":76,"props":934,"children":935},{"style":166},[936],{"type":48,"value":937},"  },\n",{"type":42,"tag":76,"props":939,"children":941},{"class":78,"line":940},8,[942,947,951],{"type":42,"tag":76,"props":943,"children":944},{"style":93},[945],{"type":48,"value":946},"  token",{"type":42,"tag":76,"props":948,"children":949},{"style":166},[950],{"type":48,"value":257},{"type":42,"tag":76,"props":952,"children":953},{"style":166},[954],{"type":48,"value":586},{"type":42,"tag":76,"props":956,"children":958},{"class":78,"line":957},9,[959,963,967,971,975,979,983,987,991,995,1000,1004],{"type":42,"tag":76,"props":960,"children":961},{"style":93},[962],{"type":48,"value":881},{"type":42,"tag":76,"props":964,"children":965},{"style":166},[966],{"type":48,"value":257},{"type":42,"tag":76,"props":968,"children":969},{"style":166},[970],{"type":48,"value":890},{"type":42,"tag":76,"props":972,"children":973},{"style":172},[974],{"type":48,"value":895},{"type":42,"tag":76,"props":976,"children":977},{"style":166},[978],{"type":48,"value":484},{"type":42,"tag":76,"props":980,"children":981},{"style":172},[982],{"type":48,"value":489},{"type":42,"tag":76,"props":984,"children":985},{"style":166},[986],{"type":48,"value":484},{"type":42,"tag":76,"props":988,"children":989},{"style":172},[990],{"type":48,"value":436},{"type":42,"tag":76,"props":992,"children":993},{"style":166},[994],{"type":48,"value":567},{"type":42,"tag":76,"props":996,"children":997},{"style":99},[998],{"type":48,"value":999},"\u002Flogin\u002Foauth\u002Ftoken",{"type":42,"tag":76,"props":1001,"children":1002},{"style":166},[1003],{"type":48,"value":577},{"type":42,"tag":76,"props":1005,"children":1006},{"style":166},[1007],{"type":48,"value":799},{"type":42,"tag":76,"props":1009,"children":1011},{"class":78,"line":1010},10,[1012],{"type":42,"tag":76,"props":1013,"children":1014},{"style":166},[1015],{"type":48,"value":937},{"type":42,"tag":76,"props":1017,"children":1019},{"class":78,"line":1018},11,[1020,1025,1029],{"type":42,"tag":76,"props":1021,"children":1022},{"style":93},[1023],{"type":48,"value":1024},"  userinfo",{"type":42,"tag":76,"props":1026,"children":1027},{"style":166},[1028],{"type":48,"value":257},{"type":42,"tag":76,"props":1030,"children":1031},{"style":166},[1032],{"type":48,"value":586},{"type":42,"tag":76,"props":1034,"children":1036},{"class":78,"line":1035},12,[1037,1041,1045,1049,1053,1057,1061,1065,1069,1073,1078,1082],{"type":42,"tag":76,"props":1038,"children":1039},{"style":93},[1040],{"type":48,"value":881},{"type":42,"tag":76,"props":1042,"children":1043},{"style":166},[1044],{"type":48,"value":257},{"type":42,"tag":76,"props":1046,"children":1047},{"style":166},[1048],{"type":48,"value":890},{"type":42,"tag":76,"props":1050,"children":1051},{"style":172},[1052],{"type":48,"value":895},{"type":42,"tag":76,"props":1054,"children":1055},{"style":166},[1056],{"type":48,"value":484},{"type":42,"tag":76,"props":1058,"children":1059},{"style":172},[1060],{"type":48,"value":489},{"type":42,"tag":76,"props":1062,"children":1063},{"style":166},[1064],{"type":48,"value":484},{"type":42,"tag":76,"props":1066,"children":1067},{"style":172},[1068],{"type":48,"value":436},{"type":42,"tag":76,"props":1070,"children":1071},{"style":166},[1072],{"type":48,"value":567},{"type":42,"tag":76,"props":1074,"children":1075},{"style":99},[1076],{"type":48,"value":1077},"\u002Flogin\u002Foauth\u002Fuserinfo",{"type":42,"tag":76,"props":1079,"children":1080},{"style":166},[1081],{"type":48,"value":577},{"type":42,"tag":76,"props":1083,"children":1084},{"style":166},[1085],{"type":48,"value":799},{"type":42,"tag":76,"props":1087,"children":1089},{"class":78,"line":1088},13,[1090],{"type":42,"tag":76,"props":1091,"children":1092},{"style":166},[1093],{"type":48,"value":937},{"type":42,"tag":76,"props":1095,"children":1097},{"class":78,"line":1096},14,[1098,1103,1107,1111,1115,1119,1123,1128],{"type":42,"tag":76,"props":1099,"children":1100},{"style":93},[1101],{"type":48,"value":1102},"  clientId",{"type":42,"tag":76,"props":1104,"children":1105},{"style":166},[1106],{"type":48,"value":257},{"type":42,"tag":76,"props":1108,"children":1109},{"style":172},[1110],{"type":48,"value":479},{"type":42,"tag":76,"props":1112,"children":1113},{"style":166},[1114],{"type":48,"value":484},{"type":42,"tag":76,"props":1116,"children":1117},{"style":172},[1118],{"type":48,"value":489},{"type":42,"tag":76,"props":1120,"children":1121},{"style":166},[1122],{"type":48,"value":484},{"type":42,"tag":76,"props":1124,"children":1125},{"style":172},[1126],{"type":48,"value":1127},"VERCEL_CLIENT_ID",{"type":42,"tag":76,"props":1129,"children":1130},{"style":166},[1131],{"type":48,"value":799},{"type":42,"tag":76,"props":1133,"children":1135},{"class":78,"line":1134},15,[1136,1141,1145,1149,1153,1157,1161,1166],{"type":42,"tag":76,"props":1137,"children":1138},{"style":93},[1139],{"type":48,"value":1140},"  clientSecret",{"type":42,"tag":76,"props":1142,"children":1143},{"style":166},[1144],{"type":48,"value":257},{"type":42,"tag":76,"props":1146,"children":1147},{"style":172},[1148],{"type":48,"value":479},{"type":42,"tag":76,"props":1150,"children":1151},{"style":166},[1152],{"type":48,"value":484},{"type":42,"tag":76,"props":1154,"children":1155},{"style":172},[1156],{"type":48,"value":489},{"type":42,"tag":76,"props":1158,"children":1159},{"style":166},[1160],{"type":48,"value":484},{"type":42,"tag":76,"props":1162,"children":1163},{"style":172},[1164],{"type":48,"value":1165},"VERCEL_CLIENT_SECRET",{"type":42,"tag":76,"props":1167,"children":1168},{"style":166},[1169],{"type":48,"value":799},{"type":42,"tag":76,"props":1171,"children":1173},{"class":78,"line":1172},16,[1174,1179,1183,1188,1193],{"type":42,"tag":76,"props":1175,"children":1176},{"style":234},[1177],{"type":48,"value":1178},"  profile",{"type":42,"tag":76,"props":1180,"children":1181},{"style":249},[1182],{"type":48,"value":241},{"type":42,"tag":76,"props":1184,"children":1185},{"style":172},[1186],{"type":48,"value":1187},"profile",{"type":42,"tag":76,"props":1189,"children":1190},{"style":249},[1191],{"type":48,"value":1192},") ",{"type":42,"tag":76,"props":1194,"children":1195},{"style":166},[1196],{"type":48,"value":770},{"type":42,"tag":76,"props":1198,"children":1200},{"class":78,"line":1199},17,[1201,1206],{"type":42,"tag":76,"props":1202,"children":1203},{"style":160},[1204],{"type":48,"value":1205},"    return",{"type":42,"tag":76,"props":1207,"children":1208},{"style":166},[1209],{"type":48,"value":586},{"type":42,"tag":76,"props":1211,"children":1213},{"class":78,"line":1212},18,[1214,1219,1223,1228,1232,1237],{"type":42,"tag":76,"props":1215,"children":1216},{"style":249},[1217],{"type":48,"value":1218},"      id",{"type":42,"tag":76,"props":1220,"children":1221},{"style":166},[1222],{"type":48,"value":257},{"type":42,"tag":76,"props":1224,"children":1225},{"style":172},[1226],{"type":48,"value":1227}," profile",{"type":42,"tag":76,"props":1229,"children":1230},{"style":166},[1231],{"type":48,"value":484},{"type":42,"tag":76,"props":1233,"children":1234},{"style":172},[1235],{"type":48,"value":1236},"sub",{"type":42,"tag":76,"props":1238,"children":1239},{"style":166},[1240],{"type":48,"value":799},{"type":42,"tag":76,"props":1242,"children":1244},{"class":78,"line":1243},19,[1245,1250,1254,1258,1262,1267],{"type":42,"tag":76,"props":1246,"children":1247},{"style":249},[1248],{"type":48,"value":1249},"      name",{"type":42,"tag":76,"props":1251,"children":1252},{"style":166},[1253],{"type":48,"value":257},{"type":42,"tag":76,"props":1255,"children":1256},{"style":172},[1257],{"type":48,"value":1227},{"type":42,"tag":76,"props":1259,"children":1260},{"style":166},[1261],{"type":48,"value":484},{"type":42,"tag":76,"props":1263,"children":1264},{"style":172},[1265],{"type":48,"value":1266},"name",{"type":42,"tag":76,"props":1268,"children":1269},{"style":166},[1270],{"type":48,"value":799},{"type":42,"tag":76,"props":1272,"children":1274},{"class":78,"line":1273},20,[1275,1280,1284,1288,1292,1297],{"type":42,"tag":76,"props":1276,"children":1277},{"style":249},[1278],{"type":48,"value":1279},"      email",{"type":42,"tag":76,"props":1281,"children":1282},{"style":166},[1283],{"type":48,"value":257},{"type":42,"tag":76,"props":1285,"children":1286},{"style":172},[1287],{"type":48,"value":1227},{"type":42,"tag":76,"props":1289,"children":1290},{"style":166},[1291],{"type":48,"value":484},{"type":42,"tag":76,"props":1293,"children":1294},{"style":172},[1295],{"type":48,"value":1296},"email",{"type":42,"tag":76,"props":1298,"children":1299},{"style":166},[1300],{"type":48,"value":799},{"type":42,"tag":76,"props":1302,"children":1304},{"class":78,"line":1303},21,[1305,1310,1314,1318,1322,1327],{"type":42,"tag":76,"props":1306,"children":1307},{"style":249},[1308],{"type":48,"value":1309},"      image",{"type":42,"tag":76,"props":1311,"children":1312},{"style":166},[1313],{"type":48,"value":257},{"type":42,"tag":76,"props":1315,"children":1316},{"style":172},[1317],{"type":48,"value":1227},{"type":42,"tag":76,"props":1319,"children":1320},{"style":166},[1321],{"type":48,"value":484},{"type":42,"tag":76,"props":1323,"children":1324},{"style":172},[1325],{"type":48,"value":1326},"picture",{"type":42,"tag":76,"props":1328,"children":1329},{"style":166},[1330],{"type":48,"value":799},{"type":42,"tag":76,"props":1332,"children":1334},{"class":78,"line":1333},22,[1335],{"type":42,"tag":76,"props":1336,"children":1337},{"style":166},[1338],{"type":48,"value":1339},"    }\n",{"type":42,"tag":76,"props":1341,"children":1343},{"class":78,"line":1342},23,[1344],{"type":42,"tag":76,"props":1345,"children":1346},{"style":166},[1347],{"type":48,"value":937},{"type":42,"tag":76,"props":1349,"children":1351},{"class":78,"line":1350},24,[1352],{"type":42,"tag":76,"props":1353,"children":1354},{"style":166},[1355],{"type":48,"value":1356},"}\n",{"type":42,"tag":57,"props":1358,"children":1360},{"id":1359},"seed-config",[1361],{"type":48,"value":1362},"Seed Config",{"type":42,"tag":64,"props":1364,"children":1368},{"className":1365,"code":1366,"language":1367,"meta":69,"style":69},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","tokens:\n  test_token_admin:\n    login: admin\n    scopes: []\n\nvercel:\n  users:\n    - username: developer\n      name: Developer\n      email: dev@example.com\n  teams:\n    - slug: my-team\n      name: My Team\n      description: Engineering team\n  projects:\n    - name: my-app\n      team: my-team\n      framework: nextjs\n      buildCommand: next build\n      outputDirectory: .next\n      rootDirectory: null\n      nodeVersion: \"20.x\"\n      envVars:\n        - key: DATABASE_URL\n          value: postgres:\u002F\u002Flocalhost\u002Fmydb\n          type: encrypted\n          target: [production, preview]\n  integrations:\n    - client_id: oac_abc123\n      client_secret: secret_abc123\n      name: My Vercel App\n      redirect_uris:\n        - http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\n","yaml",[1369],{"type":42,"tag":72,"props":1370,"children":1371},{"__ignoreMap":69},[1372,1385,1397,1414,1431,1438,1449,1461,1483,1499,1515,1527,1548,1564,1581,1593,1614,1630,1647,1664,1681,1698,1723,1735,1757,1775,1793,1830,1843,1865,1883,1900,1913],{"type":42,"tag":76,"props":1373,"children":1374},{"class":78,"line":79},[1375,1380],{"type":42,"tag":76,"props":1376,"children":1377},{"style":249},[1378],{"type":48,"value":1379},"tokens",{"type":42,"tag":76,"props":1381,"children":1382},{"style":166},[1383],{"type":48,"value":1384},":\n",{"type":42,"tag":76,"props":1386,"children":1387},{"class":78,"line":89},[1388,1393],{"type":42,"tag":76,"props":1389,"children":1390},{"style":249},[1391],{"type":48,"value":1392},"  test_token_admin",{"type":42,"tag":76,"props":1394,"children":1395},{"style":166},[1396],{"type":48,"value":1384},{"type":42,"tag":76,"props":1398,"children":1399},{"class":78,"line":115},[1400,1405,1409],{"type":42,"tag":76,"props":1401,"children":1402},{"style":249},[1403],{"type":48,"value":1404},"    login",{"type":42,"tag":76,"props":1406,"children":1407},{"style":166},[1408],{"type":48,"value":257},{"type":42,"tag":76,"props":1410,"children":1411},{"style":99},[1412],{"type":48,"value":1413}," admin\n",{"type":42,"tag":76,"props":1415,"children":1416},{"class":78,"line":125},[1417,1422,1426],{"type":42,"tag":76,"props":1418,"children":1419},{"style":249},[1420],{"type":48,"value":1421},"    scopes",{"type":42,"tag":76,"props":1423,"children":1424},{"style":166},[1425],{"type":48,"value":257},{"type":42,"tag":76,"props":1427,"children":1428},{"style":166},[1429],{"type":48,"value":1430}," []\n",{"type":42,"tag":76,"props":1432,"children":1433},{"class":78,"line":134},[1434],{"type":42,"tag":76,"props":1435,"children":1436},{"emptyLinePlaceholder":119},[1437],{"type":48,"value":122},{"type":42,"tag":76,"props":1439,"children":1440},{"class":78,"line":875},[1441,1445],{"type":42,"tag":76,"props":1442,"children":1443},{"style":249},[1444],{"type":48,"value":4},{"type":42,"tag":76,"props":1446,"children":1447},{"style":166},[1448],{"type":48,"value":1384},{"type":42,"tag":76,"props":1450,"children":1451},{"class":78,"line":931},[1452,1457],{"type":42,"tag":76,"props":1453,"children":1454},{"style":249},[1455],{"type":48,"value":1456},"  users",{"type":42,"tag":76,"props":1458,"children":1459},{"style":166},[1460],{"type":48,"value":1384},{"type":42,"tag":76,"props":1462,"children":1463},{"class":78,"line":940},[1464,1469,1474,1478],{"type":42,"tag":76,"props":1465,"children":1466},{"style":166},[1467],{"type":48,"value":1468},"    -",{"type":42,"tag":76,"props":1470,"children":1471},{"style":249},[1472],{"type":48,"value":1473}," username",{"type":42,"tag":76,"props":1475,"children":1476},{"style":166},[1477],{"type":48,"value":257},{"type":42,"tag":76,"props":1479,"children":1480},{"style":99},[1481],{"type":48,"value":1482}," developer\n",{"type":42,"tag":76,"props":1484,"children":1485},{"class":78,"line":957},[1486,1490,1494],{"type":42,"tag":76,"props":1487,"children":1488},{"style":249},[1489],{"type":48,"value":1249},{"type":42,"tag":76,"props":1491,"children":1492},{"style":166},[1493],{"type":48,"value":257},{"type":42,"tag":76,"props":1495,"children":1496},{"style":99},[1497],{"type":48,"value":1498}," Developer\n",{"type":42,"tag":76,"props":1500,"children":1501},{"class":78,"line":1010},[1502,1506,1510],{"type":42,"tag":76,"props":1503,"children":1504},{"style":249},[1505],{"type":48,"value":1279},{"type":42,"tag":76,"props":1507,"children":1508},{"style":166},[1509],{"type":48,"value":257},{"type":42,"tag":76,"props":1511,"children":1512},{"style":99},[1513],{"type":48,"value":1514}," dev@example.com\n",{"type":42,"tag":76,"props":1516,"children":1517},{"class":78,"line":1018},[1518,1523],{"type":42,"tag":76,"props":1519,"children":1520},{"style":249},[1521],{"type":48,"value":1522},"  teams",{"type":42,"tag":76,"props":1524,"children":1525},{"style":166},[1526],{"type":48,"value":1384},{"type":42,"tag":76,"props":1528,"children":1529},{"class":78,"line":1035},[1530,1534,1539,1543],{"type":42,"tag":76,"props":1531,"children":1532},{"style":166},[1533],{"type":48,"value":1468},{"type":42,"tag":76,"props":1535,"children":1536},{"style":249},[1537],{"type":48,"value":1538}," slug",{"type":42,"tag":76,"props":1540,"children":1541},{"style":166},[1542],{"type":48,"value":257},{"type":42,"tag":76,"props":1544,"children":1545},{"style":99},[1546],{"type":48,"value":1547}," my-team\n",{"type":42,"tag":76,"props":1549,"children":1550},{"class":78,"line":1088},[1551,1555,1559],{"type":42,"tag":76,"props":1552,"children":1553},{"style":249},[1554],{"type":48,"value":1249},{"type":42,"tag":76,"props":1556,"children":1557},{"style":166},[1558],{"type":48,"value":257},{"type":42,"tag":76,"props":1560,"children":1561},{"style":99},[1562],{"type":48,"value":1563}," My Team\n",{"type":42,"tag":76,"props":1565,"children":1566},{"class":78,"line":1096},[1567,1572,1576],{"type":42,"tag":76,"props":1568,"children":1569},{"style":249},[1570],{"type":48,"value":1571},"      description",{"type":42,"tag":76,"props":1573,"children":1574},{"style":166},[1575],{"type":48,"value":257},{"type":42,"tag":76,"props":1577,"children":1578},{"style":99},[1579],{"type":48,"value":1580}," Engineering team\n",{"type":42,"tag":76,"props":1582,"children":1583},{"class":78,"line":1134},[1584,1589],{"type":42,"tag":76,"props":1585,"children":1586},{"style":249},[1587],{"type":48,"value":1588},"  projects",{"type":42,"tag":76,"props":1590,"children":1591},{"style":166},[1592],{"type":48,"value":1384},{"type":42,"tag":76,"props":1594,"children":1595},{"class":78,"line":1172},[1596,1600,1605,1609],{"type":42,"tag":76,"props":1597,"children":1598},{"style":166},[1599],{"type":48,"value":1468},{"type":42,"tag":76,"props":1601,"children":1602},{"style":249},[1603],{"type":48,"value":1604}," name",{"type":42,"tag":76,"props":1606,"children":1607},{"style":166},[1608],{"type":48,"value":257},{"type":42,"tag":76,"props":1610,"children":1611},{"style":99},[1612],{"type":48,"value":1613}," my-app\n",{"type":42,"tag":76,"props":1615,"children":1616},{"class":78,"line":1199},[1617,1622,1626],{"type":42,"tag":76,"props":1618,"children":1619},{"style":249},[1620],{"type":48,"value":1621},"      team",{"type":42,"tag":76,"props":1623,"children":1624},{"style":166},[1625],{"type":48,"value":257},{"type":42,"tag":76,"props":1627,"children":1628},{"style":99},[1629],{"type":48,"value":1547},{"type":42,"tag":76,"props":1631,"children":1632},{"class":78,"line":1212},[1633,1638,1642],{"type":42,"tag":76,"props":1634,"children":1635},{"style":249},[1636],{"type":48,"value":1637},"      framework",{"type":42,"tag":76,"props":1639,"children":1640},{"style":166},[1641],{"type":48,"value":257},{"type":42,"tag":76,"props":1643,"children":1644},{"style":99},[1645],{"type":48,"value":1646}," nextjs\n",{"type":42,"tag":76,"props":1648,"children":1649},{"class":78,"line":1243},[1650,1655,1659],{"type":42,"tag":76,"props":1651,"children":1652},{"style":249},[1653],{"type":48,"value":1654},"      buildCommand",{"type":42,"tag":76,"props":1656,"children":1657},{"style":166},[1658],{"type":48,"value":257},{"type":42,"tag":76,"props":1660,"children":1661},{"style":99},[1662],{"type":48,"value":1663}," next build\n",{"type":42,"tag":76,"props":1665,"children":1666},{"class":78,"line":1273},[1667,1672,1676],{"type":42,"tag":76,"props":1668,"children":1669},{"style":249},[1670],{"type":48,"value":1671},"      outputDirectory",{"type":42,"tag":76,"props":1673,"children":1674},{"style":166},[1675],{"type":48,"value":257},{"type":42,"tag":76,"props":1677,"children":1678},{"style":99},[1679],{"type":48,"value":1680}," .next\n",{"type":42,"tag":76,"props":1682,"children":1683},{"class":78,"line":1303},[1684,1689,1693],{"type":42,"tag":76,"props":1685,"children":1686},{"style":249},[1687],{"type":48,"value":1688},"      rootDirectory",{"type":42,"tag":76,"props":1690,"children":1691},{"style":166},[1692],{"type":48,"value":257},{"type":42,"tag":76,"props":1694,"children":1695},{"style":166},[1696],{"type":48,"value":1697}," null\n",{"type":42,"tag":76,"props":1699,"children":1700},{"class":78,"line":1333},[1701,1706,1710,1714,1719],{"type":42,"tag":76,"props":1702,"children":1703},{"style":249},[1704],{"type":48,"value":1705},"      nodeVersion",{"type":42,"tag":76,"props":1707,"children":1708},{"style":166},[1709],{"type":48,"value":257},{"type":42,"tag":76,"props":1711,"children":1712},{"style":166},[1713],{"type":48,"value":380},{"type":42,"tag":76,"props":1715,"children":1716},{"style":99},[1717],{"type":48,"value":1718},"20.x",{"type":42,"tag":76,"props":1720,"children":1721},{"style":166},[1722],{"type":48,"value":390},{"type":42,"tag":76,"props":1724,"children":1725},{"class":78,"line":1342},[1726,1731],{"type":42,"tag":76,"props":1727,"children":1728},{"style":249},[1729],{"type":48,"value":1730},"      envVars",{"type":42,"tag":76,"props":1732,"children":1733},{"style":166},[1734],{"type":48,"value":1384},{"type":42,"tag":76,"props":1736,"children":1737},{"class":78,"line":1350},[1738,1743,1748,1752],{"type":42,"tag":76,"props":1739,"children":1740},{"style":166},[1741],{"type":48,"value":1742},"        -",{"type":42,"tag":76,"props":1744,"children":1745},{"style":249},[1746],{"type":48,"value":1747}," key",{"type":42,"tag":76,"props":1749,"children":1750},{"style":166},[1751],{"type":48,"value":257},{"type":42,"tag":76,"props":1753,"children":1754},{"style":99},[1755],{"type":48,"value":1756}," DATABASE_URL\n",{"type":42,"tag":76,"props":1758,"children":1760},{"class":78,"line":1759},25,[1761,1766,1770],{"type":42,"tag":76,"props":1762,"children":1763},{"style":249},[1764],{"type":48,"value":1765},"          value",{"type":42,"tag":76,"props":1767,"children":1768},{"style":166},[1769],{"type":48,"value":257},{"type":42,"tag":76,"props":1771,"children":1772},{"style":99},[1773],{"type":48,"value":1774}," postgres:\u002F\u002Flocalhost\u002Fmydb\n",{"type":42,"tag":76,"props":1776,"children":1778},{"class":78,"line":1777},26,[1779,1784,1788],{"type":42,"tag":76,"props":1780,"children":1781},{"style":249},[1782],{"type":48,"value":1783},"          type",{"type":42,"tag":76,"props":1785,"children":1786},{"style":166},[1787],{"type":48,"value":257},{"type":42,"tag":76,"props":1789,"children":1790},{"style":99},[1791],{"type":48,"value":1792}," encrypted\n",{"type":42,"tag":76,"props":1794,"children":1796},{"class":78,"line":1795},27,[1797,1802,1806,1811,1816,1820,1825],{"type":42,"tag":76,"props":1798,"children":1799},{"style":249},[1800],{"type":48,"value":1801},"          target",{"type":42,"tag":76,"props":1803,"children":1804},{"style":166},[1805],{"type":48,"value":257},{"type":42,"tag":76,"props":1807,"children":1808},{"style":166},[1809],{"type":48,"value":1810}," [",{"type":42,"tag":76,"props":1812,"children":1813},{"style":99},[1814],{"type":48,"value":1815},"production",{"type":42,"tag":76,"props":1817,"children":1818},{"style":166},[1819],{"type":48,"value":275},{"type":42,"tag":76,"props":1821,"children":1822},{"style":99},[1823],{"type":48,"value":1824}," preview",{"type":42,"tag":76,"props":1826,"children":1827},{"style":166},[1828],{"type":48,"value":1829},"]\n",{"type":42,"tag":76,"props":1831,"children":1833},{"class":78,"line":1832},28,[1834,1839],{"type":42,"tag":76,"props":1835,"children":1836},{"style":249},[1837],{"type":48,"value":1838},"  integrations",{"type":42,"tag":76,"props":1840,"children":1841},{"style":166},[1842],{"type":48,"value":1384},{"type":42,"tag":76,"props":1844,"children":1846},{"class":78,"line":1845},29,[1847,1851,1856,1860],{"type":42,"tag":76,"props":1848,"children":1849},{"style":166},[1850],{"type":48,"value":1468},{"type":42,"tag":76,"props":1852,"children":1853},{"style":249},[1854],{"type":48,"value":1855}," client_id",{"type":42,"tag":76,"props":1857,"children":1858},{"style":166},[1859],{"type":48,"value":257},{"type":42,"tag":76,"props":1861,"children":1862},{"style":99},[1863],{"type":48,"value":1864}," oac_abc123\n",{"type":42,"tag":76,"props":1866,"children":1868},{"class":78,"line":1867},30,[1869,1874,1878],{"type":42,"tag":76,"props":1870,"children":1871},{"style":249},[1872],{"type":48,"value":1873},"      client_secret",{"type":42,"tag":76,"props":1875,"children":1876},{"style":166},[1877],{"type":48,"value":257},{"type":42,"tag":76,"props":1879,"children":1880},{"style":99},[1881],{"type":48,"value":1882}," secret_abc123\n",{"type":42,"tag":76,"props":1884,"children":1886},{"class":78,"line":1885},31,[1887,1891,1895],{"type":42,"tag":76,"props":1888,"children":1889},{"style":249},[1890],{"type":48,"value":1249},{"type":42,"tag":76,"props":1892,"children":1893},{"style":166},[1894],{"type":48,"value":257},{"type":42,"tag":76,"props":1896,"children":1897},{"style":99},[1898],{"type":48,"value":1899}," My Vercel App\n",{"type":42,"tag":76,"props":1901,"children":1903},{"class":78,"line":1902},32,[1904,1909],{"type":42,"tag":76,"props":1905,"children":1906},{"style":249},[1907],{"type":48,"value":1908},"      redirect_uris",{"type":42,"tag":76,"props":1910,"children":1911},{"style":166},[1912],{"type":48,"value":1384},{"type":42,"tag":76,"props":1914,"children":1916},{"class":78,"line":1915},33,[1917,1921],{"type":42,"tag":76,"props":1918,"children":1919},{"style":166},[1920],{"type":48,"value":1742},{"type":42,"tag":76,"props":1922,"children":1923},{"style":99},[1924],{"type":48,"value":1925}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\n",{"type":42,"tag":57,"props":1927,"children":1929},{"id":1928},"pagination",[1930],{"type":48,"value":1931},"Pagination",{"type":42,"tag":51,"props":1933,"children":1934},{},[1935,1937,1943,1945,1951,1953,1959,1961,1966],{"type":48,"value":1936},"Cursor-based pagination using ",{"type":42,"tag":72,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":48,"value":1942},"limit",{"type":48,"value":1944},", ",{"type":42,"tag":72,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":48,"value":1950},"since",{"type":48,"value":1952},", and ",{"type":42,"tag":72,"props":1954,"children":1956},{"className":1955},[],[1957],{"type":48,"value":1958},"until",{"type":48,"value":1960}," query params. Responses include a ",{"type":42,"tag":72,"props":1962,"children":1964},{"className":1963},[],[1965],{"type":48,"value":1928},{"type":48,"value":1967}," object:",{"type":42,"tag":64,"props":1969,"children":1971},{"className":66,"code":1970,"language":68,"meta":69,"style":69},"curl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?limit=10\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[1972],{"type":42,"tag":72,"props":1973,"children":1974},{"__ignoreMap":69},[1975,2000],{"type":42,"tag":76,"props":1976,"children":1977},{"class":78,"line":79},[1978,1982,1986,1991,1996],{"type":42,"tag":76,"props":1979,"children":1980},{"style":93},[1981],{"type":48,"value":357},{"type":42,"tag":76,"props":1983,"children":1984},{"style":166},[1985],{"type":48,"value":380},{"type":42,"tag":76,"props":1987,"children":1988},{"style":99},[1989],{"type":48,"value":1990},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?limit=10",{"type":42,"tag":76,"props":1992,"children":1993},{"style":166},[1994],{"type":48,"value":1995},"\"",{"type":42,"tag":76,"props":1997,"children":1998},{"style":172},[1999],{"type":48,"value":367},{"type":42,"tag":76,"props":2001,"children":2002},{"class":78,"line":89},[2003,2007,2011,2016,2021],{"type":42,"tag":76,"props":2004,"children":2005},{"style":99},[2006],{"type":48,"value":375},{"type":42,"tag":76,"props":2008,"children":2009},{"style":166},[2010],{"type":48,"value":380},{"type":42,"tag":76,"props":2012,"children":2013},{"style":99},[2014],{"type":48,"value":2015},"Authorization: Bearer ",{"type":42,"tag":76,"props":2017,"children":2018},{"style":172},[2019],{"type":48,"value":2020},"$TOKEN",{"type":42,"tag":76,"props":2022,"children":2023},{"style":166},[2024],{"type":48,"value":390},{"type":42,"tag":57,"props":2026,"children":2028},{"id":2027},"api-endpoints",[2029],{"type":48,"value":2030},"API Endpoints",{"type":42,"tag":416,"props":2032,"children":2034},{"id":2033},"user-teams",[2035],{"type":48,"value":2036},"User & Teams",{"type":42,"tag":64,"props":2038,"children":2040},{"className":66,"code":2039,"language":68,"meta":69,"style":69},"# Registration check\ncurl http:\u002F\u002Flocalhost:4000\u002Fregistration\n\n# Authenticated user\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser -H \"Authorization: Bearer $TOKEN\"\n\n# Update user\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fuser \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"New Name\", \"email\": \"new@example.com\"}'\n\n# List teams (cursor paginated)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams -H \"Authorization: Bearer $TOKEN\"\n\n# Get team (by ID or slug)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team -H \"Authorization: Bearer $TOKEN\"\n\n# Create team\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"slug\": \"new-team\", \"name\": \"New Team\"}'\n\n# Update team (name, slug, description)\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Updated Team\", \"description\": \"New description\"}'\n\n# List members\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team\u002Fmembers -H \"Authorization: Bearer $TOKEN\"\n\n# Add member (by uid or email, with role)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fteam_id\u002Fmembers\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"email\": \"dev@example.com\", \"role\": \"MEMBER\"}'\n",[2041],{"type":42,"tag":72,"props":2042,"children":2043},{"__ignoreMap":69},[2044,2052,2064,2071,2079,2111,2118,2126,2151,2178,2202,2223,2230,2238,2270,2277,2285,2317,2324,2332,2356,2383,2406,2426,2433,2441,2464,2491,2514,2534,2541,2549,2581,2588,2597,2630,2658,2682],{"type":42,"tag":76,"props":2045,"children":2046},{"class":78,"line":79},[2047],{"type":42,"tag":76,"props":2048,"children":2049},{"style":83},[2050],{"type":48,"value":2051},"# Registration check\n",{"type":42,"tag":76,"props":2053,"children":2054},{"class":78,"line":89},[2055,2059],{"type":42,"tag":76,"props":2056,"children":2057},{"style":93},[2058],{"type":48,"value":357},{"type":42,"tag":76,"props":2060,"children":2061},{"style":99},[2062],{"type":48,"value":2063}," http:\u002F\u002Flocalhost:4000\u002Fregistration\n",{"type":42,"tag":76,"props":2065,"children":2066},{"class":78,"line":115},[2067],{"type":42,"tag":76,"props":2068,"children":2069},{"emptyLinePlaceholder":119},[2070],{"type":48,"value":122},{"type":42,"tag":76,"props":2072,"children":2073},{"class":78,"line":125},[2074],{"type":42,"tag":76,"props":2075,"children":2076},{"style":83},[2077],{"type":48,"value":2078},"# Authenticated user\n",{"type":42,"tag":76,"props":2080,"children":2081},{"class":78,"line":134},[2082,2086,2090,2095,2099,2103,2107],{"type":42,"tag":76,"props":2083,"children":2084},{"style":93},[2085],{"type":48,"value":357},{"type":42,"tag":76,"props":2087,"children":2088},{"style":99},[2089],{"type":48,"value":362},{"type":42,"tag":76,"props":2091,"children":2092},{"style":99},[2093],{"type":48,"value":2094}," -H",{"type":42,"tag":76,"props":2096,"children":2097},{"style":166},[2098],{"type":48,"value":380},{"type":42,"tag":76,"props":2100,"children":2101},{"style":99},[2102],{"type":48,"value":2015},{"type":42,"tag":76,"props":2104,"children":2105},{"style":172},[2106],{"type":48,"value":2020},{"type":42,"tag":76,"props":2108,"children":2109},{"style":166},[2110],{"type":48,"value":390},{"type":42,"tag":76,"props":2112,"children":2113},{"class":78,"line":875},[2114],{"type":42,"tag":76,"props":2115,"children":2116},{"emptyLinePlaceholder":119},[2117],{"type":48,"value":122},{"type":42,"tag":76,"props":2119,"children":2120},{"class":78,"line":931},[2121],{"type":42,"tag":76,"props":2122,"children":2123},{"style":83},[2124],{"type":48,"value":2125},"# Update user\n",{"type":42,"tag":76,"props":2127,"children":2128},{"class":78,"line":940},[2129,2133,2138,2143,2147],{"type":42,"tag":76,"props":2130,"children":2131},{"style":93},[2132],{"type":48,"value":357},{"type":42,"tag":76,"props":2134,"children":2135},{"style":99},[2136],{"type":48,"value":2137}," -X",{"type":42,"tag":76,"props":2139,"children":2140},{"style":99},[2141],{"type":48,"value":2142}," PATCH",{"type":42,"tag":76,"props":2144,"children":2145},{"style":99},[2146],{"type":48,"value":362},{"type":42,"tag":76,"props":2148,"children":2149},{"style":172},[2150],{"type":48,"value":367},{"type":42,"tag":76,"props":2152,"children":2153},{"class":78,"line":957},[2154,2158,2162,2166,2170,2174],{"type":42,"tag":76,"props":2155,"children":2156},{"style":99},[2157],{"type":48,"value":375},{"type":42,"tag":76,"props":2159,"children":2160},{"style":166},[2161],{"type":48,"value":380},{"type":42,"tag":76,"props":2163,"children":2164},{"style":99},[2165],{"type":48,"value":2015},{"type":42,"tag":76,"props":2167,"children":2168},{"style":172},[2169],{"type":48,"value":2020},{"type":42,"tag":76,"props":2171,"children":2172},{"style":166},[2173],{"type":48,"value":1995},{"type":42,"tag":76,"props":2175,"children":2176},{"style":172},[2177],{"type":48,"value":367},{"type":42,"tag":76,"props":2179,"children":2180},{"class":78,"line":1010},[2181,2185,2189,2194,2198],{"type":42,"tag":76,"props":2182,"children":2183},{"style":99},[2184],{"type":48,"value":375},{"type":42,"tag":76,"props":2186,"children":2187},{"style":166},[2188],{"type":48,"value":380},{"type":42,"tag":76,"props":2190,"children":2191},{"style":99},[2192],{"type":48,"value":2193},"Content-Type: application\u002Fjson",{"type":42,"tag":76,"props":2195,"children":2196},{"style":166},[2197],{"type":48,"value":1995},{"type":42,"tag":76,"props":2199,"children":2200},{"style":172},[2201],{"type":48,"value":367},{"type":42,"tag":76,"props":2203,"children":2204},{"class":78,"line":1018},[2205,2210,2214,2219],{"type":42,"tag":76,"props":2206,"children":2207},{"style":99},[2208],{"type":48,"value":2209},"  -d",{"type":42,"tag":76,"props":2211,"children":2212},{"style":166},[2213],{"type":48,"value":190},{"type":42,"tag":76,"props":2215,"children":2216},{"style":99},[2217],{"type":48,"value":2218},"{\"name\": \"New Name\", \"email\": \"new@example.com\"}",{"type":42,"tag":76,"props":2220,"children":2221},{"style":166},[2222],{"type":48,"value":200},{"type":42,"tag":76,"props":2224,"children":2225},{"class":78,"line":1035},[2226],{"type":42,"tag":76,"props":2227,"children":2228},{"emptyLinePlaceholder":119},[2229],{"type":48,"value":122},{"type":42,"tag":76,"props":2231,"children":2232},{"class":78,"line":1088},[2233],{"type":42,"tag":76,"props":2234,"children":2235},{"style":83},[2236],{"type":48,"value":2237},"# List teams (cursor paginated)\n",{"type":42,"tag":76,"props":2239,"children":2240},{"class":78,"line":1096},[2241,2245,2250,2254,2258,2262,2266],{"type":42,"tag":76,"props":2242,"children":2243},{"style":93},[2244],{"type":48,"value":357},{"type":42,"tag":76,"props":2246,"children":2247},{"style":99},[2248],{"type":48,"value":2249}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams",{"type":42,"tag":76,"props":2251,"children":2252},{"style":99},[2253],{"type":48,"value":2094},{"type":42,"tag":76,"props":2255,"children":2256},{"style":166},[2257],{"type":48,"value":380},{"type":42,"tag":76,"props":2259,"children":2260},{"style":99},[2261],{"type":48,"value":2015},{"type":42,"tag":76,"props":2263,"children":2264},{"style":172},[2265],{"type":48,"value":2020},{"type":42,"tag":76,"props":2267,"children":2268},{"style":166},[2269],{"type":48,"value":390},{"type":42,"tag":76,"props":2271,"children":2272},{"class":78,"line":1134},[2273],{"type":42,"tag":76,"props":2274,"children":2275},{"emptyLinePlaceholder":119},[2276],{"type":48,"value":122},{"type":42,"tag":76,"props":2278,"children":2279},{"class":78,"line":1172},[2280],{"type":42,"tag":76,"props":2281,"children":2282},{"style":83},[2283],{"type":48,"value":2284},"# Get team (by ID or slug)\n",{"type":42,"tag":76,"props":2286,"children":2287},{"class":78,"line":1199},[2288,2292,2297,2301,2305,2309,2313],{"type":42,"tag":76,"props":2289,"children":2290},{"style":93},[2291],{"type":48,"value":357},{"type":42,"tag":76,"props":2293,"children":2294},{"style":99},[2295],{"type":48,"value":2296}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team",{"type":42,"tag":76,"props":2298,"children":2299},{"style":99},[2300],{"type":48,"value":2094},{"type":42,"tag":76,"props":2302,"children":2303},{"style":166},[2304],{"type":48,"value":380},{"type":42,"tag":76,"props":2306,"children":2307},{"style":99},[2308],{"type":48,"value":2015},{"type":42,"tag":76,"props":2310,"children":2311},{"style":172},[2312],{"type":48,"value":2020},{"type":42,"tag":76,"props":2314,"children":2315},{"style":166},[2316],{"type":48,"value":390},{"type":42,"tag":76,"props":2318,"children":2319},{"class":78,"line":1212},[2320],{"type":42,"tag":76,"props":2321,"children":2322},{"emptyLinePlaceholder":119},[2323],{"type":48,"value":122},{"type":42,"tag":76,"props":2325,"children":2326},{"class":78,"line":1243},[2327],{"type":42,"tag":76,"props":2328,"children":2329},{"style":83},[2330],{"type":48,"value":2331},"# Create team\n",{"type":42,"tag":76,"props":2333,"children":2334},{"class":78,"line":1273},[2335,2339,2343,2348,2352],{"type":42,"tag":76,"props":2336,"children":2337},{"style":93},[2338],{"type":48,"value":357},{"type":42,"tag":76,"props":2340,"children":2341},{"style":99},[2342],{"type":48,"value":2137},{"type":42,"tag":76,"props":2344,"children":2345},{"style":99},[2346],{"type":48,"value":2347}," POST",{"type":42,"tag":76,"props":2349,"children":2350},{"style":99},[2351],{"type":48,"value":2249},{"type":42,"tag":76,"props":2353,"children":2354},{"style":172},[2355],{"type":48,"value":367},{"type":42,"tag":76,"props":2357,"children":2358},{"class":78,"line":1303},[2359,2363,2367,2371,2375,2379],{"type":42,"tag":76,"props":2360,"children":2361},{"style":99},[2362],{"type":48,"value":375},{"type":42,"tag":76,"props":2364,"children":2365},{"style":166},[2366],{"type":48,"value":380},{"type":42,"tag":76,"props":2368,"children":2369},{"style":99},[2370],{"type":48,"value":2015},{"type":42,"tag":76,"props":2372,"children":2373},{"style":172},[2374],{"type":48,"value":2020},{"type":42,"tag":76,"props":2376,"children":2377},{"style":166},[2378],{"type":48,"value":1995},{"type":42,"tag":76,"props":2380,"children":2381},{"style":172},[2382],{"type":48,"value":367},{"type":42,"tag":76,"props":2384,"children":2385},{"class":78,"line":1333},[2386,2390,2394,2398,2402],{"type":42,"tag":76,"props":2387,"children":2388},{"style":99},[2389],{"type":48,"value":375},{"type":42,"tag":76,"props":2391,"children":2392},{"style":166},[2393],{"type":48,"value":380},{"type":42,"tag":76,"props":2395,"children":2396},{"style":99},[2397],{"type":48,"value":2193},{"type":42,"tag":76,"props":2399,"children":2400},{"style":166},[2401],{"type":48,"value":1995},{"type":42,"tag":76,"props":2403,"children":2404},{"style":172},[2405],{"type":48,"value":367},{"type":42,"tag":76,"props":2407,"children":2408},{"class":78,"line":1342},[2409,2413,2417,2422],{"type":42,"tag":76,"props":2410,"children":2411},{"style":99},[2412],{"type":48,"value":2209},{"type":42,"tag":76,"props":2414,"children":2415},{"style":166},[2416],{"type":48,"value":190},{"type":42,"tag":76,"props":2418,"children":2419},{"style":99},[2420],{"type":48,"value":2421},"{\"slug\": \"new-team\", \"name\": \"New Team\"}",{"type":42,"tag":76,"props":2423,"children":2424},{"style":166},[2425],{"type":48,"value":200},{"type":42,"tag":76,"props":2427,"children":2428},{"class":78,"line":1350},[2429],{"type":42,"tag":76,"props":2430,"children":2431},{"emptyLinePlaceholder":119},[2432],{"type":48,"value":122},{"type":42,"tag":76,"props":2434,"children":2435},{"class":78,"line":1759},[2436],{"type":42,"tag":76,"props":2437,"children":2438},{"style":83},[2439],{"type":48,"value":2440},"# Update team (name, slug, description)\n",{"type":42,"tag":76,"props":2442,"children":2443},{"class":78,"line":1777},[2444,2448,2452,2456,2460],{"type":42,"tag":76,"props":2445,"children":2446},{"style":93},[2447],{"type":48,"value":357},{"type":42,"tag":76,"props":2449,"children":2450},{"style":99},[2451],{"type":48,"value":2137},{"type":42,"tag":76,"props":2453,"children":2454},{"style":99},[2455],{"type":48,"value":2142},{"type":42,"tag":76,"props":2457,"children":2458},{"style":99},[2459],{"type":48,"value":2296},{"type":42,"tag":76,"props":2461,"children":2462},{"style":172},[2463],{"type":48,"value":367},{"type":42,"tag":76,"props":2465,"children":2466},{"class":78,"line":1795},[2467,2471,2475,2479,2483,2487],{"type":42,"tag":76,"props":2468,"children":2469},{"style":99},[2470],{"type":48,"value":375},{"type":42,"tag":76,"props":2472,"children":2473},{"style":166},[2474],{"type":48,"value":380},{"type":42,"tag":76,"props":2476,"children":2477},{"style":99},[2478],{"type":48,"value":2015},{"type":42,"tag":76,"props":2480,"children":2481},{"style":172},[2482],{"type":48,"value":2020},{"type":42,"tag":76,"props":2484,"children":2485},{"style":166},[2486],{"type":48,"value":1995},{"type":42,"tag":76,"props":2488,"children":2489},{"style":172},[2490],{"type":48,"value":367},{"type":42,"tag":76,"props":2492,"children":2493},{"class":78,"line":1832},[2494,2498,2502,2506,2510],{"type":42,"tag":76,"props":2495,"children":2496},{"style":99},[2497],{"type":48,"value":375},{"type":42,"tag":76,"props":2499,"children":2500},{"style":166},[2501],{"type":48,"value":380},{"type":42,"tag":76,"props":2503,"children":2504},{"style":99},[2505],{"type":48,"value":2193},{"type":42,"tag":76,"props":2507,"children":2508},{"style":166},[2509],{"type":48,"value":1995},{"type":42,"tag":76,"props":2511,"children":2512},{"style":172},[2513],{"type":48,"value":367},{"type":42,"tag":76,"props":2515,"children":2516},{"class":78,"line":1845},[2517,2521,2525,2530],{"type":42,"tag":76,"props":2518,"children":2519},{"style":99},[2520],{"type":48,"value":2209},{"type":42,"tag":76,"props":2522,"children":2523},{"style":166},[2524],{"type":48,"value":190},{"type":42,"tag":76,"props":2526,"children":2527},{"style":99},[2528],{"type":48,"value":2529},"{\"name\": \"Updated Team\", \"description\": \"New description\"}",{"type":42,"tag":76,"props":2531,"children":2532},{"style":166},[2533],{"type":48,"value":200},{"type":42,"tag":76,"props":2535,"children":2536},{"class":78,"line":1867},[2537],{"type":42,"tag":76,"props":2538,"children":2539},{"emptyLinePlaceholder":119},[2540],{"type":48,"value":122},{"type":42,"tag":76,"props":2542,"children":2543},{"class":78,"line":1885},[2544],{"type":42,"tag":76,"props":2545,"children":2546},{"style":83},[2547],{"type":48,"value":2548},"# List members\n",{"type":42,"tag":76,"props":2550,"children":2551},{"class":78,"line":1902},[2552,2556,2561,2565,2569,2573,2577],{"type":42,"tag":76,"props":2553,"children":2554},{"style":93},[2555],{"type":48,"value":357},{"type":42,"tag":76,"props":2557,"children":2558},{"style":99},[2559],{"type":48,"value":2560}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fmy-team\u002Fmembers",{"type":42,"tag":76,"props":2562,"children":2563},{"style":99},[2564],{"type":48,"value":2094},{"type":42,"tag":76,"props":2566,"children":2567},{"style":166},[2568],{"type":48,"value":380},{"type":42,"tag":76,"props":2570,"children":2571},{"style":99},[2572],{"type":48,"value":2015},{"type":42,"tag":76,"props":2574,"children":2575},{"style":172},[2576],{"type":48,"value":2020},{"type":42,"tag":76,"props":2578,"children":2579},{"style":166},[2580],{"type":48,"value":390},{"type":42,"tag":76,"props":2582,"children":2583},{"class":78,"line":1915},[2584],{"type":42,"tag":76,"props":2585,"children":2586},{"emptyLinePlaceholder":119},[2587],{"type":48,"value":122},{"type":42,"tag":76,"props":2589,"children":2591},{"class":78,"line":2590},34,[2592],{"type":42,"tag":76,"props":2593,"children":2594},{"style":83},[2595],{"type":48,"value":2596},"# Add member (by uid or email, with role)\n",{"type":42,"tag":76,"props":2598,"children":2600},{"class":78,"line":2599},35,[2601,2605,2609,2613,2617,2622,2626],{"type":42,"tag":76,"props":2602,"children":2603},{"style":93},[2604],{"type":48,"value":357},{"type":42,"tag":76,"props":2606,"children":2607},{"style":99},[2608],{"type":48,"value":2137},{"type":42,"tag":76,"props":2610,"children":2611},{"style":99},[2612],{"type":48,"value":2347},{"type":42,"tag":76,"props":2614,"children":2615},{"style":166},[2616],{"type":48,"value":380},{"type":42,"tag":76,"props":2618,"children":2619},{"style":99},[2620],{"type":48,"value":2621},"http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fteams\u002Fteam_id\u002Fmembers",{"type":42,"tag":76,"props":2623,"children":2624},{"style":166},[2625],{"type":48,"value":1995},{"type":42,"tag":76,"props":2627,"children":2628},{"style":172},[2629],{"type":48,"value":367},{"type":42,"tag":76,"props":2631,"children":2633},{"class":78,"line":2632},36,[2634,2638,2642,2646,2650,2654],{"type":42,"tag":76,"props":2635,"children":2636},{"style":99},[2637],{"type":48,"value":375},{"type":42,"tag":76,"props":2639,"children":2640},{"style":166},[2641],{"type":48,"value":380},{"type":42,"tag":76,"props":2643,"children":2644},{"style":99},[2645],{"type":48,"value":2015},{"type":42,"tag":76,"props":2647,"children":2648},{"style":172},[2649],{"type":48,"value":2020},{"type":42,"tag":76,"props":2651,"children":2652},{"style":166},[2653],{"type":48,"value":1995},{"type":42,"tag":76,"props":2655,"children":2656},{"style":172},[2657],{"type":48,"value":367},{"type":42,"tag":76,"props":2659,"children":2661},{"class":78,"line":2660},37,[2662,2666,2670,2674,2678],{"type":42,"tag":76,"props":2663,"children":2664},{"style":99},[2665],{"type":48,"value":375},{"type":42,"tag":76,"props":2667,"children":2668},{"style":166},[2669],{"type":48,"value":380},{"type":42,"tag":76,"props":2671,"children":2672},{"style":99},[2673],{"type":48,"value":2193},{"type":42,"tag":76,"props":2675,"children":2676},{"style":166},[2677],{"type":48,"value":1995},{"type":42,"tag":76,"props":2679,"children":2680},{"style":172},[2681],{"type":48,"value":367},{"type":42,"tag":76,"props":2683,"children":2685},{"class":78,"line":2684},38,[2686,2690,2694,2699],{"type":42,"tag":76,"props":2687,"children":2688},{"style":99},[2689],{"type":48,"value":2209},{"type":42,"tag":76,"props":2691,"children":2692},{"style":166},[2693],{"type":48,"value":190},{"type":42,"tag":76,"props":2695,"children":2696},{"style":99},[2697],{"type":48,"value":2698},"{\"email\": \"dev@example.com\", \"role\": \"MEMBER\"}",{"type":42,"tag":76,"props":2700,"children":2701},{"style":166},[2702],{"type":48,"value":200},{"type":42,"tag":51,"props":2704,"children":2705},{},[2706,2708,2714,2715,2721,2722,2728,2729,2735],{"type":48,"value":2707},"Roles: ",{"type":42,"tag":72,"props":2709,"children":2711},{"className":2710},[],[2712],{"type":48,"value":2713},"OWNER",{"type":48,"value":1944},{"type":42,"tag":72,"props":2716,"children":2718},{"className":2717},[],[2719],{"type":48,"value":2720},"MEMBER",{"type":48,"value":1944},{"type":42,"tag":72,"props":2723,"children":2725},{"className":2724},[],[2726],{"type":48,"value":2727},"DEVELOPER",{"type":48,"value":1944},{"type":42,"tag":72,"props":2730,"children":2732},{"className":2731},[],[2733],{"type":48,"value":2734},"VIEWER",{"type":48,"value":484},{"type":42,"tag":416,"props":2737,"children":2739},{"id":2738},"projects",[2740],{"type":48,"value":2741},"Projects",{"type":42,"tag":64,"props":2743,"children":2745},{"className":66,"code":2744,"language":68,"meta":69,"style":69},"# Create project (with optional env vars, git, and build config)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv11\u002Fprojects \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"framework\": \"nextjs\", \"buildCommand\": \"next build\", \"outputDirectory\": \".next\", \"nodeVersion\": \"20.x\", \"environmentVariables\": [{\"key\": \"API_KEY\", \"value\": \"secret\", \"type\": \"encrypted\", \"target\": [\"production\"]}]}'\n\n# List projects (search, cursor pagination)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?search=my-app\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get project (includes env vars)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Update project (framework, buildCommand, devCommand, installCommand,\n#   outputDirectory, rootDirectory, nodeVersion, serverlessFunctionRegion,\n#   publicSource, autoAssignCustomDomains, gitForkProtection,\n#   commandForIgnoringBuildStep)\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"framework\": \"remix\"}'\n\n# Delete project (cascades deployments, domains, env vars, protection bypasses)\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Promote aliases status\ncurl http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fpromote\u002Faliases \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Protection bypass: generate, revoke, regenerate\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"generate\": {\"note\": \"CI preview\", \"scope\": \"deployment\"}}'\n\n# Revoke protection bypass secrets\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"revoke\": [\"secret_to_revoke\"]}'\n\n# Regenerate protection bypass secrets\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"regenerate\": [\"old_secret\"]}'\n",[2746],{"type":42,"tag":72,"props":2747,"children":2748},{"__ignoreMap":69},[2749,2757,2781,2808,2831,2851,2858,2866,2890,2913,2920,2928,2944,2967,2974,2982,2990,2998,3006,3029,3056,3079,3099,3106,3114,3138,3161,3168,3176,3192,3215,3222,3230,3254,3281,3304,3324,3331,3339,3363,3391,3415,3436,3444,3453,3477,3505,3529],{"type":42,"tag":76,"props":2750,"children":2751},{"class":78,"line":79},[2752],{"type":42,"tag":76,"props":2753,"children":2754},{"style":83},[2755],{"type":48,"value":2756},"# Create project (with optional env vars, git, and build config)\n",{"type":42,"tag":76,"props":2758,"children":2759},{"class":78,"line":89},[2760,2764,2768,2772,2777],{"type":42,"tag":76,"props":2761,"children":2762},{"style":93},[2763],{"type":48,"value":357},{"type":42,"tag":76,"props":2765,"children":2766},{"style":99},[2767],{"type":48,"value":2137},{"type":42,"tag":76,"props":2769,"children":2770},{"style":99},[2771],{"type":48,"value":2347},{"type":42,"tag":76,"props":2773,"children":2774},{"style":99},[2775],{"type":48,"value":2776}," http:\u002F\u002Flocalhost:4000\u002Fv11\u002Fprojects",{"type":42,"tag":76,"props":2778,"children":2779},{"style":172},[2780],{"type":48,"value":367},{"type":42,"tag":76,"props":2782,"children":2783},{"class":78,"line":115},[2784,2788,2792,2796,2800,2804],{"type":42,"tag":76,"props":2785,"children":2786},{"style":99},[2787],{"type":48,"value":375},{"type":42,"tag":76,"props":2789,"children":2790},{"style":166},[2791],{"type":48,"value":380},{"type":42,"tag":76,"props":2793,"children":2794},{"style":99},[2795],{"type":48,"value":2015},{"type":42,"tag":76,"props":2797,"children":2798},{"style":172},[2799],{"type":48,"value":2020},{"type":42,"tag":76,"props":2801,"children":2802},{"style":166},[2803],{"type":48,"value":1995},{"type":42,"tag":76,"props":2805,"children":2806},{"style":172},[2807],{"type":48,"value":367},{"type":42,"tag":76,"props":2809,"children":2810},{"class":78,"line":125},[2811,2815,2819,2823,2827],{"type":42,"tag":76,"props":2812,"children":2813},{"style":99},[2814],{"type":48,"value":375},{"type":42,"tag":76,"props":2816,"children":2817},{"style":166},[2818],{"type":48,"value":380},{"type":42,"tag":76,"props":2820,"children":2821},{"style":99},[2822],{"type":48,"value":2193},{"type":42,"tag":76,"props":2824,"children":2825},{"style":166},[2826],{"type":48,"value":1995},{"type":42,"tag":76,"props":2828,"children":2829},{"style":172},[2830],{"type":48,"value":367},{"type":42,"tag":76,"props":2832,"children":2833},{"class":78,"line":134},[2834,2838,2842,2847],{"type":42,"tag":76,"props":2835,"children":2836},{"style":99},[2837],{"type":48,"value":2209},{"type":42,"tag":76,"props":2839,"children":2840},{"style":166},[2841],{"type":48,"value":190},{"type":42,"tag":76,"props":2843,"children":2844},{"style":99},[2845],{"type":48,"value":2846},"{\"name\": \"my-app\", \"framework\": \"nextjs\", \"buildCommand\": \"next build\", \"outputDirectory\": \".next\", \"nodeVersion\": \"20.x\", \"environmentVariables\": [{\"key\": \"API_KEY\", \"value\": \"secret\", \"type\": \"encrypted\", \"target\": [\"production\"]}]}",{"type":42,"tag":76,"props":2848,"children":2849},{"style":166},[2850],{"type":48,"value":200},{"type":42,"tag":76,"props":2852,"children":2853},{"class":78,"line":875},[2854],{"type":42,"tag":76,"props":2855,"children":2856},{"emptyLinePlaceholder":119},[2857],{"type":48,"value":122},{"type":42,"tag":76,"props":2859,"children":2860},{"class":78,"line":931},[2861],{"type":42,"tag":76,"props":2862,"children":2863},{"style":83},[2864],{"type":48,"value":2865},"# List projects (search, cursor pagination)\n",{"type":42,"tag":76,"props":2867,"children":2868},{"class":78,"line":940},[2869,2873,2877,2882,2886],{"type":42,"tag":76,"props":2870,"children":2871},{"style":93},[2872],{"type":48,"value":357},{"type":42,"tag":76,"props":2874,"children":2875},{"style":166},[2876],{"type":48,"value":380},{"type":42,"tag":76,"props":2878,"children":2879},{"style":99},[2880],{"type":48,"value":2881},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?search=my-app",{"type":42,"tag":76,"props":2883,"children":2884},{"style":166},[2885],{"type":48,"value":1995},{"type":42,"tag":76,"props":2887,"children":2888},{"style":172},[2889],{"type":48,"value":367},{"type":42,"tag":76,"props":2891,"children":2892},{"class":78,"line":957},[2893,2897,2901,2905,2909],{"type":42,"tag":76,"props":2894,"children":2895},{"style":99},[2896],{"type":48,"value":375},{"type":42,"tag":76,"props":2898,"children":2899},{"style":166},[2900],{"type":48,"value":380},{"type":42,"tag":76,"props":2902,"children":2903},{"style":99},[2904],{"type":48,"value":2015},{"type":42,"tag":76,"props":2906,"children":2907},{"style":172},[2908],{"type":48,"value":2020},{"type":42,"tag":76,"props":2910,"children":2911},{"style":166},[2912],{"type":48,"value":390},{"type":42,"tag":76,"props":2914,"children":2915},{"class":78,"line":1010},[2916],{"type":42,"tag":76,"props":2917,"children":2918},{"emptyLinePlaceholder":119},[2919],{"type":48,"value":122},{"type":42,"tag":76,"props":2921,"children":2922},{"class":78,"line":1018},[2923],{"type":42,"tag":76,"props":2924,"children":2925},{"style":83},[2926],{"type":48,"value":2927},"# Get project (includes env vars)\n",{"type":42,"tag":76,"props":2929,"children":2930},{"class":78,"line":1035},[2931,2935,2940],{"type":42,"tag":76,"props":2932,"children":2933},{"style":93},[2934],{"type":48,"value":357},{"type":42,"tag":76,"props":2936,"children":2937},{"style":99},[2938],{"type":48,"value":2939}," http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app",{"type":42,"tag":76,"props":2941,"children":2942},{"style":172},[2943],{"type":48,"value":367},{"type":42,"tag":76,"props":2945,"children":2946},{"class":78,"line":1088},[2947,2951,2955,2959,2963],{"type":42,"tag":76,"props":2948,"children":2949},{"style":99},[2950],{"type":48,"value":375},{"type":42,"tag":76,"props":2952,"children":2953},{"style":166},[2954],{"type":48,"value":380},{"type":42,"tag":76,"props":2956,"children":2957},{"style":99},[2958],{"type":48,"value":2015},{"type":42,"tag":76,"props":2960,"children":2961},{"style":172},[2962],{"type":48,"value":2020},{"type":42,"tag":76,"props":2964,"children":2965},{"style":166},[2966],{"type":48,"value":390},{"type":42,"tag":76,"props":2968,"children":2969},{"class":78,"line":1096},[2970],{"type":42,"tag":76,"props":2971,"children":2972},{"emptyLinePlaceholder":119},[2973],{"type":48,"value":122},{"type":42,"tag":76,"props":2975,"children":2976},{"class":78,"line":1134},[2977],{"type":42,"tag":76,"props":2978,"children":2979},{"style":83},[2980],{"type":48,"value":2981},"# Update project (framework, buildCommand, devCommand, installCommand,\n",{"type":42,"tag":76,"props":2983,"children":2984},{"class":78,"line":1172},[2985],{"type":42,"tag":76,"props":2986,"children":2987},{"style":83},[2988],{"type":48,"value":2989},"#   outputDirectory, rootDirectory, nodeVersion, serverlessFunctionRegion,\n",{"type":42,"tag":76,"props":2991,"children":2992},{"class":78,"line":1199},[2993],{"type":42,"tag":76,"props":2994,"children":2995},{"style":83},[2996],{"type":48,"value":2997},"#   publicSource, autoAssignCustomDomains, gitForkProtection,\n",{"type":42,"tag":76,"props":2999,"children":3000},{"class":78,"line":1212},[3001],{"type":42,"tag":76,"props":3002,"children":3003},{"style":83},[3004],{"type":48,"value":3005},"#   commandForIgnoringBuildStep)\n",{"type":42,"tag":76,"props":3007,"children":3008},{"class":78,"line":1243},[3009,3013,3017,3021,3025],{"type":42,"tag":76,"props":3010,"children":3011},{"style":93},[3012],{"type":48,"value":357},{"type":42,"tag":76,"props":3014,"children":3015},{"style":99},[3016],{"type":48,"value":2137},{"type":42,"tag":76,"props":3018,"children":3019},{"style":99},[3020],{"type":48,"value":2142},{"type":42,"tag":76,"props":3022,"children":3023},{"style":99},[3024],{"type":48,"value":2939},{"type":42,"tag":76,"props":3026,"children":3027},{"style":172},[3028],{"type":48,"value":367},{"type":42,"tag":76,"props":3030,"children":3031},{"class":78,"line":1273},[3032,3036,3040,3044,3048,3052],{"type":42,"tag":76,"props":3033,"children":3034},{"style":99},[3035],{"type":48,"value":375},{"type":42,"tag":76,"props":3037,"children":3038},{"style":166},[3039],{"type":48,"value":380},{"type":42,"tag":76,"props":3041,"children":3042},{"style":99},[3043],{"type":48,"value":2015},{"type":42,"tag":76,"props":3045,"children":3046},{"style":172},[3047],{"type":48,"value":2020},{"type":42,"tag":76,"props":3049,"children":3050},{"style":166},[3051],{"type":48,"value":1995},{"type":42,"tag":76,"props":3053,"children":3054},{"style":172},[3055],{"type":48,"value":367},{"type":42,"tag":76,"props":3057,"children":3058},{"class":78,"line":1303},[3059,3063,3067,3071,3075],{"type":42,"tag":76,"props":3060,"children":3061},{"style":99},[3062],{"type":48,"value":375},{"type":42,"tag":76,"props":3064,"children":3065},{"style":166},[3066],{"type":48,"value":380},{"type":42,"tag":76,"props":3068,"children":3069},{"style":99},[3070],{"type":48,"value":2193},{"type":42,"tag":76,"props":3072,"children":3073},{"style":166},[3074],{"type":48,"value":1995},{"type":42,"tag":76,"props":3076,"children":3077},{"style":172},[3078],{"type":48,"value":367},{"type":42,"tag":76,"props":3080,"children":3081},{"class":78,"line":1333},[3082,3086,3090,3095],{"type":42,"tag":76,"props":3083,"children":3084},{"style":99},[3085],{"type":48,"value":2209},{"type":42,"tag":76,"props":3087,"children":3088},{"style":166},[3089],{"type":48,"value":190},{"type":42,"tag":76,"props":3091,"children":3092},{"style":99},[3093],{"type":48,"value":3094},"{\"framework\": \"remix\"}",{"type":42,"tag":76,"props":3096,"children":3097},{"style":166},[3098],{"type":48,"value":200},{"type":42,"tag":76,"props":3100,"children":3101},{"class":78,"line":1342},[3102],{"type":42,"tag":76,"props":3103,"children":3104},{"emptyLinePlaceholder":119},[3105],{"type":48,"value":122},{"type":42,"tag":76,"props":3107,"children":3108},{"class":78,"line":1350},[3109],{"type":42,"tag":76,"props":3110,"children":3111},{"style":83},[3112],{"type":48,"value":3113},"# Delete project (cascades deployments, domains, env vars, protection bypasses)\n",{"type":42,"tag":76,"props":3115,"children":3116},{"class":78,"line":1759},[3117,3121,3125,3130,3134],{"type":42,"tag":76,"props":3118,"children":3119},{"style":93},[3120],{"type":48,"value":357},{"type":42,"tag":76,"props":3122,"children":3123},{"style":99},[3124],{"type":48,"value":2137},{"type":42,"tag":76,"props":3126,"children":3127},{"style":99},[3128],{"type":48,"value":3129}," DELETE",{"type":42,"tag":76,"props":3131,"children":3132},{"style":99},[3133],{"type":48,"value":2939},{"type":42,"tag":76,"props":3135,"children":3136},{"style":172},[3137],{"type":48,"value":367},{"type":42,"tag":76,"props":3139,"children":3140},{"class":78,"line":1777},[3141,3145,3149,3153,3157],{"type":42,"tag":76,"props":3142,"children":3143},{"style":99},[3144],{"type":48,"value":375},{"type":42,"tag":76,"props":3146,"children":3147},{"style":166},[3148],{"type":48,"value":380},{"type":42,"tag":76,"props":3150,"children":3151},{"style":99},[3152],{"type":48,"value":2015},{"type":42,"tag":76,"props":3154,"children":3155},{"style":172},[3156],{"type":48,"value":2020},{"type":42,"tag":76,"props":3158,"children":3159},{"style":166},[3160],{"type":48,"value":390},{"type":42,"tag":76,"props":3162,"children":3163},{"class":78,"line":1795},[3164],{"type":42,"tag":76,"props":3165,"children":3166},{"emptyLinePlaceholder":119},[3167],{"type":48,"value":122},{"type":42,"tag":76,"props":3169,"children":3170},{"class":78,"line":1832},[3171],{"type":42,"tag":76,"props":3172,"children":3173},{"style":83},[3174],{"type":48,"value":3175},"# Promote aliases status\n",{"type":42,"tag":76,"props":3177,"children":3178},{"class":78,"line":1845},[3179,3183,3188],{"type":42,"tag":76,"props":3180,"children":3181},{"style":93},[3182],{"type":48,"value":357},{"type":42,"tag":76,"props":3184,"children":3185},{"style":99},[3186],{"type":48,"value":3187}," http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fpromote\u002Faliases",{"type":42,"tag":76,"props":3189,"children":3190},{"style":172},[3191],{"type":48,"value":367},{"type":42,"tag":76,"props":3193,"children":3194},{"class":78,"line":1867},[3195,3199,3203,3207,3211],{"type":42,"tag":76,"props":3196,"children":3197},{"style":99},[3198],{"type":48,"value":375},{"type":42,"tag":76,"props":3200,"children":3201},{"style":166},[3202],{"type":48,"value":380},{"type":42,"tag":76,"props":3204,"children":3205},{"style":99},[3206],{"type":48,"value":2015},{"type":42,"tag":76,"props":3208,"children":3209},{"style":172},[3210],{"type":48,"value":2020},{"type":42,"tag":76,"props":3212,"children":3213},{"style":166},[3214],{"type":48,"value":390},{"type":42,"tag":76,"props":3216,"children":3217},{"class":78,"line":1885},[3218],{"type":42,"tag":76,"props":3219,"children":3220},{"emptyLinePlaceholder":119},[3221],{"type":48,"value":122},{"type":42,"tag":76,"props":3223,"children":3224},{"class":78,"line":1902},[3225],{"type":42,"tag":76,"props":3226,"children":3227},{"style":83},[3228],{"type":48,"value":3229},"# Protection bypass: generate, revoke, regenerate\n",{"type":42,"tag":76,"props":3231,"children":3232},{"class":78,"line":1915},[3233,3237,3241,3245,3250],{"type":42,"tag":76,"props":3234,"children":3235},{"style":93},[3236],{"type":48,"value":357},{"type":42,"tag":76,"props":3238,"children":3239},{"style":99},[3240],{"type":48,"value":2137},{"type":42,"tag":76,"props":3242,"children":3243},{"style":99},[3244],{"type":48,"value":2142},{"type":42,"tag":76,"props":3246,"children":3247},{"style":99},[3248],{"type":48,"value":3249}," http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fprojects\u002Fmy-app\u002Fprotection-bypass",{"type":42,"tag":76,"props":3251,"children":3252},{"style":172},[3253],{"type":48,"value":367},{"type":42,"tag":76,"props":3255,"children":3256},{"class":78,"line":2590},[3257,3261,3265,3269,3273,3277],{"type":42,"tag":76,"props":3258,"children":3259},{"style":99},[3260],{"type":48,"value":375},{"type":42,"tag":76,"props":3262,"children":3263},{"style":166},[3264],{"type":48,"value":380},{"type":42,"tag":76,"props":3266,"children":3267},{"style":99},[3268],{"type":48,"value":2015},{"type":42,"tag":76,"props":3270,"children":3271},{"style":172},[3272],{"type":48,"value":2020},{"type":42,"tag":76,"props":3274,"children":3275},{"style":166},[3276],{"type":48,"value":1995},{"type":42,"tag":76,"props":3278,"children":3279},{"style":172},[3280],{"type":48,"value":367},{"type":42,"tag":76,"props":3282,"children":3283},{"class":78,"line":2599},[3284,3288,3292,3296,3300],{"type":42,"tag":76,"props":3285,"children":3286},{"style":99},[3287],{"type":48,"value":375},{"type":42,"tag":76,"props":3289,"children":3290},{"style":166},[3291],{"type":48,"value":380},{"type":42,"tag":76,"props":3293,"children":3294},{"style":99},[3295],{"type":48,"value":2193},{"type":42,"tag":76,"props":3297,"children":3298},{"style":166},[3299],{"type":48,"value":1995},{"type":42,"tag":76,"props":3301,"children":3302},{"style":172},[3303],{"type":48,"value":367},{"type":42,"tag":76,"props":3305,"children":3306},{"class":78,"line":2632},[3307,3311,3315,3320],{"type":42,"tag":76,"props":3308,"children":3309},{"style":99},[3310],{"type":48,"value":2209},{"type":42,"tag":76,"props":3312,"children":3313},{"style":166},[3314],{"type":48,"value":190},{"type":42,"tag":76,"props":3316,"children":3317},{"style":99},[3318],{"type":48,"value":3319},"{\"generate\": {\"note\": \"CI preview\", \"scope\": \"deployment\"}}",{"type":42,"tag":76,"props":3321,"children":3322},{"style":166},[3323],{"type":48,"value":200},{"type":42,"tag":76,"props":3325,"children":3326},{"class":78,"line":2660},[3327],{"type":42,"tag":76,"props":3328,"children":3329},{"emptyLinePlaceholder":119},[3330],{"type":48,"value":122},{"type":42,"tag":76,"props":3332,"children":3333},{"class":78,"line":2684},[3334],{"type":42,"tag":76,"props":3335,"children":3336},{"style":83},[3337],{"type":48,"value":3338},"# Revoke protection bypass secrets\n",{"type":42,"tag":76,"props":3340,"children":3342},{"class":78,"line":3341},39,[3343,3347,3351,3355,3359],{"type":42,"tag":76,"props":3344,"children":3345},{"style":93},[3346],{"type":48,"value":357},{"type":42,"tag":76,"props":3348,"children":3349},{"style":99},[3350],{"type":48,"value":2137},{"type":42,"tag":76,"props":3352,"children":3353},{"style":99},[3354],{"type":48,"value":2142},{"type":42,"tag":76,"props":3356,"children":3357},{"style":99},[3358],{"type":48,"value":3249},{"type":42,"tag":76,"props":3360,"children":3361},{"style":172},[3362],{"type":48,"value":367},{"type":42,"tag":76,"props":3364,"children":3366},{"class":78,"line":3365},40,[3367,3371,3375,3379,3383,3387],{"type":42,"tag":76,"props":3368,"children":3369},{"style":99},[3370],{"type":48,"value":375},{"type":42,"tag":76,"props":3372,"children":3373},{"style":166},[3374],{"type":48,"value":380},{"type":42,"tag":76,"props":3376,"children":3377},{"style":99},[3378],{"type":48,"value":2015},{"type":42,"tag":76,"props":3380,"children":3381},{"style":172},[3382],{"type":48,"value":2020},{"type":42,"tag":76,"props":3384,"children":3385},{"style":166},[3386],{"type":48,"value":1995},{"type":42,"tag":76,"props":3388,"children":3389},{"style":172},[3390],{"type":48,"value":367},{"type":42,"tag":76,"props":3392,"children":3394},{"class":78,"line":3393},41,[3395,3399,3403,3407,3411],{"type":42,"tag":76,"props":3396,"children":3397},{"style":99},[3398],{"type":48,"value":375},{"type":42,"tag":76,"props":3400,"children":3401},{"style":166},[3402],{"type":48,"value":380},{"type":42,"tag":76,"props":3404,"children":3405},{"style":99},[3406],{"type":48,"value":2193},{"type":42,"tag":76,"props":3408,"children":3409},{"style":166},[3410],{"type":48,"value":1995},{"type":42,"tag":76,"props":3412,"children":3413},{"style":172},[3414],{"type":48,"value":367},{"type":42,"tag":76,"props":3416,"children":3418},{"class":78,"line":3417},42,[3419,3423,3427,3432],{"type":42,"tag":76,"props":3420,"children":3421},{"style":99},[3422],{"type":48,"value":2209},{"type":42,"tag":76,"props":3424,"children":3425},{"style":166},[3426],{"type":48,"value":190},{"type":42,"tag":76,"props":3428,"children":3429},{"style":99},[3430],{"type":48,"value":3431},"{\"revoke\": [\"secret_to_revoke\"]}",{"type":42,"tag":76,"props":3433,"children":3434},{"style":166},[3435],{"type":48,"value":200},{"type":42,"tag":76,"props":3437,"children":3439},{"class":78,"line":3438},43,[3440],{"type":42,"tag":76,"props":3441,"children":3442},{"emptyLinePlaceholder":119},[3443],{"type":48,"value":122},{"type":42,"tag":76,"props":3445,"children":3447},{"class":78,"line":3446},44,[3448],{"type":42,"tag":76,"props":3449,"children":3450},{"style":83},[3451],{"type":48,"value":3452},"# Regenerate protection bypass secrets\n",{"type":42,"tag":76,"props":3454,"children":3456},{"class":78,"line":3455},45,[3457,3461,3465,3469,3473],{"type":42,"tag":76,"props":3458,"children":3459},{"style":93},[3460],{"type":48,"value":357},{"type":42,"tag":76,"props":3462,"children":3463},{"style":99},[3464],{"type":48,"value":2137},{"type":42,"tag":76,"props":3466,"children":3467},{"style":99},[3468],{"type":48,"value":2142},{"type":42,"tag":76,"props":3470,"children":3471},{"style":99},[3472],{"type":48,"value":3249},{"type":42,"tag":76,"props":3474,"children":3475},{"style":172},[3476],{"type":48,"value":367},{"type":42,"tag":76,"props":3478,"children":3480},{"class":78,"line":3479},46,[3481,3485,3489,3493,3497,3501],{"type":42,"tag":76,"props":3482,"children":3483},{"style":99},[3484],{"type":48,"value":375},{"type":42,"tag":76,"props":3486,"children":3487},{"style":166},[3488],{"type":48,"value":380},{"type":42,"tag":76,"props":3490,"children":3491},{"style":99},[3492],{"type":48,"value":2015},{"type":42,"tag":76,"props":3494,"children":3495},{"style":172},[3496],{"type":48,"value":2020},{"type":42,"tag":76,"props":3498,"children":3499},{"style":166},[3500],{"type":48,"value":1995},{"type":42,"tag":76,"props":3502,"children":3503},{"style":172},[3504],{"type":48,"value":367},{"type":42,"tag":76,"props":3506,"children":3508},{"class":78,"line":3507},47,[3509,3513,3517,3521,3525],{"type":42,"tag":76,"props":3510,"children":3511},{"style":99},[3512],{"type":48,"value":375},{"type":42,"tag":76,"props":3514,"children":3515},{"style":166},[3516],{"type":48,"value":380},{"type":42,"tag":76,"props":3518,"children":3519},{"style":99},[3520],{"type":48,"value":2193},{"type":42,"tag":76,"props":3522,"children":3523},{"style":166},[3524],{"type":48,"value":1995},{"type":42,"tag":76,"props":3526,"children":3527},{"style":172},[3528],{"type":48,"value":367},{"type":42,"tag":76,"props":3530,"children":3532},{"class":78,"line":3531},48,[3533,3537,3541,3546],{"type":42,"tag":76,"props":3534,"children":3535},{"style":99},[3536],{"type":48,"value":2209},{"type":42,"tag":76,"props":3538,"children":3539},{"style":166},[3540],{"type":48,"value":190},{"type":42,"tag":76,"props":3542,"children":3543},{"style":99},[3544],{"type":48,"value":3545},"{\"regenerate\": [\"old_secret\"]}",{"type":42,"tag":76,"props":3547,"children":3548},{"style":166},[3549],{"type":48,"value":200},{"type":42,"tag":416,"props":3551,"children":3553},{"id":3552},"deployments",[3554],{"type":48,"value":3555},"Deployments",{"type":42,"tag":64,"props":3557,"children":3559},{"className":66,"code":3558,"language":68,"meta":69,"style":69},"# Create deployment (auto-transitions to READY)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"target\": \"production\", \"meta\": {\"commit\": \"abc123\"}, \"regions\": [\"iad1\"], \"gitSource\": {\"type\": \"github\", \"ref\": \"main\", \"sha\": \"abc123\", \"repoId\": \"123\", \"org\": \"my-org\", \"repo\": \"my-app\", \"message\": \"Deploy\", \"authorName\": \"dev\", \"commitAuthorName\": \"dev\"}}'\n\n# Targets: \"production\", \"preview\", \"staging\"\n\n# Get deployment (by ID or URL)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments\u002Fdpl_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployments (filter by projectId, app, target, state; cursor paginated)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments?projectId=my-app&target=production&limit=10\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Delete deployment\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments\u002Fdpl_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Cancel building deployment\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv12\u002Fdeployments\u002Fdpl_abc123\u002Fcancel \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployment aliases\ncurl http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fdeployments\u002Fdpl_abc123\u002Faliases \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get build events\u002Flogs (supports direction, limit)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv3\u002Fdeployments\u002Fdpl_abc123\u002Fevents?direction=forward&limit=50\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# List deployment files\ncurl http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments\u002Fdpl_abc123\u002Ffiles \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Upload file (by SHA digest)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv2\u002Ffiles \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Foctet-stream\" \\\n  -H \"x-vercel-digest: sha256hash\" \\\n  --data-binary @file.txt\n",[3560],{"type":42,"tag":72,"props":3561,"children":3562},{"__ignoreMap":69},[3563,3571,3595,3622,3645,3665,3672,3680,3687,3695,3711,3734,3741,3749,3773,3796,3803,3811,3834,3857,3864,3872,3896,3919,3926,3934,3950,3973,3980,3988,4012,4035,4042,4050,4066,4089,4096,4104,4128,4155,4179,4203],{"type":42,"tag":76,"props":3564,"children":3565},{"class":78,"line":79},[3566],{"type":42,"tag":76,"props":3567,"children":3568},{"style":83},[3569],{"type":48,"value":3570},"# Create deployment (auto-transitions to READY)\n",{"type":42,"tag":76,"props":3572,"children":3573},{"class":78,"line":89},[3574,3578,3582,3586,3591],{"type":42,"tag":76,"props":3575,"children":3576},{"style":93},[3577],{"type":48,"value":357},{"type":42,"tag":76,"props":3579,"children":3580},{"style":99},[3581],{"type":48,"value":2137},{"type":42,"tag":76,"props":3583,"children":3584},{"style":99},[3585],{"type":48,"value":2347},{"type":42,"tag":76,"props":3587,"children":3588},{"style":99},[3589],{"type":48,"value":3590}," http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments",{"type":42,"tag":76,"props":3592,"children":3593},{"style":172},[3594],{"type":48,"value":367},{"type":42,"tag":76,"props":3596,"children":3597},{"class":78,"line":115},[3598,3602,3606,3610,3614,3618],{"type":42,"tag":76,"props":3599,"children":3600},{"style":99},[3601],{"type":48,"value":375},{"type":42,"tag":76,"props":3603,"children":3604},{"style":166},[3605],{"type":48,"value":380},{"type":42,"tag":76,"props":3607,"children":3608},{"style":99},[3609],{"type":48,"value":2015},{"type":42,"tag":76,"props":3611,"children":3612},{"style":172},[3613],{"type":48,"value":2020},{"type":42,"tag":76,"props":3615,"children":3616},{"style":166},[3617],{"type":48,"value":1995},{"type":42,"tag":76,"props":3619,"children":3620},{"style":172},[3621],{"type":48,"value":367},{"type":42,"tag":76,"props":3623,"children":3624},{"class":78,"line":125},[3625,3629,3633,3637,3641],{"type":42,"tag":76,"props":3626,"children":3627},{"style":99},[3628],{"type":48,"value":375},{"type":42,"tag":76,"props":3630,"children":3631},{"style":166},[3632],{"type":48,"value":380},{"type":42,"tag":76,"props":3634,"children":3635},{"style":99},[3636],{"type":48,"value":2193},{"type":42,"tag":76,"props":3638,"children":3639},{"style":166},[3640],{"type":48,"value":1995},{"type":42,"tag":76,"props":3642,"children":3643},{"style":172},[3644],{"type":48,"value":367},{"type":42,"tag":76,"props":3646,"children":3647},{"class":78,"line":134},[3648,3652,3656,3661],{"type":42,"tag":76,"props":3649,"children":3650},{"style":99},[3651],{"type":48,"value":2209},{"type":42,"tag":76,"props":3653,"children":3654},{"style":166},[3655],{"type":48,"value":190},{"type":42,"tag":76,"props":3657,"children":3658},{"style":99},[3659],{"type":48,"value":3660},"{\"name\": \"my-app\", \"target\": \"production\", \"meta\": {\"commit\": \"abc123\"}, \"regions\": [\"iad1\"], \"gitSource\": {\"type\": \"github\", \"ref\": \"main\", \"sha\": \"abc123\", \"repoId\": \"123\", \"org\": \"my-org\", \"repo\": \"my-app\", \"message\": \"Deploy\", \"authorName\": \"dev\", \"commitAuthorName\": \"dev\"}}",{"type":42,"tag":76,"props":3662,"children":3663},{"style":166},[3664],{"type":48,"value":200},{"type":42,"tag":76,"props":3666,"children":3667},{"class":78,"line":875},[3668],{"type":42,"tag":76,"props":3669,"children":3670},{"emptyLinePlaceholder":119},[3671],{"type":48,"value":122},{"type":42,"tag":76,"props":3673,"children":3674},{"class":78,"line":931},[3675],{"type":42,"tag":76,"props":3676,"children":3677},{"style":83},[3678],{"type":48,"value":3679},"# Targets: \"production\", \"preview\", \"staging\"\n",{"type":42,"tag":76,"props":3681,"children":3682},{"class":78,"line":940},[3683],{"type":42,"tag":76,"props":3684,"children":3685},{"emptyLinePlaceholder":119},[3686],{"type":48,"value":122},{"type":42,"tag":76,"props":3688,"children":3689},{"class":78,"line":957},[3690],{"type":42,"tag":76,"props":3691,"children":3692},{"style":83},[3693],{"type":48,"value":3694},"# Get deployment (by ID or URL)\n",{"type":42,"tag":76,"props":3696,"children":3697},{"class":78,"line":1010},[3698,3702,3707],{"type":42,"tag":76,"props":3699,"children":3700},{"style":93},[3701],{"type":48,"value":357},{"type":42,"tag":76,"props":3703,"children":3704},{"style":99},[3705],{"type":48,"value":3706}," http:\u002F\u002Flocalhost:4000\u002Fv13\u002Fdeployments\u002Fdpl_abc123",{"type":42,"tag":76,"props":3708,"children":3709},{"style":172},[3710],{"type":48,"value":367},{"type":42,"tag":76,"props":3712,"children":3713},{"class":78,"line":1018},[3714,3718,3722,3726,3730],{"type":42,"tag":76,"props":3715,"children":3716},{"style":99},[3717],{"type":48,"value":375},{"type":42,"tag":76,"props":3719,"children":3720},{"style":166},[3721],{"type":48,"value":380},{"type":42,"tag":76,"props":3723,"children":3724},{"style":99},[3725],{"type":48,"value":2015},{"type":42,"tag":76,"props":3727,"children":3728},{"style":172},[3729],{"type":48,"value":2020},{"type":42,"tag":76,"props":3731,"children":3732},{"style":166},[3733],{"type":48,"value":390},{"type":42,"tag":76,"props":3735,"children":3736},{"class":78,"line":1035},[3737],{"type":42,"tag":76,"props":3738,"children":3739},{"emptyLinePlaceholder":119},[3740],{"type":48,"value":122},{"type":42,"tag":76,"props":3742,"children":3743},{"class":78,"line":1088},[3744],{"type":42,"tag":76,"props":3745,"children":3746},{"style":83},[3747],{"type":48,"value":3748},"# List deployments (filter by projectId, app, target, state; cursor paginated)\n",{"type":42,"tag":76,"props":3750,"children":3751},{"class":78,"line":1096},[3752,3756,3760,3765,3769],{"type":42,"tag":76,"props":3753,"children":3754},{"style":93},[3755],{"type":48,"value":357},{"type":42,"tag":76,"props":3757,"children":3758},{"style":166},[3759],{"type":48,"value":380},{"type":42,"tag":76,"props":3761,"children":3762},{"style":99},[3763],{"type":48,"value":3764},"http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments?projectId=my-app&target=production&limit=10",{"type":42,"tag":76,"props":3766,"children":3767},{"style":166},[3768],{"type":48,"value":1995},{"type":42,"tag":76,"props":3770,"children":3771},{"style":172},[3772],{"type":48,"value":367},{"type":42,"tag":76,"props":3774,"children":3775},{"class":78,"line":1134},[3776,3780,3784,3788,3792],{"type":42,"tag":76,"props":3777,"children":3778},{"style":99},[3779],{"type":48,"value":375},{"type":42,"tag":76,"props":3781,"children":3782},{"style":166},[3783],{"type":48,"value":380},{"type":42,"tag":76,"props":3785,"children":3786},{"style":99},[3787],{"type":48,"value":2015},{"type":42,"tag":76,"props":3789,"children":3790},{"style":172},[3791],{"type":48,"value":2020},{"type":42,"tag":76,"props":3793,"children":3794},{"style":166},[3795],{"type":48,"value":390},{"type":42,"tag":76,"props":3797,"children":3798},{"class":78,"line":1172},[3799],{"type":42,"tag":76,"props":3800,"children":3801},{"emptyLinePlaceholder":119},[3802],{"type":48,"value":122},{"type":42,"tag":76,"props":3804,"children":3805},{"class":78,"line":1199},[3806],{"type":42,"tag":76,"props":3807,"children":3808},{"style":83},[3809],{"type":48,"value":3810},"# Delete deployment\n",{"type":42,"tag":76,"props":3812,"children":3813},{"class":78,"line":1212},[3814,3818,3822,3826,3830],{"type":42,"tag":76,"props":3815,"children":3816},{"style":93},[3817],{"type":48,"value":357},{"type":42,"tag":76,"props":3819,"children":3820},{"style":99},[3821],{"type":48,"value":2137},{"type":42,"tag":76,"props":3823,"children":3824},{"style":99},[3825],{"type":48,"value":3129},{"type":42,"tag":76,"props":3827,"children":3828},{"style":99},[3829],{"type":48,"value":3706},{"type":42,"tag":76,"props":3831,"children":3832},{"style":172},[3833],{"type":48,"value":367},{"type":42,"tag":76,"props":3835,"children":3836},{"class":78,"line":1243},[3837,3841,3845,3849,3853],{"type":42,"tag":76,"props":3838,"children":3839},{"style":99},[3840],{"type":48,"value":375},{"type":42,"tag":76,"props":3842,"children":3843},{"style":166},[3844],{"type":48,"value":380},{"type":42,"tag":76,"props":3846,"children":3847},{"style":99},[3848],{"type":48,"value":2015},{"type":42,"tag":76,"props":3850,"children":3851},{"style":172},[3852],{"type":48,"value":2020},{"type":42,"tag":76,"props":3854,"children":3855},{"style":166},[3856],{"type":48,"value":390},{"type":42,"tag":76,"props":3858,"children":3859},{"class":78,"line":1273},[3860],{"type":42,"tag":76,"props":3861,"children":3862},{"emptyLinePlaceholder":119},[3863],{"type":48,"value":122},{"type":42,"tag":76,"props":3865,"children":3866},{"class":78,"line":1303},[3867],{"type":42,"tag":76,"props":3868,"children":3869},{"style":83},[3870],{"type":48,"value":3871},"# Cancel building deployment\n",{"type":42,"tag":76,"props":3873,"children":3874},{"class":78,"line":1333},[3875,3879,3883,3887,3892],{"type":42,"tag":76,"props":3876,"children":3877},{"style":93},[3878],{"type":48,"value":357},{"type":42,"tag":76,"props":3880,"children":3881},{"style":99},[3882],{"type":48,"value":2137},{"type":42,"tag":76,"props":3884,"children":3885},{"style":99},[3886],{"type":48,"value":2142},{"type":42,"tag":76,"props":3888,"children":3889},{"style":99},[3890],{"type":48,"value":3891}," http:\u002F\u002Flocalhost:4000\u002Fv12\u002Fdeployments\u002Fdpl_abc123\u002Fcancel",{"type":42,"tag":76,"props":3893,"children":3894},{"style":172},[3895],{"type":48,"value":367},{"type":42,"tag":76,"props":3897,"children":3898},{"class":78,"line":1342},[3899,3903,3907,3911,3915],{"type":42,"tag":76,"props":3900,"children":3901},{"style":99},[3902],{"type":48,"value":375},{"type":42,"tag":76,"props":3904,"children":3905},{"style":166},[3906],{"type":48,"value":380},{"type":42,"tag":76,"props":3908,"children":3909},{"style":99},[3910],{"type":48,"value":2015},{"type":42,"tag":76,"props":3912,"children":3913},{"style":172},[3914],{"type":48,"value":2020},{"type":42,"tag":76,"props":3916,"children":3917},{"style":166},[3918],{"type":48,"value":390},{"type":42,"tag":76,"props":3920,"children":3921},{"class":78,"line":1350},[3922],{"type":42,"tag":76,"props":3923,"children":3924},{"emptyLinePlaceholder":119},[3925],{"type":48,"value":122},{"type":42,"tag":76,"props":3927,"children":3928},{"class":78,"line":1759},[3929],{"type":42,"tag":76,"props":3930,"children":3931},{"style":83},[3932],{"type":48,"value":3933},"# List deployment aliases\n",{"type":42,"tag":76,"props":3935,"children":3936},{"class":78,"line":1777},[3937,3941,3946],{"type":42,"tag":76,"props":3938,"children":3939},{"style":93},[3940],{"type":48,"value":357},{"type":42,"tag":76,"props":3942,"children":3943},{"style":99},[3944],{"type":48,"value":3945}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Fdeployments\u002Fdpl_abc123\u002Faliases",{"type":42,"tag":76,"props":3947,"children":3948},{"style":172},[3949],{"type":48,"value":367},{"type":42,"tag":76,"props":3951,"children":3952},{"class":78,"line":1795},[3953,3957,3961,3965,3969],{"type":42,"tag":76,"props":3954,"children":3955},{"style":99},[3956],{"type":48,"value":375},{"type":42,"tag":76,"props":3958,"children":3959},{"style":166},[3960],{"type":48,"value":380},{"type":42,"tag":76,"props":3962,"children":3963},{"style":99},[3964],{"type":48,"value":2015},{"type":42,"tag":76,"props":3966,"children":3967},{"style":172},[3968],{"type":48,"value":2020},{"type":42,"tag":76,"props":3970,"children":3971},{"style":166},[3972],{"type":48,"value":390},{"type":42,"tag":76,"props":3974,"children":3975},{"class":78,"line":1832},[3976],{"type":42,"tag":76,"props":3977,"children":3978},{"emptyLinePlaceholder":119},[3979],{"type":48,"value":122},{"type":42,"tag":76,"props":3981,"children":3982},{"class":78,"line":1845},[3983],{"type":42,"tag":76,"props":3984,"children":3985},{"style":83},[3986],{"type":48,"value":3987},"# Get build events\u002Flogs (supports direction, limit)\n",{"type":42,"tag":76,"props":3989,"children":3990},{"class":78,"line":1867},[3991,3995,3999,4004,4008],{"type":42,"tag":76,"props":3992,"children":3993},{"style":93},[3994],{"type":48,"value":357},{"type":42,"tag":76,"props":3996,"children":3997},{"style":166},[3998],{"type":48,"value":380},{"type":42,"tag":76,"props":4000,"children":4001},{"style":99},[4002],{"type":48,"value":4003},"http:\u002F\u002Flocalhost:4000\u002Fv3\u002Fdeployments\u002Fdpl_abc123\u002Fevents?direction=forward&limit=50",{"type":42,"tag":76,"props":4005,"children":4006},{"style":166},[4007],{"type":48,"value":1995},{"type":42,"tag":76,"props":4009,"children":4010},{"style":172},[4011],{"type":48,"value":367},{"type":42,"tag":76,"props":4013,"children":4014},{"class":78,"line":1885},[4015,4019,4023,4027,4031],{"type":42,"tag":76,"props":4016,"children":4017},{"style":99},[4018],{"type":48,"value":375},{"type":42,"tag":76,"props":4020,"children":4021},{"style":166},[4022],{"type":48,"value":380},{"type":42,"tag":76,"props":4024,"children":4025},{"style":99},[4026],{"type":48,"value":2015},{"type":42,"tag":76,"props":4028,"children":4029},{"style":172},[4030],{"type":48,"value":2020},{"type":42,"tag":76,"props":4032,"children":4033},{"style":166},[4034],{"type":48,"value":390},{"type":42,"tag":76,"props":4036,"children":4037},{"class":78,"line":1902},[4038],{"type":42,"tag":76,"props":4039,"children":4040},{"emptyLinePlaceholder":119},[4041],{"type":48,"value":122},{"type":42,"tag":76,"props":4043,"children":4044},{"class":78,"line":1915},[4045],{"type":42,"tag":76,"props":4046,"children":4047},{"style":83},[4048],{"type":48,"value":4049},"# List deployment files\n",{"type":42,"tag":76,"props":4051,"children":4052},{"class":78,"line":2590},[4053,4057,4062],{"type":42,"tag":76,"props":4054,"children":4055},{"style":93},[4056],{"type":48,"value":357},{"type":42,"tag":76,"props":4058,"children":4059},{"style":99},[4060],{"type":48,"value":4061}," http:\u002F\u002Flocalhost:4000\u002Fv6\u002Fdeployments\u002Fdpl_abc123\u002Ffiles",{"type":42,"tag":76,"props":4063,"children":4064},{"style":172},[4065],{"type":48,"value":367},{"type":42,"tag":76,"props":4067,"children":4068},{"class":78,"line":2599},[4069,4073,4077,4081,4085],{"type":42,"tag":76,"props":4070,"children":4071},{"style":99},[4072],{"type":48,"value":375},{"type":42,"tag":76,"props":4074,"children":4075},{"style":166},[4076],{"type":48,"value":380},{"type":42,"tag":76,"props":4078,"children":4079},{"style":99},[4080],{"type":48,"value":2015},{"type":42,"tag":76,"props":4082,"children":4083},{"style":172},[4084],{"type":48,"value":2020},{"type":42,"tag":76,"props":4086,"children":4087},{"style":166},[4088],{"type":48,"value":390},{"type":42,"tag":76,"props":4090,"children":4091},{"class":78,"line":2632},[4092],{"type":42,"tag":76,"props":4093,"children":4094},{"emptyLinePlaceholder":119},[4095],{"type":48,"value":122},{"type":42,"tag":76,"props":4097,"children":4098},{"class":78,"line":2660},[4099],{"type":42,"tag":76,"props":4100,"children":4101},{"style":83},[4102],{"type":48,"value":4103},"# Upload file (by SHA digest)\n",{"type":42,"tag":76,"props":4105,"children":4106},{"class":78,"line":2684},[4107,4111,4115,4119,4124],{"type":42,"tag":76,"props":4108,"children":4109},{"style":93},[4110],{"type":48,"value":357},{"type":42,"tag":76,"props":4112,"children":4113},{"style":99},[4114],{"type":48,"value":2137},{"type":42,"tag":76,"props":4116,"children":4117},{"style":99},[4118],{"type":48,"value":2347},{"type":42,"tag":76,"props":4120,"children":4121},{"style":99},[4122],{"type":48,"value":4123}," http:\u002F\u002Flocalhost:4000\u002Fv2\u002Ffiles",{"type":42,"tag":76,"props":4125,"children":4126},{"style":172},[4127],{"type":48,"value":367},{"type":42,"tag":76,"props":4129,"children":4130},{"class":78,"line":3341},[4131,4135,4139,4143,4147,4151],{"type":42,"tag":76,"props":4132,"children":4133},{"style":99},[4134],{"type":48,"value":375},{"type":42,"tag":76,"props":4136,"children":4137},{"style":166},[4138],{"type":48,"value":380},{"type":42,"tag":76,"props":4140,"children":4141},{"style":99},[4142],{"type":48,"value":2015},{"type":42,"tag":76,"props":4144,"children":4145},{"style":172},[4146],{"type":48,"value":2020},{"type":42,"tag":76,"props":4148,"children":4149},{"style":166},[4150],{"type":48,"value":1995},{"type":42,"tag":76,"props":4152,"children":4153},{"style":172},[4154],{"type":48,"value":367},{"type":42,"tag":76,"props":4156,"children":4157},{"class":78,"line":3365},[4158,4162,4166,4171,4175],{"type":42,"tag":76,"props":4159,"children":4160},{"style":99},[4161],{"type":48,"value":375},{"type":42,"tag":76,"props":4163,"children":4164},{"style":166},[4165],{"type":48,"value":380},{"type":42,"tag":76,"props":4167,"children":4168},{"style":99},[4169],{"type":48,"value":4170},"Content-Type: application\u002Foctet-stream",{"type":42,"tag":76,"props":4172,"children":4173},{"style":166},[4174],{"type":48,"value":1995},{"type":42,"tag":76,"props":4176,"children":4177},{"style":172},[4178],{"type":48,"value":367},{"type":42,"tag":76,"props":4180,"children":4181},{"class":78,"line":3393},[4182,4186,4190,4195,4199],{"type":42,"tag":76,"props":4183,"children":4184},{"style":99},[4185],{"type":48,"value":375},{"type":42,"tag":76,"props":4187,"children":4188},{"style":166},[4189],{"type":48,"value":380},{"type":42,"tag":76,"props":4191,"children":4192},{"style":99},[4193],{"type":48,"value":4194},"x-vercel-digest: sha256hash",{"type":42,"tag":76,"props":4196,"children":4197},{"style":166},[4198],{"type":48,"value":1995},{"type":42,"tag":76,"props":4200,"children":4201},{"style":172},[4202],{"type":48,"value":367},{"type":42,"tag":76,"props":4204,"children":4205},{"class":78,"line":3417},[4206,4211],{"type":42,"tag":76,"props":4207,"children":4208},{"style":99},[4209],{"type":48,"value":4210},"  --data-binary",{"type":42,"tag":76,"props":4212,"children":4213},{"style":99},[4214],{"type":48,"value":4215}," @file.txt\n",{"type":42,"tag":416,"props":4217,"children":4219},{"id":4218},"domains",[4220],{"type":48,"value":4221},"Domains",{"type":42,"tag":64,"props":4223,"children":4225},{"className":66,"code":4224,"language":68,"meta":69,"style":69},"# Add domain (with optional redirect, gitBranch, customEnvironmentId)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fdomains \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"example.com\", \"redirect\": null, \"redirectStatusCode\": null, \"gitBranch\": null}'\n\n# *.vercel.app domains are auto-verified\n\n# List domains (cursor paginated)\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Get, update, remove domain\ncurl http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Verify domain\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com\u002Fverify \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[4226],{"type":42,"tag":72,"props":4227,"children":4228},{"__ignoreMap":69},[4229,4237,4261,4288,4311,4331,4338,4346,4353,4361,4377,4400,4407,4415,4431,4454,4461,4469,4493],{"type":42,"tag":76,"props":4230,"children":4231},{"class":78,"line":79},[4232],{"type":42,"tag":76,"props":4233,"children":4234},{"style":83},[4235],{"type":48,"value":4236},"# Add domain (with optional redirect, gitBranch, customEnvironmentId)\n",{"type":42,"tag":76,"props":4238,"children":4239},{"class":78,"line":89},[4240,4244,4248,4252,4257],{"type":42,"tag":76,"props":4241,"children":4242},{"style":93},[4243],{"type":48,"value":357},{"type":42,"tag":76,"props":4245,"children":4246},{"style":99},[4247],{"type":48,"value":2137},{"type":42,"tag":76,"props":4249,"children":4250},{"style":99},[4251],{"type":48,"value":2347},{"type":42,"tag":76,"props":4253,"children":4254},{"style":99},[4255],{"type":48,"value":4256}," http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fdomains",{"type":42,"tag":76,"props":4258,"children":4259},{"style":172},[4260],{"type":48,"value":367},{"type":42,"tag":76,"props":4262,"children":4263},{"class":78,"line":115},[4264,4268,4272,4276,4280,4284],{"type":42,"tag":76,"props":4265,"children":4266},{"style":99},[4267],{"type":48,"value":375},{"type":42,"tag":76,"props":4269,"children":4270},{"style":166},[4271],{"type":48,"value":380},{"type":42,"tag":76,"props":4273,"children":4274},{"style":99},[4275],{"type":48,"value":2015},{"type":42,"tag":76,"props":4277,"children":4278},{"style":172},[4279],{"type":48,"value":2020},{"type":42,"tag":76,"props":4281,"children":4282},{"style":166},[4283],{"type":48,"value":1995},{"type":42,"tag":76,"props":4285,"children":4286},{"style":172},[4287],{"type":48,"value":367},{"type":42,"tag":76,"props":4289,"children":4290},{"class":78,"line":125},[4291,4295,4299,4303,4307],{"type":42,"tag":76,"props":4292,"children":4293},{"style":99},[4294],{"type":48,"value":375},{"type":42,"tag":76,"props":4296,"children":4297},{"style":166},[4298],{"type":48,"value":380},{"type":42,"tag":76,"props":4300,"children":4301},{"style":99},[4302],{"type":48,"value":2193},{"type":42,"tag":76,"props":4304,"children":4305},{"style":166},[4306],{"type":48,"value":1995},{"type":42,"tag":76,"props":4308,"children":4309},{"style":172},[4310],{"type":48,"value":367},{"type":42,"tag":76,"props":4312,"children":4313},{"class":78,"line":134},[4314,4318,4322,4327],{"type":42,"tag":76,"props":4315,"children":4316},{"style":99},[4317],{"type":48,"value":2209},{"type":42,"tag":76,"props":4319,"children":4320},{"style":166},[4321],{"type":48,"value":190},{"type":42,"tag":76,"props":4323,"children":4324},{"style":99},[4325],{"type":48,"value":4326},"{\"name\": \"example.com\", \"redirect\": null, \"redirectStatusCode\": null, \"gitBranch\": null}",{"type":42,"tag":76,"props":4328,"children":4329},{"style":166},[4330],{"type":48,"value":200},{"type":42,"tag":76,"props":4332,"children":4333},{"class":78,"line":875},[4334],{"type":42,"tag":76,"props":4335,"children":4336},{"emptyLinePlaceholder":119},[4337],{"type":48,"value":122},{"type":42,"tag":76,"props":4339,"children":4340},{"class":78,"line":931},[4341],{"type":42,"tag":76,"props":4342,"children":4343},{"style":83},[4344],{"type":48,"value":4345},"# *.vercel.app domains are auto-verified\n",{"type":42,"tag":76,"props":4347,"children":4348},{"class":78,"line":940},[4349],{"type":42,"tag":76,"props":4350,"children":4351},{"emptyLinePlaceholder":119},[4352],{"type":48,"value":122},{"type":42,"tag":76,"props":4354,"children":4355},{"class":78,"line":957},[4356],{"type":42,"tag":76,"props":4357,"children":4358},{"style":83},[4359],{"type":48,"value":4360},"# List domains (cursor paginated)\n",{"type":42,"tag":76,"props":4362,"children":4363},{"class":78,"line":1010},[4364,4368,4373],{"type":42,"tag":76,"props":4365,"children":4366},{"style":93},[4367],{"type":48,"value":357},{"type":42,"tag":76,"props":4369,"children":4370},{"style":99},[4371],{"type":48,"value":4372}," http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains",{"type":42,"tag":76,"props":4374,"children":4375},{"style":172},[4376],{"type":48,"value":367},{"type":42,"tag":76,"props":4378,"children":4379},{"class":78,"line":1018},[4380,4384,4388,4392,4396],{"type":42,"tag":76,"props":4381,"children":4382},{"style":99},[4383],{"type":48,"value":375},{"type":42,"tag":76,"props":4385,"children":4386},{"style":166},[4387],{"type":48,"value":380},{"type":42,"tag":76,"props":4389,"children":4390},{"style":99},[4391],{"type":48,"value":2015},{"type":42,"tag":76,"props":4393,"children":4394},{"style":172},[4395],{"type":48,"value":2020},{"type":42,"tag":76,"props":4397,"children":4398},{"style":166},[4399],{"type":48,"value":390},{"type":42,"tag":76,"props":4401,"children":4402},{"class":78,"line":1035},[4403],{"type":42,"tag":76,"props":4404,"children":4405},{"emptyLinePlaceholder":119},[4406],{"type":48,"value":122},{"type":42,"tag":76,"props":4408,"children":4409},{"class":78,"line":1088},[4410],{"type":42,"tag":76,"props":4411,"children":4412},{"style":83},[4413],{"type":48,"value":4414},"# Get, update, remove domain\n",{"type":42,"tag":76,"props":4416,"children":4417},{"class":78,"line":1096},[4418,4422,4427],{"type":42,"tag":76,"props":4419,"children":4420},{"style":93},[4421],{"type":48,"value":357},{"type":42,"tag":76,"props":4423,"children":4424},{"style":99},[4425],{"type":48,"value":4426}," http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com",{"type":42,"tag":76,"props":4428,"children":4429},{"style":172},[4430],{"type":48,"value":367},{"type":42,"tag":76,"props":4432,"children":4433},{"class":78,"line":1134},[4434,4438,4442,4446,4450],{"type":42,"tag":76,"props":4435,"children":4436},{"style":99},[4437],{"type":48,"value":375},{"type":42,"tag":76,"props":4439,"children":4440},{"style":166},[4441],{"type":48,"value":380},{"type":42,"tag":76,"props":4443,"children":4444},{"style":99},[4445],{"type":48,"value":2015},{"type":42,"tag":76,"props":4447,"children":4448},{"style":172},[4449],{"type":48,"value":2020},{"type":42,"tag":76,"props":4451,"children":4452},{"style":166},[4453],{"type":48,"value":390},{"type":42,"tag":76,"props":4455,"children":4456},{"class":78,"line":1172},[4457],{"type":42,"tag":76,"props":4458,"children":4459},{"emptyLinePlaceholder":119},[4460],{"type":48,"value":122},{"type":42,"tag":76,"props":4462,"children":4463},{"class":78,"line":1199},[4464],{"type":42,"tag":76,"props":4465,"children":4466},{"style":83},[4467],{"type":48,"value":4468},"# Verify domain\n",{"type":42,"tag":76,"props":4470,"children":4471},{"class":78,"line":1212},[4472,4476,4480,4484,4489],{"type":42,"tag":76,"props":4473,"children":4474},{"style":93},[4475],{"type":48,"value":357},{"type":42,"tag":76,"props":4477,"children":4478},{"style":99},[4479],{"type":48,"value":2137},{"type":42,"tag":76,"props":4481,"children":4482},{"style":99},[4483],{"type":48,"value":2347},{"type":42,"tag":76,"props":4485,"children":4486},{"style":99},[4487],{"type":48,"value":4488}," http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fdomains\u002Fexample.com\u002Fverify",{"type":42,"tag":76,"props":4490,"children":4491},{"style":172},[4492],{"type":48,"value":367},{"type":42,"tag":76,"props":4494,"children":4495},{"class":78,"line":1243},[4496,4500,4504,4508,4512],{"type":42,"tag":76,"props":4497,"children":4498},{"style":99},[4499],{"type":48,"value":375},{"type":42,"tag":76,"props":4501,"children":4502},{"style":166},[4503],{"type":48,"value":380},{"type":42,"tag":76,"props":4505,"children":4506},{"style":99},[4507],{"type":48,"value":2015},{"type":42,"tag":76,"props":4509,"children":4510},{"style":172},[4511],{"type":48,"value":2020},{"type":42,"tag":76,"props":4513,"children":4514},{"style":166},[4515],{"type":48,"value":390},{"type":42,"tag":51,"props":4517,"children":4518},{},[4519,4521,4527,4528,4534,4535,4541,4542,4548],{"type":48,"value":4520},"Redirect status codes: ",{"type":42,"tag":72,"props":4522,"children":4524},{"className":4523},[],[4525],{"type":48,"value":4526},"301",{"type":48,"value":1944},{"type":42,"tag":72,"props":4529,"children":4531},{"className":4530},[],[4532],{"type":48,"value":4533},"302",{"type":48,"value":1944},{"type":42,"tag":72,"props":4536,"children":4538},{"className":4537},[],[4539],{"type":48,"value":4540},"307",{"type":48,"value":1944},{"type":42,"tag":72,"props":4543,"children":4545},{"className":4544},[],[4546],{"type":48,"value":4547},"308",{"type":48,"value":484},{"type":42,"tag":416,"props":4550,"children":4552},{"id":4551},"environment-variables",[4553],{"type":48,"value":4554},"Environment Variables",{"type":42,"tag":64,"props":4556,"children":4558},{"className":66,"code":4557,"language":68,"meta":69,"style":69},"# List env vars (with decrypt option; filter by gitBranch, customEnvironmentId)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?decrypt=true\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Create env vars (single, batch, or upsert)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?upsert=true\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"key\": \"API_KEY\", \"value\": \"secret123\", \"type\": \"encrypted\", \"target\": [\"production\", \"preview\"], \"comment\": \"API key for service\"}'\n\n# Get env var\ncurl http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Update env var\ncurl -X PATCH http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"value\": \"newsecret\"}'\n\n# Delete env var\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[4559],{"type":42,"tag":72,"props":4560,"children":4561},{"__ignoreMap":69},[4562,4570,4594,4617,4624,4632,4664,4691,4714,4734,4741,4749,4765,4788,4795,4803,4827,4854,4877,4897,4904,4912,4935],{"type":42,"tag":76,"props":4563,"children":4564},{"class":78,"line":79},[4565],{"type":42,"tag":76,"props":4566,"children":4567},{"style":83},[4568],{"type":48,"value":4569},"# List env vars (with decrypt option; filter by gitBranch, customEnvironmentId)\n",{"type":42,"tag":76,"props":4571,"children":4572},{"class":78,"line":89},[4573,4577,4581,4586,4590],{"type":42,"tag":76,"props":4574,"children":4575},{"style":93},[4576],{"type":48,"value":357},{"type":42,"tag":76,"props":4578,"children":4579},{"style":166},[4580],{"type":48,"value":380},{"type":42,"tag":76,"props":4582,"children":4583},{"style":99},[4584],{"type":48,"value":4585},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?decrypt=true",{"type":42,"tag":76,"props":4587,"children":4588},{"style":166},[4589],{"type":48,"value":1995},{"type":42,"tag":76,"props":4591,"children":4592},{"style":172},[4593],{"type":48,"value":367},{"type":42,"tag":76,"props":4595,"children":4596},{"class":78,"line":115},[4597,4601,4605,4609,4613],{"type":42,"tag":76,"props":4598,"children":4599},{"style":99},[4600],{"type":48,"value":375},{"type":42,"tag":76,"props":4602,"children":4603},{"style":166},[4604],{"type":48,"value":380},{"type":42,"tag":76,"props":4606,"children":4607},{"style":99},[4608],{"type":48,"value":2015},{"type":42,"tag":76,"props":4610,"children":4611},{"style":172},[4612],{"type":48,"value":2020},{"type":42,"tag":76,"props":4614,"children":4615},{"style":166},[4616],{"type":48,"value":390},{"type":42,"tag":76,"props":4618,"children":4619},{"class":78,"line":125},[4620],{"type":42,"tag":76,"props":4621,"children":4622},{"emptyLinePlaceholder":119},[4623],{"type":48,"value":122},{"type":42,"tag":76,"props":4625,"children":4626},{"class":78,"line":134},[4627],{"type":42,"tag":76,"props":4628,"children":4629},{"style":83},[4630],{"type":48,"value":4631},"# Create env vars (single, batch, or upsert)\n",{"type":42,"tag":76,"props":4633,"children":4634},{"class":78,"line":875},[4635,4639,4643,4647,4651,4656,4660],{"type":42,"tag":76,"props":4636,"children":4637},{"style":93},[4638],{"type":48,"value":357},{"type":42,"tag":76,"props":4640,"children":4641},{"style":99},[4642],{"type":48,"value":2137},{"type":42,"tag":76,"props":4644,"children":4645},{"style":99},[4646],{"type":48,"value":2347},{"type":42,"tag":76,"props":4648,"children":4649},{"style":166},[4650],{"type":48,"value":380},{"type":42,"tag":76,"props":4652,"children":4653},{"style":99},[4654],{"type":48,"value":4655},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv?upsert=true",{"type":42,"tag":76,"props":4657,"children":4658},{"style":166},[4659],{"type":48,"value":1995},{"type":42,"tag":76,"props":4661,"children":4662},{"style":172},[4663],{"type":48,"value":367},{"type":42,"tag":76,"props":4665,"children":4666},{"class":78,"line":931},[4667,4671,4675,4679,4683,4687],{"type":42,"tag":76,"props":4668,"children":4669},{"style":99},[4670],{"type":48,"value":375},{"type":42,"tag":76,"props":4672,"children":4673},{"style":166},[4674],{"type":48,"value":380},{"type":42,"tag":76,"props":4676,"children":4677},{"style":99},[4678],{"type":48,"value":2015},{"type":42,"tag":76,"props":4680,"children":4681},{"style":172},[4682],{"type":48,"value":2020},{"type":42,"tag":76,"props":4684,"children":4685},{"style":166},[4686],{"type":48,"value":1995},{"type":42,"tag":76,"props":4688,"children":4689},{"style":172},[4690],{"type":48,"value":367},{"type":42,"tag":76,"props":4692,"children":4693},{"class":78,"line":940},[4694,4698,4702,4706,4710],{"type":42,"tag":76,"props":4695,"children":4696},{"style":99},[4697],{"type":48,"value":375},{"type":42,"tag":76,"props":4699,"children":4700},{"style":166},[4701],{"type":48,"value":380},{"type":42,"tag":76,"props":4703,"children":4704},{"style":99},[4705],{"type":48,"value":2193},{"type":42,"tag":76,"props":4707,"children":4708},{"style":166},[4709],{"type":48,"value":1995},{"type":42,"tag":76,"props":4711,"children":4712},{"style":172},[4713],{"type":48,"value":367},{"type":42,"tag":76,"props":4715,"children":4716},{"class":78,"line":957},[4717,4721,4725,4730],{"type":42,"tag":76,"props":4718,"children":4719},{"style":99},[4720],{"type":48,"value":2209},{"type":42,"tag":76,"props":4722,"children":4723},{"style":166},[4724],{"type":48,"value":190},{"type":42,"tag":76,"props":4726,"children":4727},{"style":99},[4728],{"type":48,"value":4729},"{\"key\": \"API_KEY\", \"value\": \"secret123\", \"type\": \"encrypted\", \"target\": [\"production\", \"preview\"], \"comment\": \"API key for service\"}",{"type":42,"tag":76,"props":4731,"children":4732},{"style":166},[4733],{"type":48,"value":200},{"type":42,"tag":76,"props":4735,"children":4736},{"class":78,"line":1010},[4737],{"type":42,"tag":76,"props":4738,"children":4739},{"emptyLinePlaceholder":119},[4740],{"type":48,"value":122},{"type":42,"tag":76,"props":4742,"children":4743},{"class":78,"line":1018},[4744],{"type":42,"tag":76,"props":4745,"children":4746},{"style":83},[4747],{"type":48,"value":4748},"# Get env var\n",{"type":42,"tag":76,"props":4750,"children":4751},{"class":78,"line":1035},[4752,4756,4761],{"type":42,"tag":76,"props":4753,"children":4754},{"style":93},[4755],{"type":48,"value":357},{"type":42,"tag":76,"props":4757,"children":4758},{"style":99},[4759],{"type":48,"value":4760}," http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123",{"type":42,"tag":76,"props":4762,"children":4763},{"style":172},[4764],{"type":48,"value":367},{"type":42,"tag":76,"props":4766,"children":4767},{"class":78,"line":1088},[4768,4772,4776,4780,4784],{"type":42,"tag":76,"props":4769,"children":4770},{"style":99},[4771],{"type":48,"value":375},{"type":42,"tag":76,"props":4773,"children":4774},{"style":166},[4775],{"type":48,"value":380},{"type":42,"tag":76,"props":4777,"children":4778},{"style":99},[4779],{"type":48,"value":2015},{"type":42,"tag":76,"props":4781,"children":4782},{"style":172},[4783],{"type":48,"value":2020},{"type":42,"tag":76,"props":4785,"children":4786},{"style":166},[4787],{"type":48,"value":390},{"type":42,"tag":76,"props":4789,"children":4790},{"class":78,"line":1096},[4791],{"type":42,"tag":76,"props":4792,"children":4793},{"emptyLinePlaceholder":119},[4794],{"type":48,"value":122},{"type":42,"tag":76,"props":4796,"children":4797},{"class":78,"line":1134},[4798],{"type":42,"tag":76,"props":4799,"children":4800},{"style":83},[4801],{"type":48,"value":4802},"# Update env var\n",{"type":42,"tag":76,"props":4804,"children":4805},{"class":78,"line":1172},[4806,4810,4814,4818,4823],{"type":42,"tag":76,"props":4807,"children":4808},{"style":93},[4809],{"type":48,"value":357},{"type":42,"tag":76,"props":4811,"children":4812},{"style":99},[4813],{"type":48,"value":2137},{"type":42,"tag":76,"props":4815,"children":4816},{"style":99},[4817],{"type":48,"value":2142},{"type":42,"tag":76,"props":4819,"children":4820},{"style":99},[4821],{"type":48,"value":4822}," http:\u002F\u002Flocalhost:4000\u002Fv9\u002Fprojects\u002Fmy-app\u002Fenv\u002Fenv_abc123",{"type":42,"tag":76,"props":4824,"children":4825},{"style":172},[4826],{"type":48,"value":367},{"type":42,"tag":76,"props":4828,"children":4829},{"class":78,"line":1199},[4830,4834,4838,4842,4846,4850],{"type":42,"tag":76,"props":4831,"children":4832},{"style":99},[4833],{"type":48,"value":375},{"type":42,"tag":76,"props":4835,"children":4836},{"style":166},[4837],{"type":48,"value":380},{"type":42,"tag":76,"props":4839,"children":4840},{"style":99},[4841],{"type":48,"value":2015},{"type":42,"tag":76,"props":4843,"children":4844},{"style":172},[4845],{"type":48,"value":2020},{"type":42,"tag":76,"props":4847,"children":4848},{"style":166},[4849],{"type":48,"value":1995},{"type":42,"tag":76,"props":4851,"children":4852},{"style":172},[4853],{"type":48,"value":367},{"type":42,"tag":76,"props":4855,"children":4856},{"class":78,"line":1212},[4857,4861,4865,4869,4873],{"type":42,"tag":76,"props":4858,"children":4859},{"style":99},[4860],{"type":48,"value":375},{"type":42,"tag":76,"props":4862,"children":4863},{"style":166},[4864],{"type":48,"value":380},{"type":42,"tag":76,"props":4866,"children":4867},{"style":99},[4868],{"type":48,"value":2193},{"type":42,"tag":76,"props":4870,"children":4871},{"style":166},[4872],{"type":48,"value":1995},{"type":42,"tag":76,"props":4874,"children":4875},{"style":172},[4876],{"type":48,"value":367},{"type":42,"tag":76,"props":4878,"children":4879},{"class":78,"line":1243},[4880,4884,4888,4893],{"type":42,"tag":76,"props":4881,"children":4882},{"style":99},[4883],{"type":48,"value":2209},{"type":42,"tag":76,"props":4885,"children":4886},{"style":166},[4887],{"type":48,"value":190},{"type":42,"tag":76,"props":4889,"children":4890},{"style":99},[4891],{"type":48,"value":4892},"{\"value\": \"newsecret\"}",{"type":42,"tag":76,"props":4894,"children":4895},{"style":166},[4896],{"type":48,"value":200},{"type":42,"tag":76,"props":4898,"children":4899},{"class":78,"line":1273},[4900],{"type":42,"tag":76,"props":4901,"children":4902},{"emptyLinePlaceholder":119},[4903],{"type":48,"value":122},{"type":42,"tag":76,"props":4905,"children":4906},{"class":78,"line":1303},[4907],{"type":42,"tag":76,"props":4908,"children":4909},{"style":83},[4910],{"type":48,"value":4911},"# Delete env var\n",{"type":42,"tag":76,"props":4913,"children":4914},{"class":78,"line":1333},[4915,4919,4923,4927,4931],{"type":42,"tag":76,"props":4916,"children":4917},{"style":93},[4918],{"type":48,"value":357},{"type":42,"tag":76,"props":4920,"children":4921},{"style":99},[4922],{"type":48,"value":2137},{"type":42,"tag":76,"props":4924,"children":4925},{"style":99},[4926],{"type":48,"value":3129},{"type":42,"tag":76,"props":4928,"children":4929},{"style":99},[4930],{"type":48,"value":4822},{"type":42,"tag":76,"props":4932,"children":4933},{"style":172},[4934],{"type":48,"value":367},{"type":42,"tag":76,"props":4936,"children":4937},{"class":78,"line":1342},[4938,4942,4946,4950,4954],{"type":42,"tag":76,"props":4939,"children":4940},{"style":99},[4941],{"type":48,"value":375},{"type":42,"tag":76,"props":4943,"children":4944},{"style":166},[4945],{"type":48,"value":380},{"type":42,"tag":76,"props":4947,"children":4948},{"style":99},[4949],{"type":48,"value":2015},{"type":42,"tag":76,"props":4951,"children":4952},{"style":172},[4953],{"type":48,"value":2020},{"type":42,"tag":76,"props":4955,"children":4956},{"style":166},[4957],{"type":48,"value":390},{"type":42,"tag":51,"props":4959,"children":4960},{},[4961,4963,4969,4970,4976,4977,4983,4984,4990,4991,4997],{"type":48,"value":4962},"Env var types: ",{"type":42,"tag":72,"props":4964,"children":4966},{"className":4965},[],[4967],{"type":48,"value":4968},"system",{"type":48,"value":1944},{"type":42,"tag":72,"props":4971,"children":4973},{"className":4972},[],[4974],{"type":48,"value":4975},"encrypted",{"type":48,"value":1944},{"type":42,"tag":72,"props":4978,"children":4980},{"className":4979},[],[4981],{"type":48,"value":4982},"plain",{"type":48,"value":1944},{"type":42,"tag":72,"props":4985,"children":4987},{"className":4986},[],[4988],{"type":48,"value":4989},"secret",{"type":48,"value":1944},{"type":42,"tag":72,"props":4992,"children":4994},{"className":4993},[],[4995],{"type":48,"value":4996},"sensitive",{"type":48,"value":484},{"type":42,"tag":416,"props":4999,"children":5001},{"id":5000},"blob",[5002],{"type":48,"value":5003},"Blob",{"type":42,"tag":51,"props":5005,"children":5006},{},[5007,5009,5015,5017,5023,5024,5030,5031,5037,5038,5044],{"type":48,"value":5008},"Implements the Vercel Blob API used by the ",{"type":42,"tag":72,"props":5010,"children":5012},{"className":5011},[],[5013],{"type":48,"value":5014},"@vercel\u002Fblob",{"type":48,"value":5016}," SDK (",{"type":42,"tag":72,"props":5018,"children":5020},{"className":5019},[],[5021],{"type":48,"value":5022},"put",{"type":48,"value":1944},{"type":42,"tag":72,"props":5025,"children":5027},{"className":5026},[],[5028],{"type":48,"value":5029},"head",{"type":48,"value":1944},{"type":42,"tag":72,"props":5032,"children":5034},{"className":5033},[],[5035],{"type":48,"value":5036},"list",{"type":48,"value":1944},{"type":42,"tag":72,"props":5039,"children":5041},{"className":5040},[],[5042],{"type":48,"value":5043},"del",{"type":48,"value":5045},"). Point the SDK at the emulator with two environment variables:",{"type":42,"tag":64,"props":5047,"children":5049},{"className":66,"code":5048,"language":68,"meta":69,"style":69},"VERCEL_BLOB_API_URL=http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\nBLOB_READ_WRITE_TOKEN=vercel_blob_rw_mystore_secret\n",[5050],{"type":42,"tag":72,"props":5051,"children":5052},{"__ignoreMap":69},[5053,5070],{"type":42,"tag":76,"props":5054,"children":5055},{"class":78,"line":79},[5056,5061,5065],{"type":42,"tag":76,"props":5057,"children":5058},{"style":172},[5059],{"type":48,"value":5060},"VERCEL_BLOB_API_URL",{"type":42,"tag":76,"props":5062,"children":5063},{"style":166},[5064],{"type":48,"value":226},{"type":42,"tag":76,"props":5066,"children":5067},{"style":99},[5068],{"type":48,"value":5069},"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\n",{"type":42,"tag":76,"props":5071,"children":5072},{"class":78,"line":89},[5073,5078,5082],{"type":42,"tag":76,"props":5074,"children":5075},{"style":172},[5076],{"type":48,"value":5077},"BLOB_READ_WRITE_TOKEN",{"type":42,"tag":76,"props":5079,"children":5080},{"style":166},[5081],{"type":48,"value":226},{"type":42,"tag":76,"props":5083,"children":5084},{"style":99},[5085],{"type":48,"value":5086},"vercel_blob_rw_mystore_secret\n",{"type":42,"tag":51,"props":5088,"children":5089},{},[5090,5092,5098],{"type":48,"value":5091},"Any token of the form ",{"type":42,"tag":72,"props":5093,"children":5095},{"className":5094},[],[5096],{"type":48,"value":5097},"vercel_blob_rw_\u003CstoreId>_\u003Csecret>",{"type":48,"value":5099}," is accepted; the store id is parsed from the token.",{"type":42,"tag":64,"props":5101,"children":5103},{"className":148,"code":5102,"language":150,"meta":69,"style":69},"import { put, head, list, del } from '@vercel\u002Fblob'\n\nconst blob = await put('avatars\u002Fuser.png', data, { access: 'public' })\n\u002F\u002F blob.url serves the bytes from the emulator\nawait head(blob.url)\nawait list({ prefix: 'avatars\u002F' })\nawait del(blob.url)\n",[5104],{"type":42,"tag":72,"props":5105,"children":5106},{"__ignoreMap":69},[5107,5170,5177,5265,5273,5299,5348],{"type":42,"tag":76,"props":5108,"children":5109},{"class":78,"line":79},[5110,5114,5118,5123,5127,5132,5136,5141,5145,5150,5154,5158,5162,5166],{"type":42,"tag":76,"props":5111,"children":5112},{"style":160},[5113],{"type":48,"value":163},{"type":42,"tag":76,"props":5115,"children":5116},{"style":166},[5117],{"type":48,"value":169},{"type":42,"tag":76,"props":5119,"children":5120},{"style":172},[5121],{"type":48,"value":5122}," put",{"type":42,"tag":76,"props":5124,"children":5125},{"style":166},[5126],{"type":48,"value":275},{"type":42,"tag":76,"props":5128,"children":5129},{"style":172},[5130],{"type":48,"value":5131}," head",{"type":42,"tag":76,"props":5133,"children":5134},{"style":166},[5135],{"type":48,"value":275},{"type":42,"tag":76,"props":5137,"children":5138},{"style":172},[5139],{"type":48,"value":5140}," list",{"type":42,"tag":76,"props":5142,"children":5143},{"style":166},[5144],{"type":48,"value":275},{"type":42,"tag":76,"props":5146,"children":5147},{"style":172},[5148],{"type":48,"value":5149}," del",{"type":42,"tag":76,"props":5151,"children":5152},{"style":166},[5153],{"type":48,"value":180},{"type":42,"tag":76,"props":5155,"children":5156},{"style":160},[5157],{"type":48,"value":185},{"type":42,"tag":76,"props":5159,"children":5160},{"style":166},[5161],{"type":48,"value":190},{"type":42,"tag":76,"props":5163,"children":5164},{"style":99},[5165],{"type":48,"value":5014},{"type":42,"tag":76,"props":5167,"children":5168},{"style":166},[5169],{"type":48,"value":200},{"type":42,"tag":76,"props":5171,"children":5172},{"class":78,"line":89},[5173],{"type":42,"tag":76,"props":5174,"children":5175},{"emptyLinePlaceholder":119},[5176],{"type":48,"value":122},{"type":42,"tag":76,"props":5178,"children":5179},{"class":78,"line":115},[5180,5184,5189,5193,5197,5201,5205,5209,5214,5218,5222,5227,5231,5235,5240,5244,5248,5253,5257,5261],{"type":42,"tag":76,"props":5181,"children":5182},{"style":213},[5183],{"type":48,"value":216},{"type":42,"tag":76,"props":5185,"children":5186},{"style":172},[5187],{"type":48,"value":5188}," blob ",{"type":42,"tag":76,"props":5190,"children":5191},{"style":166},[5192],{"type":48,"value":226},{"type":42,"tag":76,"props":5194,"children":5195},{"style":160},[5196],{"type":48,"value":231},{"type":42,"tag":76,"props":5198,"children":5199},{"style":234},[5200],{"type":48,"value":5122},{"type":42,"tag":76,"props":5202,"children":5203},{"style":172},[5204],{"type":48,"value":241},{"type":42,"tag":76,"props":5206,"children":5207},{"style":166},[5208],{"type":48,"value":270},{"type":42,"tag":76,"props":5210,"children":5211},{"style":99},[5212],{"type":48,"value":5213},"avatars\u002Fuser.png",{"type":42,"tag":76,"props":5215,"children":5216},{"style":166},[5217],{"type":48,"value":270},{"type":42,"tag":76,"props":5219,"children":5220},{"style":166},[5221],{"type":48,"value":275},{"type":42,"tag":76,"props":5223,"children":5224},{"style":172},[5225],{"type":48,"value":5226}," data",{"type":42,"tag":76,"props":5228,"children":5229},{"style":166},[5230],{"type":48,"value":275},{"type":42,"tag":76,"props":5232,"children":5233},{"style":166},[5234],{"type":48,"value":169},{"type":42,"tag":76,"props":5236,"children":5237},{"style":249},[5238],{"type":48,"value":5239}," access",{"type":42,"tag":76,"props":5241,"children":5242},{"style":166},[5243],{"type":48,"value":257},{"type":42,"tag":76,"props":5245,"children":5246},{"style":166},[5247],{"type":48,"value":190},{"type":42,"tag":76,"props":5249,"children":5250},{"style":99},[5251],{"type":48,"value":5252},"public",{"type":42,"tag":76,"props":5254,"children":5255},{"style":166},[5256],{"type":48,"value":270},{"type":42,"tag":76,"props":5258,"children":5259},{"style":166},[5260],{"type":48,"value":180},{"type":42,"tag":76,"props":5262,"children":5263},{"style":172},[5264],{"type":48,"value":299},{"type":42,"tag":76,"props":5266,"children":5267},{"class":78,"line":125},[5268],{"type":42,"tag":76,"props":5269,"children":5270},{"style":83},[5271],{"type":48,"value":5272},"\u002F\u002F blob.url serves the bytes from the emulator\n",{"type":42,"tag":76,"props":5274,"children":5275},{"class":78,"line":134},[5276,5281,5285,5290,5294],{"type":42,"tag":76,"props":5277,"children":5278},{"style":160},[5279],{"type":48,"value":5280},"await",{"type":42,"tag":76,"props":5282,"children":5283},{"style":234},[5284],{"type":48,"value":5131},{"type":42,"tag":76,"props":5286,"children":5287},{"style":172},[5288],{"type":48,"value":5289},"(blob",{"type":42,"tag":76,"props":5291,"children":5292},{"style":166},[5293],{"type":48,"value":484},{"type":42,"tag":76,"props":5295,"children":5296},{"style":172},[5297],{"type":48,"value":5298},"url)\n",{"type":42,"tag":76,"props":5300,"children":5301},{"class":78,"line":875},[5302,5306,5310,5314,5318,5323,5327,5331,5336,5340,5344],{"type":42,"tag":76,"props":5303,"children":5304},{"style":160},[5305],{"type":48,"value":5280},{"type":42,"tag":76,"props":5307,"children":5308},{"style":234},[5309],{"type":48,"value":5140},{"type":42,"tag":76,"props":5311,"children":5312},{"style":172},[5313],{"type":48,"value":241},{"type":42,"tag":76,"props":5315,"children":5316},{"style":166},[5317],{"type":48,"value":246},{"type":42,"tag":76,"props":5319,"children":5320},{"style":249},[5321],{"type":48,"value":5322}," prefix",{"type":42,"tag":76,"props":5324,"children":5325},{"style":166},[5326],{"type":48,"value":257},{"type":42,"tag":76,"props":5328,"children":5329},{"style":166},[5330],{"type":48,"value":190},{"type":42,"tag":76,"props":5332,"children":5333},{"style":99},[5334],{"type":48,"value":5335},"avatars\u002F",{"type":42,"tag":76,"props":5337,"children":5338},{"style":166},[5339],{"type":48,"value":270},{"type":42,"tag":76,"props":5341,"children":5342},{"style":166},[5343],{"type":48,"value":180},{"type":42,"tag":76,"props":5345,"children":5346},{"style":172},[5347],{"type":48,"value":299},{"type":42,"tag":76,"props":5349,"children":5350},{"class":78,"line":931},[5351,5355,5359,5363,5367],{"type":42,"tag":76,"props":5352,"children":5353},{"style":160},[5354],{"type":48,"value":5280},{"type":42,"tag":76,"props":5356,"children":5357},{"style":234},[5358],{"type":48,"value":5149},{"type":42,"tag":76,"props":5360,"children":5361},{"style":172},[5362],{"type":48,"value":5289},{"type":42,"tag":76,"props":5364,"children":5365},{"style":166},[5366],{"type":48,"value":484},{"type":42,"tag":76,"props":5368,"children":5369},{"style":172},[5370],{"type":48,"value":5298},{"type":42,"tag":51,"props":5372,"children":5373},{},[5374],{"type":48,"value":5375},"Direct HTTP:",{"type":42,"tag":64,"props":5377,"children":5379},{"className":66,"code":5378,"language":68,"meta":69,"style":69},"BLOB_TOKEN=\"vercel_blob_rw_mystore_secret\"\n\n# Upload (honors x-add-random-suffix, x-allow-overwrite, x-content-type,\n#   x-cache-control-max-age, x-if-match headers)\ncurl -X PUT \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?pathname=docs\u002Freadme.txt\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\" \\\n  --data-binary @readme.txt\n\n# Metadata (head)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?url=docs\u002Freadme.txt\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\"\n\n# List (prefix, limit, cursor, mode=folded)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?prefix=docs\u002F\" \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\"\n\n# Delete\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\u002Fdelete \\\n  -H \"Authorization: Bearer $BLOB_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"urls\": [\"docs\u002Freadme.txt\"]}'\n\n# Serve content (public, no auth; ?download=1 forces attachment)\ncurl http:\u002F\u002Flocalhost:4000\u002Fblob\u002Fmystore\u002Fdocs\u002Freadme.txt\n",[5380],{"type":42,"tag":72,"props":5381,"children":5382},{"__ignoreMap":69},[5383,5408,5415,5423,5431,5464,5492,5504,5511,5519,5543,5566,5573,5581,5605,5628,5635,5643,5667,5694,5717,5737,5744,5752],{"type":42,"tag":76,"props":5384,"children":5385},{"class":78,"line":79},[5386,5391,5395,5399,5404],{"type":42,"tag":76,"props":5387,"children":5388},{"style":172},[5389],{"type":48,"value":5390},"BLOB_TOKEN",{"type":42,"tag":76,"props":5392,"children":5393},{"style":166},[5394],{"type":48,"value":226},{"type":42,"tag":76,"props":5396,"children":5397},{"style":166},[5398],{"type":48,"value":1995},{"type":42,"tag":76,"props":5400,"children":5401},{"style":99},[5402],{"type":48,"value":5403},"vercel_blob_rw_mystore_secret",{"type":42,"tag":76,"props":5405,"children":5406},{"style":166},[5407],{"type":48,"value":390},{"type":42,"tag":76,"props":5409,"children":5410},{"class":78,"line":89},[5411],{"type":42,"tag":76,"props":5412,"children":5413},{"emptyLinePlaceholder":119},[5414],{"type":48,"value":122},{"type":42,"tag":76,"props":5416,"children":5417},{"class":78,"line":115},[5418],{"type":42,"tag":76,"props":5419,"children":5420},{"style":83},[5421],{"type":48,"value":5422},"# Upload (honors x-add-random-suffix, x-allow-overwrite, x-content-type,\n",{"type":42,"tag":76,"props":5424,"children":5425},{"class":78,"line":125},[5426],{"type":42,"tag":76,"props":5427,"children":5428},{"style":83},[5429],{"type":48,"value":5430},"#   x-cache-control-max-age, x-if-match headers)\n",{"type":42,"tag":76,"props":5432,"children":5433},{"class":78,"line":134},[5434,5438,5442,5447,5451,5456,5460],{"type":42,"tag":76,"props":5435,"children":5436},{"style":93},[5437],{"type":48,"value":357},{"type":42,"tag":76,"props":5439,"children":5440},{"style":99},[5441],{"type":48,"value":2137},{"type":42,"tag":76,"props":5443,"children":5444},{"style":99},[5445],{"type":48,"value":5446}," PUT",{"type":42,"tag":76,"props":5448,"children":5449},{"style":166},[5450],{"type":48,"value":380},{"type":42,"tag":76,"props":5452,"children":5453},{"style":99},[5454],{"type":48,"value":5455},"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?pathname=docs\u002Freadme.txt",{"type":42,"tag":76,"props":5457,"children":5458},{"style":166},[5459],{"type":48,"value":1995},{"type":42,"tag":76,"props":5461,"children":5462},{"style":172},[5463],{"type":48,"value":367},{"type":42,"tag":76,"props":5465,"children":5466},{"class":78,"line":875},[5467,5471,5475,5479,5484,5488],{"type":42,"tag":76,"props":5468,"children":5469},{"style":99},[5470],{"type":48,"value":375},{"type":42,"tag":76,"props":5472,"children":5473},{"style":166},[5474],{"type":48,"value":380},{"type":42,"tag":76,"props":5476,"children":5477},{"style":99},[5478],{"type":48,"value":2015},{"type":42,"tag":76,"props":5480,"children":5481},{"style":172},[5482],{"type":48,"value":5483},"$BLOB_TOKEN",{"type":42,"tag":76,"props":5485,"children":5486},{"style":166},[5487],{"type":48,"value":1995},{"type":42,"tag":76,"props":5489,"children":5490},{"style":172},[5491],{"type":48,"value":367},{"type":42,"tag":76,"props":5493,"children":5494},{"class":78,"line":931},[5495,5499],{"type":42,"tag":76,"props":5496,"children":5497},{"style":99},[5498],{"type":48,"value":4210},{"type":42,"tag":76,"props":5500,"children":5501},{"style":99},[5502],{"type":48,"value":5503}," @readme.txt\n",{"type":42,"tag":76,"props":5505,"children":5506},{"class":78,"line":940},[5507],{"type":42,"tag":76,"props":5508,"children":5509},{"emptyLinePlaceholder":119},[5510],{"type":48,"value":122},{"type":42,"tag":76,"props":5512,"children":5513},{"class":78,"line":957},[5514],{"type":42,"tag":76,"props":5515,"children":5516},{"style":83},[5517],{"type":48,"value":5518},"# Metadata (head)\n",{"type":42,"tag":76,"props":5520,"children":5521},{"class":78,"line":1010},[5522,5526,5530,5535,5539],{"type":42,"tag":76,"props":5523,"children":5524},{"style":93},[5525],{"type":48,"value":357},{"type":42,"tag":76,"props":5527,"children":5528},{"style":166},[5529],{"type":48,"value":380},{"type":42,"tag":76,"props":5531,"children":5532},{"style":99},[5533],{"type":48,"value":5534},"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?url=docs\u002Freadme.txt",{"type":42,"tag":76,"props":5536,"children":5537},{"style":166},[5538],{"type":48,"value":1995},{"type":42,"tag":76,"props":5540,"children":5541},{"style":172},[5542],{"type":48,"value":367},{"type":42,"tag":76,"props":5544,"children":5545},{"class":78,"line":1018},[5546,5550,5554,5558,5562],{"type":42,"tag":76,"props":5547,"children":5548},{"style":99},[5549],{"type":48,"value":375},{"type":42,"tag":76,"props":5551,"children":5552},{"style":166},[5553],{"type":48,"value":380},{"type":42,"tag":76,"props":5555,"children":5556},{"style":99},[5557],{"type":48,"value":2015},{"type":42,"tag":76,"props":5559,"children":5560},{"style":172},[5561],{"type":48,"value":5483},{"type":42,"tag":76,"props":5563,"children":5564},{"style":166},[5565],{"type":48,"value":390},{"type":42,"tag":76,"props":5567,"children":5568},{"class":78,"line":1035},[5569],{"type":42,"tag":76,"props":5570,"children":5571},{"emptyLinePlaceholder":119},[5572],{"type":48,"value":122},{"type":42,"tag":76,"props":5574,"children":5575},{"class":78,"line":1088},[5576],{"type":42,"tag":76,"props":5577,"children":5578},{"style":83},[5579],{"type":48,"value":5580},"# List (prefix, limit, cursor, mode=folded)\n",{"type":42,"tag":76,"props":5582,"children":5583},{"class":78,"line":1096},[5584,5588,5592,5597,5601],{"type":42,"tag":76,"props":5585,"children":5586},{"style":93},[5587],{"type":48,"value":357},{"type":42,"tag":76,"props":5589,"children":5590},{"style":166},[5591],{"type":48,"value":380},{"type":42,"tag":76,"props":5593,"children":5594},{"style":99},[5595],{"type":48,"value":5596},"http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob?prefix=docs\u002F",{"type":42,"tag":76,"props":5598,"children":5599},{"style":166},[5600],{"type":48,"value":1995},{"type":42,"tag":76,"props":5602,"children":5603},{"style":172},[5604],{"type":48,"value":367},{"type":42,"tag":76,"props":5606,"children":5607},{"class":78,"line":1134},[5608,5612,5616,5620,5624],{"type":42,"tag":76,"props":5609,"children":5610},{"style":99},[5611],{"type":48,"value":375},{"type":42,"tag":76,"props":5613,"children":5614},{"style":166},[5615],{"type":48,"value":380},{"type":42,"tag":76,"props":5617,"children":5618},{"style":99},[5619],{"type":48,"value":2015},{"type":42,"tag":76,"props":5621,"children":5622},{"style":172},[5623],{"type":48,"value":5483},{"type":42,"tag":76,"props":5625,"children":5626},{"style":166},[5627],{"type":48,"value":390},{"type":42,"tag":76,"props":5629,"children":5630},{"class":78,"line":1172},[5631],{"type":42,"tag":76,"props":5632,"children":5633},{"emptyLinePlaceholder":119},[5634],{"type":48,"value":122},{"type":42,"tag":76,"props":5636,"children":5637},{"class":78,"line":1199},[5638],{"type":42,"tag":76,"props":5639,"children":5640},{"style":83},[5641],{"type":48,"value":5642},"# Delete\n",{"type":42,"tag":76,"props":5644,"children":5645},{"class":78,"line":1212},[5646,5650,5654,5658,5663],{"type":42,"tag":76,"props":5647,"children":5648},{"style":93},[5649],{"type":48,"value":357},{"type":42,"tag":76,"props":5651,"children":5652},{"style":99},[5653],{"type":48,"value":2137},{"type":42,"tag":76,"props":5655,"children":5656},{"style":99},[5657],{"type":48,"value":2347},{"type":42,"tag":76,"props":5659,"children":5660},{"style":99},[5661],{"type":48,"value":5662}," http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fblob\u002Fdelete",{"type":42,"tag":76,"props":5664,"children":5665},{"style":172},[5666],{"type":48,"value":367},{"type":42,"tag":76,"props":5668,"children":5669},{"class":78,"line":1243},[5670,5674,5678,5682,5686,5690],{"type":42,"tag":76,"props":5671,"children":5672},{"style":99},[5673],{"type":48,"value":375},{"type":42,"tag":76,"props":5675,"children":5676},{"style":166},[5677],{"type":48,"value":380},{"type":42,"tag":76,"props":5679,"children":5680},{"style":99},[5681],{"type":48,"value":2015},{"type":42,"tag":76,"props":5683,"children":5684},{"style":172},[5685],{"type":48,"value":5483},{"type":42,"tag":76,"props":5687,"children":5688},{"style":166},[5689],{"type":48,"value":1995},{"type":42,"tag":76,"props":5691,"children":5692},{"style":172},[5693],{"type":48,"value":367},{"type":42,"tag":76,"props":5695,"children":5696},{"class":78,"line":1273},[5697,5701,5705,5709,5713],{"type":42,"tag":76,"props":5698,"children":5699},{"style":99},[5700],{"type":48,"value":375},{"type":42,"tag":76,"props":5702,"children":5703},{"style":166},[5704],{"type":48,"value":380},{"type":42,"tag":76,"props":5706,"children":5707},{"style":99},[5708],{"type":48,"value":2193},{"type":42,"tag":76,"props":5710,"children":5711},{"style":166},[5712],{"type":48,"value":1995},{"type":42,"tag":76,"props":5714,"children":5715},{"style":172},[5716],{"type":48,"value":367},{"type":42,"tag":76,"props":5718,"children":5719},{"class":78,"line":1303},[5720,5724,5728,5733],{"type":42,"tag":76,"props":5721,"children":5722},{"style":99},[5723],{"type":48,"value":2209},{"type":42,"tag":76,"props":5725,"children":5726},{"style":166},[5727],{"type":48,"value":190},{"type":42,"tag":76,"props":5729,"children":5730},{"style":99},[5731],{"type":48,"value":5732},"{\"urls\": [\"docs\u002Freadme.txt\"]}",{"type":42,"tag":76,"props":5734,"children":5735},{"style":166},[5736],{"type":48,"value":200},{"type":42,"tag":76,"props":5738,"children":5739},{"class":78,"line":1333},[5740],{"type":42,"tag":76,"props":5741,"children":5742},{"emptyLinePlaceholder":119},[5743],{"type":48,"value":122},{"type":42,"tag":76,"props":5745,"children":5746},{"class":78,"line":1342},[5747],{"type":42,"tag":76,"props":5748,"children":5749},{"style":83},[5750],{"type":48,"value":5751},"# Serve content (public, no auth; ?download=1 forces attachment)\n",{"type":42,"tag":76,"props":5753,"children":5754},{"class":78,"line":1350},[5755,5759],{"type":42,"tag":76,"props":5756,"children":5757},{"style":93},[5758],{"type":48,"value":357},{"type":42,"tag":76,"props":5760,"children":5761},{"style":99},[5762],{"type":48,"value":5763}," http:\u002F\u002Flocalhost:4000\u002Fblob\u002Fmystore\u002Fdocs\u002Freadme.txt\n",{"type":42,"tag":51,"props":5765,"children":5766},{},[5767],{"type":48,"value":5768},"Multipart uploads and client (browser) uploads are not supported yet.",{"type":42,"tag":416,"props":5770,"children":5772},{"id":5771},"api-keys",[5773],{"type":48,"value":5774},"API Keys",{"type":42,"tag":64,"props":5776,"children":5778},{"className":66,"code":5777,"language":68,"meta":69,"style":69},"# Create API key (optional teamId scope)\ncurl -X POST \"http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"CI Deploy Key\"}'\n\n# List API keys (optional teamId filter)\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Delete API key\ncurl -X DELETE http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys\u002Fak_abc123 \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[5779],{"type":42,"tag":72,"props":5780,"children":5781},{"__ignoreMap":69},[5782,5790,5822,5849,5872,5892,5899,5907,5930,5953,5960,5968,5992],{"type":42,"tag":76,"props":5783,"children":5784},{"class":78,"line":79},[5785],{"type":42,"tag":76,"props":5786,"children":5787},{"style":83},[5788],{"type":48,"value":5789},"# Create API key (optional teamId scope)\n",{"type":42,"tag":76,"props":5791,"children":5792},{"class":78,"line":89},[5793,5797,5801,5805,5809,5814,5818],{"type":42,"tag":76,"props":5794,"children":5795},{"style":93},[5796],{"type":48,"value":357},{"type":42,"tag":76,"props":5798,"children":5799},{"style":99},[5800],{"type":48,"value":2137},{"type":42,"tag":76,"props":5802,"children":5803},{"style":99},[5804],{"type":48,"value":2347},{"type":42,"tag":76,"props":5806,"children":5807},{"style":166},[5808],{"type":48,"value":380},{"type":42,"tag":76,"props":5810,"children":5811},{"style":99},[5812],{"type":48,"value":5813},"http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys?teamId=team_abc123",{"type":42,"tag":76,"props":5815,"children":5816},{"style":166},[5817],{"type":48,"value":1995},{"type":42,"tag":76,"props":5819,"children":5820},{"style":172},[5821],{"type":48,"value":367},{"type":42,"tag":76,"props":5823,"children":5824},{"class":78,"line":115},[5825,5829,5833,5837,5841,5845],{"type":42,"tag":76,"props":5826,"children":5827},{"style":99},[5828],{"type":48,"value":375},{"type":42,"tag":76,"props":5830,"children":5831},{"style":166},[5832],{"type":48,"value":380},{"type":42,"tag":76,"props":5834,"children":5835},{"style":99},[5836],{"type":48,"value":2015},{"type":42,"tag":76,"props":5838,"children":5839},{"style":172},[5840],{"type":48,"value":2020},{"type":42,"tag":76,"props":5842,"children":5843},{"style":166},[5844],{"type":48,"value":1995},{"type":42,"tag":76,"props":5846,"children":5847},{"style":172},[5848],{"type":48,"value":367},{"type":42,"tag":76,"props":5850,"children":5851},{"class":78,"line":125},[5852,5856,5860,5864,5868],{"type":42,"tag":76,"props":5853,"children":5854},{"style":99},[5855],{"type":48,"value":375},{"type":42,"tag":76,"props":5857,"children":5858},{"style":166},[5859],{"type":48,"value":380},{"type":42,"tag":76,"props":5861,"children":5862},{"style":99},[5863],{"type":48,"value":2193},{"type":42,"tag":76,"props":5865,"children":5866},{"style":166},[5867],{"type":48,"value":1995},{"type":42,"tag":76,"props":5869,"children":5870},{"style":172},[5871],{"type":48,"value":367},{"type":42,"tag":76,"props":5873,"children":5874},{"class":78,"line":134},[5875,5879,5883,5888],{"type":42,"tag":76,"props":5876,"children":5877},{"style":99},[5878],{"type":48,"value":2209},{"type":42,"tag":76,"props":5880,"children":5881},{"style":166},[5882],{"type":48,"value":190},{"type":42,"tag":76,"props":5884,"children":5885},{"style":99},[5886],{"type":48,"value":5887},"{\"name\": \"CI Deploy Key\"}",{"type":42,"tag":76,"props":5889,"children":5890},{"style":166},[5891],{"type":48,"value":200},{"type":42,"tag":76,"props":5893,"children":5894},{"class":78,"line":875},[5895],{"type":42,"tag":76,"props":5896,"children":5897},{"emptyLinePlaceholder":119},[5898],{"type":48,"value":122},{"type":42,"tag":76,"props":5900,"children":5901},{"class":78,"line":931},[5902],{"type":42,"tag":76,"props":5903,"children":5904},{"style":83},[5905],{"type":48,"value":5906},"# List API keys (optional teamId filter)\n",{"type":42,"tag":76,"props":5908,"children":5909},{"class":78,"line":940},[5910,5914,5918,5922,5926],{"type":42,"tag":76,"props":5911,"children":5912},{"style":93},[5913],{"type":48,"value":357},{"type":42,"tag":76,"props":5915,"children":5916},{"style":166},[5917],{"type":48,"value":380},{"type":42,"tag":76,"props":5919,"children":5920},{"style":99},[5921],{"type":48,"value":5813},{"type":42,"tag":76,"props":5923,"children":5924},{"style":166},[5925],{"type":48,"value":1995},{"type":42,"tag":76,"props":5927,"children":5928},{"style":172},[5929],{"type":48,"value":367},{"type":42,"tag":76,"props":5931,"children":5932},{"class":78,"line":957},[5933,5937,5941,5945,5949],{"type":42,"tag":76,"props":5934,"children":5935},{"style":99},[5936],{"type":48,"value":375},{"type":42,"tag":76,"props":5938,"children":5939},{"style":166},[5940],{"type":48,"value":380},{"type":42,"tag":76,"props":5942,"children":5943},{"style":99},[5944],{"type":48,"value":2015},{"type":42,"tag":76,"props":5946,"children":5947},{"style":172},[5948],{"type":48,"value":2020},{"type":42,"tag":76,"props":5950,"children":5951},{"style":166},[5952],{"type":48,"value":390},{"type":42,"tag":76,"props":5954,"children":5955},{"class":78,"line":1010},[5956],{"type":42,"tag":76,"props":5957,"children":5958},{"emptyLinePlaceholder":119},[5959],{"type":48,"value":122},{"type":42,"tag":76,"props":5961,"children":5962},{"class":78,"line":1018},[5963],{"type":42,"tag":76,"props":5964,"children":5965},{"style":83},[5966],{"type":48,"value":5967},"# Delete API key\n",{"type":42,"tag":76,"props":5969,"children":5970},{"class":78,"line":1035},[5971,5975,5979,5983,5988],{"type":42,"tag":76,"props":5972,"children":5973},{"style":93},[5974],{"type":48,"value":357},{"type":42,"tag":76,"props":5976,"children":5977},{"style":99},[5978],{"type":48,"value":2137},{"type":42,"tag":76,"props":5980,"children":5981},{"style":99},[5982],{"type":48,"value":3129},{"type":42,"tag":76,"props":5984,"children":5985},{"style":99},[5986],{"type":48,"value":5987}," http:\u002F\u002Flocalhost:4000\u002Fv1\u002Fapi-keys\u002Fak_abc123",{"type":42,"tag":76,"props":5989,"children":5990},{"style":172},[5991],{"type":48,"value":367},{"type":42,"tag":76,"props":5993,"children":5994},{"class":78,"line":1088},[5995,5999,6003,6007,6011],{"type":42,"tag":76,"props":5996,"children":5997},{"style":99},[5998],{"type":48,"value":375},{"type":42,"tag":76,"props":6000,"children":6001},{"style":166},[6002],{"type":48,"value":380},{"type":42,"tag":76,"props":6004,"children":6005},{"style":99},[6006],{"type":48,"value":2015},{"type":42,"tag":76,"props":6008,"children":6009},{"style":172},[6010],{"type":48,"value":2020},{"type":42,"tag":76,"props":6012,"children":6013},{"style":166},[6014],{"type":48,"value":390},{"type":42,"tag":51,"props":6016,"children":6017},{},[6018],{"type":48,"value":6019},"Created API keys are automatically registered in the token map and can be used as Bearer tokens for all endpoints.",{"type":42,"tag":416,"props":6021,"children":6023},{"id":6022},"oauth-integrations",[6024],{"type":48,"value":6025},"OAuth \u002F Integrations",{"type":42,"tag":64,"props":6027,"children":6029},{"className":66,"code":6028,"language":68,"meta":69,"style":69},"# Authorize (browser flow, shows user picker)\n# GET \u002Foauth\u002Fauthorize?client_id=...&redirect_uri=...&scope=...&state=...\n\n# Token exchange (supports PKCE; accepts JSON or form-urlencoded)\ncurl -X POST http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Ftoken \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"client_id\": \"oac_abc123\", \"client_secret\": \"secret_abc123\", \"code\": \"\u003Ccode>\", \"redirect_uri\": \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\"}'\n\n# User info (returns sub, email, email_verified, name, preferred_username, picture)\ncurl http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Fuserinfo \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[6030],{"type":42,"tag":72,"props":6031,"children":6032},{"__ignoreMap":69},[6033,6041,6049,6056,6064,6088,6111,6131,6138,6146,6162],{"type":42,"tag":76,"props":6034,"children":6035},{"class":78,"line":79},[6036],{"type":42,"tag":76,"props":6037,"children":6038},{"style":83},[6039],{"type":48,"value":6040},"# Authorize (browser flow, shows user picker)\n",{"type":42,"tag":76,"props":6042,"children":6043},{"class":78,"line":89},[6044],{"type":42,"tag":76,"props":6045,"children":6046},{"style":83},[6047],{"type":48,"value":6048},"# GET \u002Foauth\u002Fauthorize?client_id=...&redirect_uri=...&scope=...&state=...\n",{"type":42,"tag":76,"props":6050,"children":6051},{"class":78,"line":115},[6052],{"type":42,"tag":76,"props":6053,"children":6054},{"emptyLinePlaceholder":119},[6055],{"type":48,"value":122},{"type":42,"tag":76,"props":6057,"children":6058},{"class":78,"line":125},[6059],{"type":42,"tag":76,"props":6060,"children":6061},{"style":83},[6062],{"type":48,"value":6063},"# Token exchange (supports PKCE; accepts JSON or form-urlencoded)\n",{"type":42,"tag":76,"props":6065,"children":6066},{"class":78,"line":134},[6067,6071,6075,6079,6084],{"type":42,"tag":76,"props":6068,"children":6069},{"style":93},[6070],{"type":48,"value":357},{"type":42,"tag":76,"props":6072,"children":6073},{"style":99},[6074],{"type":48,"value":2137},{"type":42,"tag":76,"props":6076,"children":6077},{"style":99},[6078],{"type":48,"value":2347},{"type":42,"tag":76,"props":6080,"children":6081},{"style":99},[6082],{"type":48,"value":6083}," http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Ftoken",{"type":42,"tag":76,"props":6085,"children":6086},{"style":172},[6087],{"type":48,"value":367},{"type":42,"tag":76,"props":6089,"children":6090},{"class":78,"line":875},[6091,6095,6099,6103,6107],{"type":42,"tag":76,"props":6092,"children":6093},{"style":99},[6094],{"type":48,"value":375},{"type":42,"tag":76,"props":6096,"children":6097},{"style":166},[6098],{"type":48,"value":380},{"type":42,"tag":76,"props":6100,"children":6101},{"style":99},[6102],{"type":48,"value":2193},{"type":42,"tag":76,"props":6104,"children":6105},{"style":166},[6106],{"type":48,"value":1995},{"type":42,"tag":76,"props":6108,"children":6109},{"style":172},[6110],{"type":48,"value":367},{"type":42,"tag":76,"props":6112,"children":6113},{"class":78,"line":931},[6114,6118,6122,6127],{"type":42,"tag":76,"props":6115,"children":6116},{"style":99},[6117],{"type":48,"value":2209},{"type":42,"tag":76,"props":6119,"children":6120},{"style":166},[6121],{"type":48,"value":190},{"type":42,"tag":76,"props":6123,"children":6124},{"style":99},[6125],{"type":48,"value":6126},"{\"client_id\": \"oac_abc123\", \"client_secret\": \"secret_abc123\", \"code\": \"\u003Ccode>\", \"redirect_uri\": \"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fvercel\"}",{"type":42,"tag":76,"props":6128,"children":6129},{"style":166},[6130],{"type":48,"value":200},{"type":42,"tag":76,"props":6132,"children":6133},{"class":78,"line":940},[6134],{"type":42,"tag":76,"props":6135,"children":6136},{"emptyLinePlaceholder":119},[6137],{"type":48,"value":122},{"type":42,"tag":76,"props":6139,"children":6140},{"class":78,"line":957},[6141],{"type":42,"tag":76,"props":6142,"children":6143},{"style":83},[6144],{"type":48,"value":6145},"# User info (returns sub, email, email_verified, name, preferred_username, picture)\n",{"type":42,"tag":76,"props":6147,"children":6148},{"class":78,"line":1010},[6149,6153,6158],{"type":42,"tag":76,"props":6150,"children":6151},{"style":93},[6152],{"type":48,"value":357},{"type":42,"tag":76,"props":6154,"children":6155},{"style":99},[6156],{"type":48,"value":6157}," http:\u002F\u002Flocalhost:4000\u002Flogin\u002Foauth\u002Fuserinfo",{"type":42,"tag":76,"props":6159,"children":6160},{"style":172},[6161],{"type":48,"value":367},{"type":42,"tag":76,"props":6163,"children":6164},{"class":78,"line":1018},[6165,6169,6173,6177,6181],{"type":42,"tag":76,"props":6166,"children":6167},{"style":99},[6168],{"type":48,"value":375},{"type":42,"tag":76,"props":6170,"children":6171},{"style":166},[6172],{"type":48,"value":380},{"type":42,"tag":76,"props":6174,"children":6175},{"style":99},[6176],{"type":48,"value":2015},{"type":42,"tag":76,"props":6178,"children":6179},{"style":172},[6180],{"type":48,"value":2020},{"type":42,"tag":76,"props":6182,"children":6183},{"style":166},[6184],{"type":48,"value":390},{"type":42,"tag":57,"props":6186,"children":6188},{"id":6187},"common-patterns",[6189],{"type":48,"value":6190},"Common Patterns",{"type":42,"tag":416,"props":6192,"children":6194},{"id":6193},"create-project-and-deploy",[6195],{"type":48,"value":6196},"Create Project and Deploy",{"type":42,"tag":64,"props":6198,"children":6200},{"className":66,"code":6199,"language":68,"meta":69,"style":69},"TOKEN=\"test_token_admin\"\nBASE=\"http:\u002F\u002Flocalhost:4000\"\n\n# Create project\ncurl -X POST $BASE\u002Fv11\u002Fprojects \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"framework\": \"nextjs\"}'\n\n# Add env var\ncurl -X POST $BASE\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"key\": \"DATABASE_URL\", \"value\": \"postgres:\u002F\u002F...\", \"type\": \"encrypted\", \"target\": [\"production\"]}'\n\n# Create deployment\ncurl -X POST $BASE\u002Fv13\u002Fdeployments \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"my-app\", \"target\": \"production\"}'\n",[6201],{"type":42,"tag":72,"props":6202,"children":6203},{"__ignoreMap":69},[6204,6229,6254,6261,6269,6298,6325,6348,6368,6375,6383,6411,6438,6461,6481,6488,6496,6524,6551,6574],{"type":42,"tag":76,"props":6205,"children":6206},{"class":78,"line":79},[6207,6212,6216,6220,6225],{"type":42,"tag":76,"props":6208,"children":6209},{"style":172},[6210],{"type":48,"value":6211},"TOKEN",{"type":42,"tag":76,"props":6213,"children":6214},{"style":166},[6215],{"type":48,"value":226},{"type":42,"tag":76,"props":6217,"children":6218},{"style":166},[6219],{"type":48,"value":1995},{"type":42,"tag":76,"props":6221,"children":6222},{"style":99},[6223],{"type":48,"value":6224},"test_token_admin",{"type":42,"tag":76,"props":6226,"children":6227},{"style":166},[6228],{"type":48,"value":390},{"type":42,"tag":76,"props":6230,"children":6231},{"class":78,"line":89},[6232,6237,6241,6245,6250],{"type":42,"tag":76,"props":6233,"children":6234},{"style":172},[6235],{"type":48,"value":6236},"BASE",{"type":42,"tag":76,"props":6238,"children":6239},{"style":166},[6240],{"type":48,"value":226},{"type":42,"tag":76,"props":6242,"children":6243},{"style":166},[6244],{"type":48,"value":1995},{"type":42,"tag":76,"props":6246,"children":6247},{"style":99},[6248],{"type":48,"value":6249},"http:\u002F\u002Flocalhost:4000",{"type":42,"tag":76,"props":6251,"children":6252},{"style":166},[6253],{"type":48,"value":390},{"type":42,"tag":76,"props":6255,"children":6256},{"class":78,"line":115},[6257],{"type":42,"tag":76,"props":6258,"children":6259},{"emptyLinePlaceholder":119},[6260],{"type":48,"value":122},{"type":42,"tag":76,"props":6262,"children":6263},{"class":78,"line":125},[6264],{"type":42,"tag":76,"props":6265,"children":6266},{"style":83},[6267],{"type":48,"value":6268},"# Create project\n",{"type":42,"tag":76,"props":6270,"children":6271},{"class":78,"line":134},[6272,6276,6280,6284,6289,6294],{"type":42,"tag":76,"props":6273,"children":6274},{"style":93},[6275],{"type":48,"value":357},{"type":42,"tag":76,"props":6277,"children":6278},{"style":99},[6279],{"type":48,"value":2137},{"type":42,"tag":76,"props":6281,"children":6282},{"style":99},[6283],{"type":48,"value":2347},{"type":42,"tag":76,"props":6285,"children":6286},{"style":172},[6287],{"type":48,"value":6288}," $BASE",{"type":42,"tag":76,"props":6290,"children":6291},{"style":99},[6292],{"type":48,"value":6293},"\u002Fv11\u002Fprojects",{"type":42,"tag":76,"props":6295,"children":6296},{"style":172},[6297],{"type":48,"value":367},{"type":42,"tag":76,"props":6299,"children":6300},{"class":78,"line":875},[6301,6305,6309,6313,6317,6321],{"type":42,"tag":76,"props":6302,"children":6303},{"style":99},[6304],{"type":48,"value":375},{"type":42,"tag":76,"props":6306,"children":6307},{"style":166},[6308],{"type":48,"value":380},{"type":42,"tag":76,"props":6310,"children":6311},{"style":99},[6312],{"type":48,"value":2015},{"type":42,"tag":76,"props":6314,"children":6315},{"style":172},[6316],{"type":48,"value":2020},{"type":42,"tag":76,"props":6318,"children":6319},{"style":166},[6320],{"type":48,"value":1995},{"type":42,"tag":76,"props":6322,"children":6323},{"style":172},[6324],{"type":48,"value":367},{"type":42,"tag":76,"props":6326,"children":6327},{"class":78,"line":931},[6328,6332,6336,6340,6344],{"type":42,"tag":76,"props":6329,"children":6330},{"style":99},[6331],{"type":48,"value":375},{"type":42,"tag":76,"props":6333,"children":6334},{"style":166},[6335],{"type":48,"value":380},{"type":42,"tag":76,"props":6337,"children":6338},{"style":99},[6339],{"type":48,"value":2193},{"type":42,"tag":76,"props":6341,"children":6342},{"style":166},[6343],{"type":48,"value":1995},{"type":42,"tag":76,"props":6345,"children":6346},{"style":172},[6347],{"type":48,"value":367},{"type":42,"tag":76,"props":6349,"children":6350},{"class":78,"line":940},[6351,6355,6359,6364],{"type":42,"tag":76,"props":6352,"children":6353},{"style":99},[6354],{"type":48,"value":2209},{"type":42,"tag":76,"props":6356,"children":6357},{"style":166},[6358],{"type":48,"value":190},{"type":42,"tag":76,"props":6360,"children":6361},{"style":99},[6362],{"type":48,"value":6363},"{\"name\": \"my-app\", \"framework\": \"nextjs\"}",{"type":42,"tag":76,"props":6365,"children":6366},{"style":166},[6367],{"type":48,"value":200},{"type":42,"tag":76,"props":6369,"children":6370},{"class":78,"line":957},[6371],{"type":42,"tag":76,"props":6372,"children":6373},{"emptyLinePlaceholder":119},[6374],{"type":48,"value":122},{"type":42,"tag":76,"props":6376,"children":6377},{"class":78,"line":1010},[6378],{"type":42,"tag":76,"props":6379,"children":6380},{"style":83},[6381],{"type":48,"value":6382},"# Add env var\n",{"type":42,"tag":76,"props":6384,"children":6385},{"class":78,"line":1018},[6386,6390,6394,6398,6402,6407],{"type":42,"tag":76,"props":6387,"children":6388},{"style":93},[6389],{"type":48,"value":357},{"type":42,"tag":76,"props":6391,"children":6392},{"style":99},[6393],{"type":48,"value":2137},{"type":42,"tag":76,"props":6395,"children":6396},{"style":99},[6397],{"type":48,"value":2347},{"type":42,"tag":76,"props":6399,"children":6400},{"style":172},[6401],{"type":48,"value":6288},{"type":42,"tag":76,"props":6403,"children":6404},{"style":99},[6405],{"type":48,"value":6406},"\u002Fv10\u002Fprojects\u002Fmy-app\u002Fenv",{"type":42,"tag":76,"props":6408,"children":6409},{"style":172},[6410],{"type":48,"value":367},{"type":42,"tag":76,"props":6412,"children":6413},{"class":78,"line":1035},[6414,6418,6422,6426,6430,6434],{"type":42,"tag":76,"props":6415,"children":6416},{"style":99},[6417],{"type":48,"value":375},{"type":42,"tag":76,"props":6419,"children":6420},{"style":166},[6421],{"type":48,"value":380},{"type":42,"tag":76,"props":6423,"children":6424},{"style":99},[6425],{"type":48,"value":2015},{"type":42,"tag":76,"props":6427,"children":6428},{"style":172},[6429],{"type":48,"value":2020},{"type":42,"tag":76,"props":6431,"children":6432},{"style":166},[6433],{"type":48,"value":1995},{"type":42,"tag":76,"props":6435,"children":6436},{"style":172},[6437],{"type":48,"value":367},{"type":42,"tag":76,"props":6439,"children":6440},{"class":78,"line":1088},[6441,6445,6449,6453,6457],{"type":42,"tag":76,"props":6442,"children":6443},{"style":99},[6444],{"type":48,"value":375},{"type":42,"tag":76,"props":6446,"children":6447},{"style":166},[6448],{"type":48,"value":380},{"type":42,"tag":76,"props":6450,"children":6451},{"style":99},[6452],{"type":48,"value":2193},{"type":42,"tag":76,"props":6454,"children":6455},{"style":166},[6456],{"type":48,"value":1995},{"type":42,"tag":76,"props":6458,"children":6459},{"style":172},[6460],{"type":48,"value":367},{"type":42,"tag":76,"props":6462,"children":6463},{"class":78,"line":1096},[6464,6468,6472,6477],{"type":42,"tag":76,"props":6465,"children":6466},{"style":99},[6467],{"type":48,"value":2209},{"type":42,"tag":76,"props":6469,"children":6470},{"style":166},[6471],{"type":48,"value":190},{"type":42,"tag":76,"props":6473,"children":6474},{"style":99},[6475],{"type":48,"value":6476},"{\"key\": \"DATABASE_URL\", \"value\": \"postgres:\u002F\u002F...\", \"type\": \"encrypted\", \"target\": [\"production\"]}",{"type":42,"tag":76,"props":6478,"children":6479},{"style":166},[6480],{"type":48,"value":200},{"type":42,"tag":76,"props":6482,"children":6483},{"class":78,"line":1134},[6484],{"type":42,"tag":76,"props":6485,"children":6486},{"emptyLinePlaceholder":119},[6487],{"type":48,"value":122},{"type":42,"tag":76,"props":6489,"children":6490},{"class":78,"line":1172},[6491],{"type":42,"tag":76,"props":6492,"children":6493},{"style":83},[6494],{"type":48,"value":6495},"# Create deployment\n",{"type":42,"tag":76,"props":6497,"children":6498},{"class":78,"line":1199},[6499,6503,6507,6511,6515,6520],{"type":42,"tag":76,"props":6500,"children":6501},{"style":93},[6502],{"type":48,"value":357},{"type":42,"tag":76,"props":6504,"children":6505},{"style":99},[6506],{"type":48,"value":2137},{"type":42,"tag":76,"props":6508,"children":6509},{"style":99},[6510],{"type":48,"value":2347},{"type":42,"tag":76,"props":6512,"children":6513},{"style":172},[6514],{"type":48,"value":6288},{"type":42,"tag":76,"props":6516,"children":6517},{"style":99},[6518],{"type":48,"value":6519},"\u002Fv13\u002Fdeployments",{"type":42,"tag":76,"props":6521,"children":6522},{"style":172},[6523],{"type":48,"value":367},{"type":42,"tag":76,"props":6525,"children":6526},{"class":78,"line":1212},[6527,6531,6535,6539,6543,6547],{"type":42,"tag":76,"props":6528,"children":6529},{"style":99},[6530],{"type":48,"value":375},{"type":42,"tag":76,"props":6532,"children":6533},{"style":166},[6534],{"type":48,"value":380},{"type":42,"tag":76,"props":6536,"children":6537},{"style":99},[6538],{"type":48,"value":2015},{"type":42,"tag":76,"props":6540,"children":6541},{"style":172},[6542],{"type":48,"value":2020},{"type":42,"tag":76,"props":6544,"children":6545},{"style":166},[6546],{"type":48,"value":1995},{"type":42,"tag":76,"props":6548,"children":6549},{"style":172},[6550],{"type":48,"value":367},{"type":42,"tag":76,"props":6552,"children":6553},{"class":78,"line":1243},[6554,6558,6562,6566,6570],{"type":42,"tag":76,"props":6555,"children":6556},{"style":99},[6557],{"type":48,"value":375},{"type":42,"tag":76,"props":6559,"children":6560},{"style":166},[6561],{"type":48,"value":380},{"type":42,"tag":76,"props":6563,"children":6564},{"style":99},[6565],{"type":48,"value":2193},{"type":42,"tag":76,"props":6567,"children":6568},{"style":166},[6569],{"type":48,"value":1995},{"type":42,"tag":76,"props":6571,"children":6572},{"style":172},[6573],{"type":48,"value":367},{"type":42,"tag":76,"props":6575,"children":6576},{"class":78,"line":1273},[6577,6581,6585,6590],{"type":42,"tag":76,"props":6578,"children":6579},{"style":99},[6580],{"type":48,"value":2209},{"type":42,"tag":76,"props":6582,"children":6583},{"style":166},[6584],{"type":48,"value":190},{"type":42,"tag":76,"props":6586,"children":6587},{"style":99},[6588],{"type":48,"value":6589},"{\"name\": \"my-app\", \"target\": \"production\"}",{"type":42,"tag":76,"props":6591,"children":6592},{"style":166},[6593],{"type":48,"value":200},{"type":42,"tag":416,"props":6595,"children":6597},{"id":6596},"oauth-integration-flow",[6598],{"type":48,"value":6599},"OAuth Integration Flow",{"type":42,"tag":6601,"props":6602,"children":6603},"ol",{},[6604,6616,6621,6632,6643],{"type":42,"tag":6605,"props":6606,"children":6607},"li",{},[6608,6610],{"type":48,"value":6609},"Redirect user to ",{"type":42,"tag":72,"props":6611,"children":6613},{"className":6612},[],[6614],{"type":48,"value":6615},"$VERCEL_EMULATOR_URL\u002Foauth\u002Fauthorize?client_id=...&redirect_uri=...&state=...",{"type":42,"tag":6605,"props":6617,"children":6618},{},[6619],{"type":48,"value":6620},"User picks a seeded user on the emulator's UI",{"type":42,"tag":6605,"props":6622,"children":6623},{},[6624,6626],{"type":48,"value":6625},"Emulator redirects back with ",{"type":42,"tag":72,"props":6627,"children":6629},{"className":6628},[],[6630],{"type":48,"value":6631},"?code=...&state=...",{"type":42,"tag":6605,"props":6633,"children":6634},{},[6635,6637],{"type":48,"value":6636},"Exchange code for token via ",{"type":42,"tag":72,"props":6638,"children":6640},{"className":6639},[],[6641],{"type":48,"value":6642},"POST \u002Flogin\u002Foauth\u002Ftoken",{"type":42,"tag":6605,"props":6644,"children":6645},{},[6646,6648],{"type":48,"value":6647},"Fetch user info via ",{"type":42,"tag":72,"props":6649,"children":6651},{"className":6650},[],[6652],{"type":48,"value":6653},"GET \u002Flogin\u002Foauth\u002Fuserinfo",{"type":42,"tag":51,"props":6655,"children":6656},{},[6657,6659,6665,6667,6673,6675,6681],{"type":48,"value":6658},"PKCE is supported. Pass ",{"type":42,"tag":72,"props":6660,"children":6662},{"className":6661},[],[6663],{"type":48,"value":6664},"code_challenge",{"type":48,"value":6666}," and ",{"type":42,"tag":72,"props":6668,"children":6670},{"className":6669},[],[6671],{"type":48,"value":6672},"code_challenge_method",{"type":48,"value":6674}," on authorize, then ",{"type":42,"tag":72,"props":6676,"children":6678},{"className":6677},[],[6679],{"type":48,"value":6680},"code_verifier",{"type":48,"value":6682}," on token exchange.",{"type":42,"tag":416,"props":6684,"children":6686},{"id":6685},"team-scoped-requests",[6687],{"type":48,"value":6688},"Team-Scoped Requests",{"type":42,"tag":51,"props":6690,"children":6691},{},[6692,6694,6699,6700,6705],{"type":48,"value":6693},"All endpoints accept ",{"type":42,"tag":72,"props":6695,"children":6697},{"className":6696},[],[6698],{"type":48,"value":332},{"type":48,"value":334},{"type":42,"tag":72,"props":6701,"children":6703},{"className":6702},[],[6704],{"type":48,"value":340},{"type":48,"value":6706}," query params:",{"type":42,"tag":64,"props":6708,"children":6710},{"className":66,"code":6709,"language":68,"meta":69,"style":69},"curl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?teamId=team_abc123\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\ncurl \"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?slug=my-team\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n",[6711],{"type":42,"tag":72,"props":6712,"children":6713},{"__ignoreMap":69},[6714,6738,6761,6768,6792],{"type":42,"tag":76,"props":6715,"children":6716},{"class":78,"line":79},[6717,6721,6725,6730,6734],{"type":42,"tag":76,"props":6718,"children":6719},{"style":93},[6720],{"type":48,"value":357},{"type":42,"tag":76,"props":6722,"children":6723},{"style":166},[6724],{"type":48,"value":380},{"type":42,"tag":76,"props":6726,"children":6727},{"style":99},[6728],{"type":48,"value":6729},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?teamId=team_abc123",{"type":42,"tag":76,"props":6731,"children":6732},{"style":166},[6733],{"type":48,"value":1995},{"type":42,"tag":76,"props":6735,"children":6736},{"style":172},[6737],{"type":48,"value":367},{"type":42,"tag":76,"props":6739,"children":6740},{"class":78,"line":89},[6741,6745,6749,6753,6757],{"type":42,"tag":76,"props":6742,"children":6743},{"style":99},[6744],{"type":48,"value":375},{"type":42,"tag":76,"props":6746,"children":6747},{"style":166},[6748],{"type":48,"value":380},{"type":42,"tag":76,"props":6750,"children":6751},{"style":99},[6752],{"type":48,"value":2015},{"type":42,"tag":76,"props":6754,"children":6755},{"style":172},[6756],{"type":48,"value":2020},{"type":42,"tag":76,"props":6758,"children":6759},{"style":166},[6760],{"type":48,"value":390},{"type":42,"tag":76,"props":6762,"children":6763},{"class":78,"line":115},[6764],{"type":42,"tag":76,"props":6765,"children":6766},{"emptyLinePlaceholder":119},[6767],{"type":48,"value":122},{"type":42,"tag":76,"props":6769,"children":6770},{"class":78,"line":125},[6771,6775,6779,6784,6788],{"type":42,"tag":76,"props":6772,"children":6773},{"style":93},[6774],{"type":48,"value":357},{"type":42,"tag":76,"props":6776,"children":6777},{"style":166},[6778],{"type":48,"value":380},{"type":42,"tag":76,"props":6780,"children":6781},{"style":99},[6782],{"type":48,"value":6783},"http:\u002F\u002Flocalhost:4000\u002Fv10\u002Fprojects?slug=my-team",{"type":42,"tag":76,"props":6785,"children":6786},{"style":166},[6787],{"type":48,"value":1995},{"type":42,"tag":76,"props":6789,"children":6790},{"style":172},[6791],{"type":48,"value":367},{"type":42,"tag":76,"props":6793,"children":6794},{"class":78,"line":134},[6795,6799,6803,6807,6811],{"type":42,"tag":76,"props":6796,"children":6797},{"style":99},[6798],{"type":48,"value":375},{"type":42,"tag":76,"props":6800,"children":6801},{"style":166},[6802],{"type":48,"value":380},{"type":42,"tag":76,"props":6804,"children":6805},{"style":99},[6806],{"type":48,"value":2015},{"type":42,"tag":76,"props":6808,"children":6809},{"style":172},[6810],{"type":48,"value":2020},{"type":42,"tag":76,"props":6812,"children":6813},{"style":166},[6814],{"type":48,"value":390},{"type":42,"tag":6816,"props":6817,"children":6818},"style",{},[6819],{"type":48,"value":6820},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6822,"total":1035},[6823,6835,6849,6872,6882,6904,6914],{"slug":6824,"name":6824,"fn":6825,"description":6826,"org":6827,"tags":6828,"stars":24,"repoUrl":25,"updatedAt":6834},"apple","emulate Apple Sign-in for local development","Emulated Sign in with Apple \u002F Apple OIDC for local development and testing. Use when the user needs to test Apple sign-in locally, emulate Apple OIDC discovery, handle Apple token exchange, configure Apple OAuth clients, or work with Apple userinfo without hitting real Apple APIs. Triggers include \"Apple OAuth\", \"emulate Apple\", \"mock Apple login\", \"test Apple sign-in\", \"Sign in with Apple\", \"Apple OIDC\", \"local Apple auth\", or any task requiring a local Apple OAuth\u002FOIDC provider.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6829,6831,6832,6833],{"name":6830,"slug":6824,"type":14},"Apple",{"name":313,"slug":310,"type":14},{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},"2026-07-17T06:08:52.141606",{"slug":6836,"name":6836,"fn":6837,"description":6838,"org":6839,"tags":6840,"stars":24,"repoUrl":25,"updatedAt":6848},"aws","emulate AWS cloud services locally","Emulated AWS cloud services (S3, SQS, IAM, STS) for local development and testing. Use when the user needs to interact with AWS API endpoints locally, test S3 bucket and object operations, emulate SQS queues and messages, manage IAM users\u002Froles\u002Faccess keys, test STS assume role, or work without hitting real AWS APIs. Triggers include \"AWS emulator\", \"emulate AWS\", \"mock S3\", \"local SQS\", \"test IAM\", \"emulate S3\", \"AWS locally\", \"STS assume role\", or any task requiring local AWS service emulation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6841,6843,6846,6847],{"name":6842,"slug":6836,"type":14},"AWS",{"name":6844,"slug":6845,"type":14},"Cloud","cloud",{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},"2026-07-17T06:08:52.818809",{"slug":195,"name":195,"fn":6850,"description":6851,"org":6852,"tags":6853,"stars":24,"repoUrl":25,"updatedAt":6871},"emulate developer APIs for local testing","Local drop-in API emulator for Vercel, GitHub, Google, Slack, Apple, Microsoft, AWS, Linear, and other developer APIs. Use when the user needs to start emulated services, configure seed data, write tests against local APIs, set up CI without network access, or work with the emulate CLI or programmatic API. Triggers include \"start the emulator\", \"emulate services\", \"mock API locally\", \"create emulator config\", \"test against local API\", \"npx emulate\", or any task requiring local service emulation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6854,6855,6856,6857,6860,6863,6864,6867,6870],{"name":19,"slug":20,"type":14},{"name":6830,"slug":6824,"type":14},{"name":6842,"slug":6836,"type":14},{"name":6858,"slug":6859,"type":14},"GitHub","github",{"name":6861,"slug":6862,"type":14},"Linear","linear",{"name":16,"slug":17,"type":14},{"name":6865,"slug":6866,"type":14},"Microsoft","microsoft",{"name":6868,"slug":6869,"type":14},"Slack","slack",{"name":22,"slug":23,"type":14},"2026-07-17T06:08:59.816303",{"slug":6859,"name":6859,"fn":6873,"description":6874,"org":6875,"tags":6876,"stars":24,"repoUrl":25,"updatedAt":6881},"emulate GitHub API for local development","Emulated GitHub REST API for local development and testing. Use when the user needs to interact with GitHub API endpoints locally, test GitHub integrations, emulate repos\u002Fissues\u002FPRs, set up GitHub OAuth flows, configure GitHub Apps, test webhooks, or work with actions\u002Fchecks without hitting the real GitHub API. Triggers include \"GitHub API\", \"emulate GitHub\", \"mock GitHub\", \"test GitHub OAuth\", \"GitHub App JWT\", \"local GitHub\", or any task requiring a local GitHub API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6877,6878,6879,6880],{"name":19,"slug":20,"type":14},{"name":6858,"slug":6859,"type":14},{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},"2026-07-17T06:05:55.104585",{"slug":6883,"name":6883,"fn":6884,"description":6885,"org":6886,"tags":6887,"stars":24,"repoUrl":25,"updatedAt":6903},"google","emulate Google services for local development","Emulated Google OAuth 2.0, OpenID Connect, Gmail, Calendar, and Drive for local development and testing. Use when the user needs to test Google sign-in locally, emulate OIDC discovery, handle Google token exchange, configure Google OAuth clients, work with Gmail messages\u002Fdrafts\u002Fthreads\u002Flabels, manage Calendar events, upload or list Drive files, or work with Google userinfo without hitting real Google APIs. Triggers include \"Google OAuth\", \"emulate Google\", \"mock Google login\", \"test Google sign-in\", \"OIDC emulator\", \"Google OIDC\", \"Gmail API\", \"Google Calendar\", \"Google Drive\", \"local Google auth\", or any task requiring a local Google API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6888,6889,6892,6894,6897,6900,6901],{"name":313,"slug":310,"type":14},{"name":6890,"slug":6891,"type":14},"Gmail","gmail",{"name":6893,"slug":6883,"type":14},"Google",{"name":6895,"slug":6896,"type":14},"Google Calendar","google-calendar",{"name":6898,"slug":6899,"type":14},"Google Drive","google-drive",{"name":16,"slug":17,"type":14},{"name":6902,"slug":848,"type":14},"OAuth","2026-07-17T06:08:59.475325",{"slug":6862,"name":6862,"fn":6905,"description":6906,"org":6907,"tags":6908,"stars":24,"repoUrl":25,"updatedAt":6913},"emulate Linear API for local development","Emulated Linear GraphQL API for local development and testing. Use when the user needs to test Linear integrations locally, emulate Linear issues, comments, teams, workflow states, OAuth apps, webhooks, agent sessions, or work with the Linear API without hitting the real Linear service. Triggers include \"Linear API\", \"emulate Linear\", \"mock Linear\", \"test Linear OAuth\", \"Linear webhook\", \"Linear agent\", \"local Linear\", or any task requiring a local Linear API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6909,6910,6911,6912],{"name":19,"slug":20,"type":14},{"name":6861,"slug":6862,"type":14},{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},"2026-07-17T06:04:11.495374",{"slug":6866,"name":6866,"fn":6915,"description":6916,"org":6917,"tags":6918,"stars":24,"repoUrl":25,"updatedAt":6923},"emulate Microsoft Entra ID for local development","Emulated Microsoft Entra ID (Azure AD) OAuth 2.0 \u002F OpenID Connect for local development and testing. Use when the user needs to test Microsoft sign-in locally, emulate Entra ID OIDC discovery, handle Microsoft token exchange, configure Azure AD OAuth clients, work with Microsoft Graph \u002Fme, or test PKCE\u002Fclient credentials flows without hitting real Microsoft APIs. Triggers include \"Microsoft OAuth\", \"Entra ID\", \"Azure AD\", \"emulate Microsoft\", \"mock Microsoft login\", \"test Microsoft sign-in\", \"Microsoft OIDC\", \"local Microsoft auth\", or any task requiring a local Microsoft OAuth\u002FOIDC provider.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6919,6920,6921,6922],{"name":313,"slug":310,"type":14},{"name":16,"slug":17,"type":14},{"name":6865,"slug":6866,"type":14},{"name":6902,"slug":848,"type":14},"2026-07-17T06:08:55.822349",{"items":6925,"total":7087},[6926,6944,6954,6966,6979,6994,7006,7017,7028,7041,7053,7072],{"slug":6927,"name":6927,"fn":6928,"description":6929,"org":6930,"tags":6931,"stars":6941,"repoUrl":6942,"updatedAt":6943},"agent-browser","automate browser interactions for AI agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6932,6935,6938],{"name":6933,"slug":6934,"type":14},"Agents","agents",{"name":6936,"slug":6937,"type":14},"Automation","automation",{"name":6939,"slug":6940,"type":14},"Browser Automation","browser-automation",38346,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser","2026-07-20T05:55:17.314329",{"slug":6945,"name":6945,"fn":6946,"description":6947,"org":6948,"tags":6949,"stars":6941,"repoUrl":6942,"updatedAt":6953},"agentcore","run browser automation on AWS Bedrock","Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include \"use agentcore\", \"run on AWS\", \"cloud browser with AWS\", \"bedrock browser\", \"agentcore session\", or any task requiring AWS-hosted browser automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6950,6951,6952],{"name":6936,"slug":6937,"type":14},{"name":6842,"slug":6836,"type":14},{"name":6939,"slug":6940,"type":14},"2026-07-17T06:08:33.665276",{"slug":6955,"name":6955,"fn":6956,"description":6957,"org":6958,"tags":6959,"stars":6941,"repoUrl":6942,"updatedAt":6965},"core","navigate and interact with web pages","Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6960,6961,6962],{"name":6933,"slug":6934,"type":14},{"name":6939,"slug":6940,"type":14},{"name":6963,"slug":6964,"type":14},"Navigation","navigation","2026-07-26T05:47:42.378419",{"slug":6967,"name":6967,"fn":6968,"description":6969,"org":6970,"tags":6971,"stars":6941,"repoUrl":6942,"updatedAt":6978},"derive-client","reverse engineer internal APIs from browser traffic","Reverse-engineer a website's internal API by recording browser traffic into a HAR file, then generate a standalone client or CLI that calls the endpoints directly, with no browser needed after the first recording. Use when asked to \"derive a client\", \"build a CLI for \u003Csite>\", \"reverse engineer this site's API\", \"record network requests\", \"turn this site into an API\", or when the same site will be automated repeatedly and direct HTTP calls would beat driving the browser every time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6972,6973,6974,6975],{"name":19,"slug":20,"type":14},{"name":6936,"slug":6937,"type":14},{"name":6939,"slug":6940,"type":14},{"name":6976,"slug":6977,"type":14},"Web Scraping","web-scraping","2026-07-20T06:24:11.928835",{"slug":6980,"name":6980,"fn":6981,"description":6982,"org":6983,"tags":6984,"stars":6941,"repoUrl":6942,"updatedAt":6993},"dogfood","perform exploratory testing on web applications","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6985,6986,6989,6992],{"name":6939,"slug":6940,"type":14},{"name":6987,"slug":6988,"type":14},"Debugging","debugging",{"name":6990,"slug":6991,"type":14},"QA","qa",{"name":22,"slug":23,"type":14},"2026-07-17T06:07:41.421482",{"slug":6995,"name":6995,"fn":6996,"description":6997,"org":6998,"tags":6999,"stars":6941,"repoUrl":6942,"updatedAt":7005},"electron","automate Electron desktop applications","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7000,7001,7002],{"name":6933,"slug":6934,"type":14},{"name":6939,"slug":6940,"type":14},{"name":7003,"slug":7004,"type":14},"Desktop","desktop","2026-07-17T06:08:28.007783",{"slug":6869,"name":6869,"fn":7007,"description":7008,"org":7009,"tags":7010,"stars":6941,"repoUrl":6942,"updatedAt":7016},"interact with Slack workspaces","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7011,7012,7015],{"name":6939,"slug":6940,"type":14},{"name":7013,"slug":7014,"type":14},"Messaging","messaging",{"name":6868,"slug":6869,"type":14},"2026-07-17T06:08:27.679015",{"slug":7018,"name":7018,"fn":7019,"description":7020,"org":7021,"tags":7022,"stars":6941,"repoUrl":6942,"updatedAt":7027},"vercel-sandbox","run browser automation in Vercel Sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7023,7024,7025,7026],{"name":6936,"slug":6937,"type":14},{"name":6939,"slug":6940,"type":14},{"name":22,"slug":23,"type":14},{"name":13,"slug":4,"type":14},"2026-07-17T06:08:28.349899",{"slug":7029,"name":7029,"fn":7030,"description":7031,"org":7032,"tags":7033,"stars":7038,"repoUrl":7039,"updatedAt":7040},"deploy-to-vercel","deploy applications to Vercel","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7034,7037],{"name":7035,"slug":7036,"type":14},"Deployment","deployment",{"name":13,"slug":4,"type":14},28993,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills","2026-07-17T06:08:41.18374",{"slug":7042,"name":7042,"fn":7043,"description":7044,"org":7045,"tags":7046,"stars":7038,"repoUrl":7039,"updatedAt":7052},"vercel-cli-with-tokens","manage Vercel projects via CLI","Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7047,7050,7051],{"name":7048,"slug":7049,"type":14},"CLI","cli",{"name":7035,"slug":7036,"type":14},{"name":13,"slug":4,"type":14},"2026-07-17T06:08:41.84179",{"slug":7054,"name":7054,"fn":7055,"description":7056,"org":7057,"tags":7058,"stars":7038,"repoUrl":7039,"updatedAt":7071},"vercel-composition-patterns","implement scalable React composition patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7059,7062,7065,7068],{"name":7060,"slug":7061,"type":14},"Best Practices","best-practices",{"name":7063,"slug":7064,"type":14},"Frontend","frontend",{"name":7066,"slug":7067,"type":14},"React","react",{"name":7069,"slug":7070,"type":14},"UI Components","ui-components","2026-07-17T06:05:40.576913",{"slug":7073,"name":7073,"fn":7074,"description":7075,"org":7076,"tags":7077,"stars":7038,"repoUrl":7039,"updatedAt":7086},"vercel-optimize","optimize Vercel project performance and costs","Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel\u002Fframework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7078,7081,7082,7085],{"name":7079,"slug":7080,"type":14},"Cost Optimization","cost-optimization",{"name":7035,"slug":7036,"type":14},{"name":7083,"slug":7084,"type":14},"Performance","performance",{"name":13,"slug":4,"type":14},"2026-07-17T06:04:08.327515",100]