---
title: "API reference"
description: "Every Overlane HTTP endpoint at the current API version, with its method, path, access and SDK method. Generated from the OpenAPI document the API serves."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.overlane.app/llms.txt
> Use this file to discover all available pages before exploring further.

# API reference

{/* Generated by apps/docs/scripts/generate.mjs (API page from the served OpenAPI document). Do not edit; run `pnpm --filter @overlane/docs gen`. */}

API version 2026-10-10, 460 operations. This page is generated from the OpenAPI 3.1 document the API serves, so it lists every operation. Read the document itself, with every request and response schema, from `GET /v1/openapi.json` or with `overlane api openapi --full --json`; the [SDK reference](/sdk/) shows the typed method for each operation. Send `Authorization: Bearer <token>`, and pin a version with the `Overlane-Version` header (see [API versions](/developers/versions/)). Every tenant path carries the team ID.

Each endpoint is one operation. A few public endpoints are not operations of the document: see [Endpoints outside the SDK](/developers/outside-the-sdk/).

Access is the token scope the call needs: Read, Write, or No token for a public route. A call marked "a person" is refused for an agent token.

## Try it

This sample runs in the docs tests against the real contracts:

```js run
const body = CreateProjectRequest.parse({ repository: { host: "github.com", owner: "acme", name: "app" }, name: "App" });
assert.equal(apiPaths.project("t1", "p1"), "/v1/tenants/t1/projects/p1");
assert.equal(body.repository.owner, "acme");
```

## Agent

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/agent/approvals/{approvalId}` | Read an agent approval card | Read, a person | `agentApprovalGet` |
| `GET /v1/tenants/{tenantId}/agent/audit` | The Overlane Agent's audit trail | Write, a person | `agentAudit` |
| `GET /v1/tenants/{tenantId}/agent/config` | The Overlane Agent's configuration for the team | Read, a person | `agentConfig` |
| `GET /v1/tenants/{tenantId}/agent/conversations/{conversationId}` | Read an agent conversation | Read, a person | `agentConversation` |
| `POST /v1/tenants/{tenantId}/agent/approvals/{approvalId}/decide` | Approve or deny an agent action | Write, a person | `agentApprovalDecide` |
| `POST /v1/tenants/{tenantId}/agent/approvals/{approvalId}/undo` | Undo an approved agent action | Write, a person | `agentApprovalUndo` |
| `POST /v1/tenants/{tenantId}/agent/chat` | Send the Overlane Agent a message | Read, a person | `agentChat` |
| `POST /v1/tenants/{tenantId}/agent/feedback` | Rate an agent answer | Read, a person | `agentFeedback` |
| `PUT /v1/tenants/{tenantId}/agent/readonly` | Turn the Overlane Agent's read-only mode on or off | Write, a person | `agentReadonly` |

## API keys

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/api-keys/{apiKeyId}` | Revoke an API key; the next call with it fails (secrets class) | Write | `apikeysRevoke` |
| `GET /v1/tenants/{tenantId}/api-keys` | List the team's API keys; a key shows its prefix, never the secret | Write | `apikeysList` |
| `POST /v1/tenants/{tenantId}/api-keys` | Create an API key; the secret is shown once (secrets class) | Write | `apikeysCreate` |
| `POST /v1/tenants/{tenantId}/api-keys/{apiKeyId}/rotate` | Rotate an API key: a new key with the same settings, the old one revoked (secrets class) | Write | `apikeysRotate` |

## Approvals

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/approvals` | List a project's task approvals | Read | `approvalsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/approvals/{approvalId}` | Read one task approval | Read | `approvalsGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/approvals/{approvalId}/answer` | Answer a task approval | Write | `approvalsAnswer` |

## Audit

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/audit` | The team's audit log | Write | `auditList` |
| `GET /v1/tenants/{tenantId}/audit/export` | Export the audit log | Write | `auditExport` |
| `GET /v1/tenants/{tenantId}/audit/verify` | Verify the audit log's hash chain | Write | `auditVerify` |

## Auth

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `POST /v1/auth/logout` | End the CLI session that makes the call | Read | `authLogout` |
| `POST /v1/auth/switch` | Act in another team you belong to (a person does this) | Read, a person | `authSwitch` |

## Autonomy

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/autonomy` | The team's autonomy mode, its overrides and what each action class asks for | Read | `autonomyGet` |
| `GET /v1/tenants/{tenantId}/autonomy/approvals` | Approvals, with who asked, who answered, the evidence and the reason | Read | `autonomyApprovalsList` |
| `GET /v1/tenants/{tenantId}/autonomy/approvals/{approvalId}` | Read one approval | Read | `autonomyApprovalsGet` |
| `POST /v1/tenants/{tenantId}/autonomy/approvals` | Ask an independent agent or a person to approve an action in an action class | Write | `autonomyApprovalsCreate` |
| `POST /v1/tenants/{tenantId}/autonomy/approvals/{approvalId}/answer` | Approve or deny; an agent lists the evidence it checked and why, and cannot answer its own request | Write | `autonomyApprovalsAnswer` |
| `PUT /v1/tenants/{tenantId}/autonomy` | Change the autonomy mode (a safety class: an agent needs an independent approval) | Write | `autonomyPut` |

## Billing

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/billing/caps` | Remove a spending cap | Write, a person | `billingCapsDelete` |
| `GET /v1/tenants/{tenantId}/billing` | Plan, seats and billing state | Read | `billingStatus` |
| `GET /v1/tenants/{tenantId}/billing/caps` | Spending caps | Read | `billingCapsGet` |
| `GET /v1/tenants/{tenantId}/billing/invoices` | Invoices | Read | `billingInvoices` |
| `GET /v1/tenants/{tenantId}/billing/limits` | Plan limits and what is left | Read | `billingLimits` |
| `GET /v1/tenants/{tenantId}/billing/pool` | What is left of the pooled allowance and each member's fair share of it | Read | `billingPool` |
| `GET /v1/tenants/{tenantId}/billing/usage` | Metered usage | Read | `billingUsageGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/billing/usage` | What one project used this period, per meter, for a token limited to that project | Read | `billingProjectUsage` |
| `POST /v1/tenants/{tenantId}/billing/cancel` | Cancel the subscription (a person does this: payments are human only) | Write, a person | `billingCancel` |
| `POST /v1/tenants/{tenantId}/billing/checkout` | Start a checkout (a person does this: payments are human only) | Write, a person | `billingCheckout` |
| `POST /v1/tenants/{tenantId}/billing/plan` | Change plan (a person does this: payments are human only) | Write, a person | `billingPlan` |
| `POST /v1/tenants/{tenantId}/billing/portal` | Open the billing portal (a person does this: payments are human only) | Write, a person | `billingPortal` |
| `POST /v1/tenants/{tenantId}/billing/seats` | Change seats (a person does this: payments are human only) | Write, a person | `billingSeats` |
| `POST /v1/tenants/{tenantId}/billing/usage` | Record metered usage | Write | `billingUsageRecord` |
| `POST /v1/tenants/{tenantId}/billing/usage/decision` | Whether metered use may go ahead | Read | `billingUsageDecision` |
| `PUT /v1/tenants/{tenantId}/billing/caps` | Set a spending cap (spend class) | Write, a person | `billingCapsPut` |

## Bots

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/bots/{botId}` | Revoke a bot | Write | `botsRevoke` |
| `GET /v1/tenants/{tenantId}/bots` | List registered bots | Read | `botsList` |
| `POST /v1/tenants/{tenantId}/bots` | Register a bot; the signing secret is shown once | Write | `botsCreate` |
| `POST /v1/tenants/{tenantId}/bots/{botId}/redeliver` | Send a bot's pending events again, in order | Write | `botsRedeliver` |
| `POST /v1/tenants/{tenantId}/bots/{botId}/rotate-key` | Rotate a bot's signing secret; shown once | Write | `botsRotate` |
| `POST /v1/tenants/{tenantId}/bots/{botId}/users` | Link a bot's user to a team member, so the project assistant answers them with that member's role (policy class) | Write | `botsUsersMap` |

## Budgets

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/budgets` | Remove a budget limit | Write | `budgetsDelete` |
| `GET /v1/tenants/{tenantId}/budgets` | The team's run budgets and what is spent | Read | `budgetsGet` |
| `GET /v1/tenants/{tenantId}/budgets/stops` | Stop records written when a budget refused a call | Read | `budgetsStops` |
| `POST /v1/tenants/{tenantId}/budgets/check` | Ask whether a spend may go ahead; a refusal stores a stop record | Write | `budgetsCheck` |
| `POST /v1/tenants/{tenantId}/budgets/spend` | Record spend against the budgets | Write | `budgetsSpend` |
| `PUT /v1/tenants/{tenantId}/budgets` | Set a budget limit (spend class when it raises a limit) | Write | `budgetsPut` |

## CI

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/ci/secrets/{secretId}` | Delete a CI secret (secrets class) | Write | `ciSecretsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/channels` | Release channels: the build each channel runs, holds, the schedule setting and recent promotions | Read | `ciChannelsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/checks` | The project's check registry | Read | `ciChecksList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/checks/{checkId}` | One registered check and its definition digest | Read | `ciChecksGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/runs` | List CI runs | Read | `ciRunsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/runs/{runId}` | Read one CI run | Read | `ciRunGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/runs/{runId}/logs` | A CI run's logs, with secrets masked | Read | `ciRunLogs` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/runs/{runId}/receipts` | A CI run's check receipts: commit, source fingerprint, definition digest, outcome, and whether the service signed it | Read | `ciRunReceipts` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/schedules` | List a project's scheduled pipelines with the next time each runs | Read | `ciSchedulesList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/secrets` | List a project's CI secrets by name, never their values | Read | `ciSecretsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/settings` | Read a project's CI settings | Read | `ciSettingsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/ci/usage` | CI minutes used this period | Read | `ciUsage` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/{channel}/hold` | Hold a channel: no build is promoted into it until the hold is released | Write | `ciChannelsHold` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/{channel}/promote` | Promote the newest build that passes the channel's gates now; refused with the failed gates | Write | `ciChannelsPromote` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/{channel}/release-hold` | Release a channel's hold | Write | `ciChannelsReleaseHold` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/{channel}/rollback` | Put the build a channel ran before back on it and hold the channel | Write | `ciChannelsRollback` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/release` | Start a release now: bring in the latest main, then verify and deploy what changed since the last release | Write | `ciReleaseStart` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/runs` | Start a CI run | Write | `ciRunsStart` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/runs/{runId}/cancel` | Cancel a CI run | Write | `ciRunCancel` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/runs/{runId}/rerun` | Run a CI run again | Write | `ciRunRerun` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/ci/validate` | Validate a workflow file | Read | `ciValidate` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/preset` | Apply a channel preset to the project: set each channel's name, image tag, deploy environment and data choice | Write | `ciChannelsPresetPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/ci/channels/settings` | Switch scheduled channel promotions on or off; while off, the schedule records what it would promote and changes nothing | Write | `ciChannelsSettingsPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/ci/checks/{checkId}` | Register or replace a check definition (policy class); evidence under an older definition stops counting | Write | `ciChecksPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/ci/secrets` | Set a CI secret (secrets class) | Write | `ciSecretsPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/ci/settings` | Change a project's CI settings (spend class) | Write | `ciSettingsPut` |

## Claims

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims` | List claims on paths in a project | Read | `claimsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims/merge-checks` | List recorded merge-tree checks between branches | Read | `claimsChecksList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims/merge-checks/pending` | Branch pairs that still need a merge-tree check | Read | `claimsChecksPending` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims/settings` | Read a project's claim settings | Read | `claimsSettingsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims/{claimId}` | Read one claim | Read | `claimsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/claims/{claimId}/readiness` | Whether a claim's branch is ready to merge | Read | `claimsReadiness` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/claims` | Claim paths for a task so parallel agents do not collide | Write | `claimsAcquire` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/claims/merge-checks` | Record a merge-tree check between two branches | Write | `claimsChecksRecord` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/claims/merge-checks/run` | Run a merge-tree check between two branches | Write | `claimsChecksRun` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/claims/{claimId}/release` | Release a claim | Write | `claimsRelease` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/claims/{claimId}/renew` | Renew a claim before it lapses | Write | `claimsRenew` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/claims/settings` | Change a project's claim settings | Write | `claimsSettingsPut` |

## Code

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/snapshots` | Upload and manage code index snapshots by project | Write | `codeProjectUploadDelete` |
| `DELETE /v1/tenants/{tenantId}/repos/{owner}/{repo}/snapshots` | Upload and manage code index snapshots by repository | Write | `codeUploadDelete` |
| `GET /v1/tenants/{tenantId}/code/links` | Whether code lookups follow links into the team's other repositories (on by default) | Read | `codeLinksGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/code/{tool}` | Query the code index by project | Read | `codeProjectQueryGet` |
| `GET /v1/tenants/{tenantId}/repos/{owner}/{repo}/code/{tool}` | Query the code index by repository (find_symbol, trace_calls and the other tools) | Read | `codeQueryGet` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/snapshots` | Upload and manage code index snapshots by project | Write | `codeProjectUploadPatch` |
| `PATCH /v1/tenants/{tenantId}/repos/{owner}/{repo}/snapshots` | Upload and manage code index snapshots by repository | Write | `codeUploadPatch` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/code/{tool}` | Query the code index by project | Read | `codeProjectQueryPost` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/snapshots` | Upload and manage code index snapshots by project | Write | `codeProjectUploadPost` |
| `POST /v1/tenants/{tenantId}/repos/{owner}/{repo}/code/{tool}` | Query the code index by repository (find_symbol, trace_calls and the other tools) | Read | `codeQueryPost` |
| `POST /v1/tenants/{tenantId}/repos/{owner}/{repo}/snapshots` | Upload and manage code index snapshots by repository | Write | `codeUploadPost` |
| `PUT /v1/tenants/{tenantId}/code/links` | Turn links between the team's repositories on or off for code lookups; a caller sees linked code only from repositories it can read | Write | `codeLinksPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/snapshots` | Upload and manage code index snapshots by project | Write | `codeProjectUploadPut` |
| `PUT /v1/tenants/{tenantId}/repos/{owner}/{repo}/snapshots` | Upload and manage code index snapshots by repository | Write | `codeUploadPut` |

## Code map

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/code-map/status` | Code map status for a project | Read | `codemapStatus` |

## Connectors

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/connectors/connections/{connectionId}` | Revoke a connection and delete its stored secret (secrets class) | Write | `connectorsRevoke` |
| `DELETE /v1/tenants/{tenantId}/connectors/mcp/servers/{serverId}` | Remove a passthrough MCP server (policy class) | Write | `connectorsMcpRemove` |
| `GET /v1/tenants/{tenantId}/connectors` | The connectors Overlane offers, each with its auth, scopes, typed actions and events | Read | `connectorsList` |
| `GET /v1/tenants/{tenantId}/connectors/connections` | The team's connections; a connection shows its vault entry, never the secret | Read | `connectorsConnectionsList` |
| `GET /v1/tenants/{tenantId}/connectors/mcp/servers` | The team's allowlisted passthrough MCP servers | Read | `connectorsMcpList` |
| `GET /v1/tenants/{tenantId}/connectors/{connectorId}` | One connector's declaration | Read | `connectorsShow` |
| `GET /v1/tenants/{tenantId}/connectors/{provider}/events` | Verified inbound events from a connector, each labelled as data | Read | `connectorsEvents` |
| `POST /v1/tenants/{tenantId}/connectors/connections` | Store a connector credential in the tenant vault (secrets class) | Write | `connectorsConnect` |
| `POST /v1/tenants/{tenantId}/connectors/mcp/servers` | Allow a passthrough MCP server (https, public DNS name; policy class) | Write | `connectorsMcpAdd` |
| `POST /v1/tenants/{tenantId}/connectors/{provider}/actions/{action}` | Run a connector action; a write or destructive action follows the autonomy class it declares | Write | `connectorsAction` |
| `POST /v1/tenants/{tenantId}/connectors/{provider}/approvals` | Post an approval request to a chat connector's channel | Write | `connectorsApprovalsRequest` |
| `POST /v1/tenants/{tenantId}/connectors/{provider}/chat-users` | Map a chat user to a team member who may answer approvals there (policy class) | Write | `connectorsChatUsersMap` |
| `POST /v1/tenants/{tenantId}/connectors/{provider}/chat-users/link` | Link the signed-in member to a chat account with the code the assistant showed there | Write, a person | `connectorsChatUsersLink` |
| `POST /v1/tenants/{tenantId}/connectors/{provider}/oauth/start` | Start connecting a provider by signing in with it; the answer is the URL to open (secrets class) | Write | `connectorsOauthStart` |

## Cycles

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/cycles/{cycleId}` | Delete a cycle: it is archived and can be restored for 30 days, then removed; refused while issues use it | Write | `cyclesDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/cycles` | List cycles; archived=true lists the archived ones that can still be restored | Read | `cyclesList` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/cycles/{cycleId}` | Rename a cycle or move its dates | Write | `cyclesUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/cycles` | Create a cycle | Write | `cyclesCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/cycles/{cycleId}/archive` | Archive a cycle; refused while issues use it | Write | `cyclesArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/cycles/{cycleId}/restore` | Restore an archived cycle within 30 days | Write | `cyclesRestore` |

## Decision

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/decision/settings` | Decision model settings | Read | `decisionSettingsGet` |
| `PUT /v1/tenants/{tenantId}/decision/settings/{use}` | Change a decision model use | Write | `decisionSettingsPut` |

## Deploy

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/deploy/environments/{environmentId}/secrets/{name}` | Delete an environment secret (secrets class) | Write | `deployEnvironmentsSecretDelete` |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/deploy/targets/{target}` | Remove a deploy target and its stored token (deletion class). Refused with target_in_use while an environment deploys to it | Write | `deployTargetsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/deploy/environments` | List deploy environments | Read | `deployEnvironmentsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/deploy/providers` | List the deploy services this project can use, whether each is available, and prices for hosting on Overlane | Read | `deployProvidersList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/deploy/releases` | List deploys | Read | `deployReleasesList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/deploy/targets` | List deploy targets | Read | `deployTargetsList` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/deploy/targets/{target}` | Rename a deploy target, change its settings or replace its provider token (secrets class). The kind never changes; the token is write-only | Write | `deployTargetsUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/deploy/environments` | Create a deploy environment (policy class) | Write | `deployEnvironmentsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/deploy/environments/{environmentId}/rollback` | Roll an environment back to its previous release | Write | `deployEnvironmentsRollback` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/deploy/previews` | Deploy a branch preview | Write | `deployPreviewsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/deploy/releases` | Deploy a built artifact to an environment | Write | `deployReleasesCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/deploy/targets` | Add a deploy target (secrets class). The provider token is write-only; a target hosted on Overlane takes none | Write | `deployTargetsCreate` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/deploy/environments/{environmentId}/secrets` | Set an environment secret (secrets class) | Write | `deployEnvironmentsSecret` |

## Docs

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/docs/libraries` | Library versions the team has indexed, with their age | Read | `docsLibraries` |
| `GET /v1/tenants/{tenantId}/docs/usage` | This month's library docs calls against the team allowance | Read | `docsUsage` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/docs/dependencies` | The project's pinned libraries: indexed, stale, private and missing | Read | `docsDependencies` |
| `POST /v1/tenants/{tenantId}/docs/index` | Fetch and index a library's official docs, or refresh an existing index | Write | `docsIndex` |
| `POST /v1/tenants/{tenantId}/docs/private` | Index the team's own docs as a private library | Write | `docsPrivate` |
| `POST /v1/tenants/{tenantId}/docs/query` | Look up library docs at the pinned version; fetches and indexes the library on first use | Read | `docsQuery` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/docs/pins` | Read version pins from the project's lockfiles (npm, pnpm, yarn, pip, uv, cargo, go) | Write | `docsPins` |

## Egress

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/egress/events` | Egress decisions recorded for the project | Read | `egressEvents` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/egress/grants` | List per-task credential grants | Read | `egressGrantsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/egress/grants/{grantId}` | Read one credential grant | Read | `egressGrantsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/egress/policy` | Read the egress allowlist policy | Read | `egressPolicyGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/egress/evaluate` | Ask whether a host may be reached; the answer is recorded | Write | `egressEvaluate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/egress/grants` | Grant a task one secret for one host | Write | `egressGrantsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/egress/grants/{grantId}/revoke` | Revoke a credential grant | Write | `egressGrantsRevoke` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/egress/leak-scan` | Scan files for credentials before they leave | Write | `egressLeakscan` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/egress/policy` | Change the egress allowlist policy | Write | `egressPolicyPut` |

## Enterprise

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/enterprise/audit-streams/{auditStreamId}` | Remove a SIEM stream target | Write | `enterpriseStreamsDelete` |
| `DELETE /v1/tenants/{tenantId}/enterprise/byok/keys/{keyId}` | Revoke a key and delete its stored value (secrets class) | Write | `enterpriseByokRevoke` |
| `GET /v1/tenants/{tenantId}/enterprise/audit-streams` | SIEM stream targets | Write | `enterpriseStreamsList` |
| `GET /v1/tenants/{tenantId}/enterprise/byok/keys` | Inference keys by alias and status; a value is never returned | Write | `enterpriseByokList` |
| `GET /v1/tenants/{tenantId}/enterprise/entitlements` | Which enterprise features the team's plan includes | Read | `enterpriseEntitlements` |
| `GET /v1/tenants/{tenantId}/enterprise/evidence-pack` | The security review evidence pack: chain state, agent action counts and controls | Write | `enterpriseEvidencePack` |
| `GET /v1/tenants/{tenantId}/enterprise/identity` | Single sign-on and directory sync status | Write | `enterpriseIdentityGet` |
| `GET /v1/tenants/{tenantId}/enterprise/identity/group-mappings` | Identity provider groups mapped to roles, and the cap | Write | `enterpriseIdentityMappingsGet` |
| `GET /v1/tenants/{tenantId}/enterprise/mcp-allowlist` | The MCP server allowlist for the team's agents | Write | `enterpriseMcpAllowlistGet` |
| `GET /v1/tenants/{tenantId}/enterprise/residency` | The pinned data region and the supported regions | Write | `enterpriseResidencyGet` |
| `GET /v1/tenants/{tenantId}/enterprise/residency/stores` | Where each store holds the team's data | Write | `enterpriseResidencyStores` |
| `GET /v1/tenants/{tenantId}/enterprise/retention` | Retention rules per data class | Write | `enterpriseRetentionGet` |
| `GET /v1/tenants/{tenantId}/enterprise/retention/reports` | Purge reports, newest first | Write | `enterpriseRetentionReports` |
| `POST /v1/tenants/{tenantId}/enterprise/audit-exports` | Export the tamper-evident audit log as CSV with a manifest; the export is itself audited | Write | `enterpriseAuditExportsCreate` |
| `POST /v1/tenants/{tenantId}/enterprise/audit-streams` | Add a SIEM stream target; the signing secret is write-only (secrets class) | Write | `enterpriseStreamsCreate` |
| `POST /v1/tenants/{tenantId}/enterprise/audit-streams/{auditStreamId}/run` | Send the rows after the target's cursor now | Write | `enterpriseStreamsRun` |
| `POST /v1/tenants/{tenantId}/enterprise/backups/drill` | Snapshot, restore into a scratch target and compare record counts | Write | `enterpriseBackupsDrill` |
| `POST /v1/tenants/{tenantId}/enterprise/byok/keys` | Add an inference key; the value is write-only (secrets class) | Write | `enterpriseByokCreate` |
| `POST /v1/tenants/{tenantId}/enterprise/byok/keys/{keyId}/rotate` | Replace a key's value under the same alias (secrets class) | Write | `enterpriseByokRotate` |
| `POST /v1/tenants/{tenantId}/enterprise/byok/keys/{keyId}/test` | Test a key against its provider | Write | `enterpriseByokTest` |
| `POST /v1/tenants/{tenantId}/enterprise/data/delete` | Delete the team's, a project's or a user's data from every store (deletion class, every plan) | Write | `enterpriseDataDelete` |
| `POST /v1/tenants/{tenantId}/enterprise/data/export` | Export the team's, a project's or a user's data as NDJSON (every plan) | Write | `enterpriseDataExport` |
| `POST /v1/tenants/{tenantId}/enterprise/identity/portal-link` | A short-lived link to the identity provider's hosted setup portal | Write | `enterpriseIdentityPortalLink` |
| `POST /v1/tenants/{tenantId}/enterprise/identity/sync` | Sync the directory now: apply group roles and deprovision removed people | Write | `enterpriseIdentitySync` |
| `POST /v1/tenants/{tenantId}/enterprise/identity/test` | Test the single sign-on or directory connection | Write | `enterpriseIdentityTest` |
| `POST /v1/tenants/{tenantId}/enterprise/residency/migrations` | Move a pinned team to another region as an audited migration (policy class) | Write | `enterpriseResidencyMigrate` |
| `POST /v1/tenants/{tenantId}/enterprise/retention/purge` | Run the retention purge now and return the report (deletion class) | Write | `enterpriseRetentionPurge` |
| `PUT /v1/tenants/{tenantId}/enterprise/identity/group-mappings` | Replace the group to role mappings; a role above the cap is refused (policy class) | Write | `enterpriseIdentityMappingsPut` |
| `PUT /v1/tenants/{tenantId}/enterprise/mcp-allowlist` | Set the MCP server allowlist (policy class) | Write | `enterpriseMcpAllowlistPut` |
| `PUT /v1/tenants/{tenantId}/enterprise/residency` | Pin the team to a region; a region the stores cannot hold is refused with the supported list | Write | `enterpriseResidencyPut` |
| `PUT /v1/tenants/{tenantId}/enterprise/retention` | Replace the retention rules (policy class) | Write | `enterpriseRetentionPut` |

## Events

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/events` | A project's domain events | Read | `eventsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/events/stream` | A project's domain events as a server-sent event stream: replays from since (or the Last-Event-ID header) in sequence order, then streams live with a heartbeat; the stream ends after a few minutes and the reader reconnects with its last id | Read | `eventsStream` |

## Features

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/features/{featureId}/override` | Remove the workspace's switch for a feature | Write | `featuresOverrideDelete` |
| `GET /v1/tenants/{tenantId}/features` | List features and whether each is on for the workspace | Read | `featuresList` |
| `PUT /v1/tenants/{tenantId}/features/{featureId}/override` | Switch a feature on or off for the workspace | Write | `featuresOverridePut` |

## Git

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}` | Delete a repository (deletion class) | Write | `gitRepoDelete` |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/access/{repo}` | Clear a member's repository role so the team role applies again | Write | `gitAccessClear` |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/branches/{repo}` | Delete a branch | Write | `gitBranchesDelete` |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/tokens/{repo}` | Revoke a git token | Write | `gitTokensRevoke` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos` | List a project's native repositories | Read | `gitReposList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/capability` | What the native git host offers on this deployment | Read | `gitReposCapability` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}` | Read one repository | Read | `gitRepoGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/access` | List the members whose access is narrowed on a repository | Read | `gitAccessList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/branches` | List a repository's branches | Read | `gitBranchesList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/commits/{repo}/diff` | Read a commit's full diff against its first parent | Read | `gitCommitDiff` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/compare` | Read the full diff between two refs (base...head) | Read | `gitCompare` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/diff/file` | Read one file's diff in full, including a large file the listing did not show | Read | `gitDiffFile` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/events` | A repository's git events | Read | `gitEventsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/index` | Index status for a repository | Read | `gitRepoIndexGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/protection` | Read a repository's branch protection | Read | `gitProtectionGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls` | List pull requests | Read | `gitPullsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls/{repo}` | Read one pull request | Read | `gitPullGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls/{repo}/files` | Read a pull request's full diff | Read | `gitPullFiles` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/tokens` | List a repository's git tokens (never the secrets) | Read | `gitTokensList` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos` | Create a native repository | Write | `gitReposCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/import` | Import a repository from another host into a native one | Write | `gitReposImport` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/branches` | Create a branch | Write | `gitBranchesCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/index` | Queue an index run for a repository | Write | `gitRepoIndexRun` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls` | Open a pull request | Write | `gitPullsOpen` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls/{repo}/close` | Close a pull request | Write | `gitPullClose` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls/{repo}/merge` | Merge a pull request | Write | `gitPullMerge` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/pulls/{repo}/reviews` | Review a pull request | Write | `gitPullReview` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/push` | Push a commit to a branch through the API | Write | `gitPush` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/push-check` | Check what a push would do without writing | Write | `gitPushCheck` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/sync` | Sync a mirrored repository now | Write | `gitRepoSync` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/tokens` | Mint a git token; the secret is shown once | Write | `gitTokensMint` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/access/{repo}` | Narrow one member's role on a repository (never above their team role) | Write | `gitAccessPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/mirror` | Set the mirror direction and single writer for a repository (policy class) | Write | `gitRepoMirror` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/repos/{repoId}/protection` | Set a repository's branch protection (policy class) | Write | `gitProtectionPut` |

## Github

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/github/installations` | GitHub App installations connected to the team, and requests waiting for an organization owner | Read | `githubInstallations` |
| `GET /v1/tenants/{tenantId}/github/installations/{installationId}/repositories` | Repositories a connected GitHub App installation reaches | Read | `githubRepositories` |
| `POST /v1/tenants/{tenantId}/github/install-link` | A one-time link to the GitHub App's install page for the caller, which opens on any device and expires after 15 minutes | Write | `githubInstallLink` |

## Guard

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/guard/approvals` | List guardrail approvals | Read | `guardApprovalsList` |
| `GET /v1/tenants/{tenantId}/guard/approvals/{approvalId}` | Read one guardrail approval | Read | `guardApprovalsGet` |
| `GET /v1/tenants/{tenantId}/guard/rules` | Read the guardrail rule layers | Read | `guardRulesGet` |
| `POST /v1/tenants/{tenantId}/guard/approvals/{approvalId}/answer` | Answer a guardrail approval | Write | `guardApprovalsAnswer` |
| `POST /v1/tenants/{tenantId}/guard/evaluate` | Evaluate an action against the rules | Write | `guardEvaluate` |
| `POST /v1/tenants/{tenantId}/guard/scan` | Scan text for secrets | Write | `guardScan` |
| `PUT /v1/tenants/{tenantId}/guard/rules` | Replace a guardrail rule layer | Write | `guardRulesPut` |

## Imports

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/imports` | Show the import of a project's connected GitHub repository: one job per kind with its count, rate and estimate | Read | `importsList` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/imports` | Queue the import of a project's connected GitHub repository, or queue it again; reading only, safe to repeat | Write | `importsStart` |

## Inbox

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/me/inbox` | Your notification inbox, newest first, with the unread count | Read, a person | `inboxList` |
| `GET /v1/me/notification-preferences` | How you are told about each kind of event: in the app, by email or not at all | Read, a person | `inboxPreferencesGet` |
| `POST /v1/me/inbox/read-all` | Mark every item in your inbox read | Read, a person | `inboxReadAll` |
| `POST /v1/me/inbox/{inboxId}/read` | Mark one inbox item read | Read, a person | `inboxRead` |
| `POST /v1/me/inbox/{inboxId}/snooze` | Hide one inbox item until a time you give | Read, a person | `inboxSnooze` |
| `PUT /v1/me/notification-preferences` | Set how you are told about the kinds of event you name | Read, a person | `inboxPreferencesPut` |

## Intent

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/intent` | The project's current intent revision | Read | `intentGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/intent/revisions` | List intent revisions with their status, newest first | Read | `intentRevisionsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/intent/revisions/{revision}` | Read one intent revision, its status and its impact | Read | `intentRevisionGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/intent/briefs/{taskId}` | Compile a task's content-addressed agent brief from a context manifest | Read | `intentBrief` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/intent/revisions` | Propose an immutable intent revision against the current one | Write | `intentRevisionsPropose` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/intent/revisions/{revision}/decision` | Accept (make current and apply to the affected tasks) or reject an intent revision | Write | `intentRevisionDecide` |

## Invitations

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/invitations/{invitationId}` | Revoke an invitation | Write | `invitationsRevoke` |
| `GET /v1/tenants/{tenantId}/invitations` | List open invitations | Write | `invitationsList` |
| `POST /v1/invitations/accept` | Accept a team invitation (a person does this) | Read, a person | `invitationsAccept` |
| `POST /v1/tenants/{tenantId}/invitations` | Invite someone to the team (policy class) | Write | `invitationsCreate` |

## Issues

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/issues` | List a project's issues; archived=true lists the archived ones that can still be restored | Read | `issuesList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}` | Read an issue | Read | `issuesGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}/events` | The audit trail of an issue | Read | `issuesEvents` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}` | Change an issue's fields; status can never be set to done | Write | `issuesUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues` | Create an issue | Write | `issuesCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues-import` | Import issues from a Linear, Jira or GitHub Projects export | Write | `issuesImport` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues-pull` | Pull issues from a connected Linear workspace or GitHub repository; read only at the tracker, idempotent by the tracker's own ID, with dryRun to check first | Write | `issuesPull` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}/archive` | Archive an issue: hidden from lists, restorable for 30 days, then removed; refused while its task holds a lease | Write | `issuesArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}/assign` | Assign an issue to a person, agent or bot; agents and bots get the issue's one task | Write | `issuesAssign` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/issues/{issueId}/restore` | Restore an archived issue within 30 days | Write | `issuesRestore` |

## Issue sync

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/issue-sync` | GitHub issue sync settings | Read | `issuesyncGet` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/issue-sync` | Set GitHub sync to off, read_only or write_back (issue triage class) | Write | `issuesyncPut` |

## Jobs

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/me/background-jobs` | The background jobs of your team that are queued or running, and those that finished in the last day, each with an estimate | Read, a person | `jobsMine` |

## Kit

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/kit/usage-events` | Delete the caller's loop usage events in a project | Write, a person | `kitUsageEventsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/next` | The next task a run should take | Read | `kitNext` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/overview` | A project's run overview | Read | `kitOverview` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/policy` | Read a project's run policy | Read | `kitPolicyGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/report` | The morning report for a window | Read | `kitReport` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/runs` | List runs | Read | `kitRunsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/runs/{runId}` | Read a run | Read | `kitRunGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/usage-events` | The caller's loop usage events in a project | Read | `kitUsageEventsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/kit/usage-policy` | A project's usage policy, the caller's own caps, the cap that applies and each client's eligibility | Read | `kitUsagePolicyGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/attempts` | Record a finished loop iteration and judge the task | Write | `kitAttemptsRecord` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/plan/sync` | Sync a plan into tasks | Write | `kitPlanSync` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/report/deliver` | Put the morning report for the last report time in the team inbox, once | Write | `kitReportDeliver` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/runs` | Start a run | Write | `kitRunsStart` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/runs/{runId}/claim-next` | Claim the next runnable task under a run, in one step | Write | `kitRunClaimNext` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/runs/{runId}/decisions` | Record a decision in a run | Write | `kitRunDecision` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/runs/{runId}/end` | End a run | Write | `kitRunEnd` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/kit/runs/{runId}/pull` | Open the pull request for a task the run claimed | Write | `kitRunPull` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/kit/policy` | Set a project's run policy (policy class) | Write | `kitPolicyPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/kit/usage-policy/project` | Set a project's usage policy (policy class) | Write | `kitUsagePolicyProjectPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/kit/usage-policy/user` | Set the caller's own usage caps and whether usage events may be shared | Write, a person | `kitUsagePolicyUserPut` |

## Labels

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/labels/{labelId}` | Delete a label: it is archived and can be restored for 30 days, then removed; refused while issues use it | Write | `labelsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/labels` | List labels; archived=true lists the archived ones that can still be restored | Read | `labelsList` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/labels/{labelId}` | Rename a label or change its colour | Write | `labelsUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/labels` | Create a label | Write | `labelsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/labels/{labelId}/archive` | Archive a label; refused while issues use it | Write | `labelsArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/labels/{labelId}/restore` | Restore an archived label within 30 days | Write | `labelsRestore` |

## Links

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `POST /v1/auth/links/confirm` | Confirm linking a sign-in method to the account (a person does this) | Read, a person | `linksConfirm` |

## Loops

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/loops/{loopId}` | Delete a loop: it is archived and can be restored for 30 days, then removed (issue triage class) | Write | `loopsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/loops` | List loops; archived=true lists the archived ones that can still be restored | Read | `loopsList` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/loops/{loopId}` | Change a loop (issue triage class) | Write | `loopsUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/loops` | Define a scheduled or event-triggered loop (issue triage class) | Write | `loopsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/loops/{loopId}/archive` | Archive a loop so it stops firing (issue triage class) | Write | `loopsArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/loops/{loopId}/fire` | Run a loop now through a bounded kit run | Write | `loopsFire` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/loops/{loopId}/restore` | Restore an archived loop within 30 days (issue triage class) | Write | `loopsRestore` |

## MCP

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/mcp/surface` | The MCP tools, prompts and resources Overlane offers | Read | `mcpSurface` |
| `POST /mcp` | Model Context Protocol endpoint (Streamable HTTP) | Read | `mcp` |

## Your account

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/me/account` | Delete the caller's own account: leaves every team, removes personal rows and returns a receipt with counts per table (a person does this; refused while the caller is the last owner of a team that still has other members) | Read, a person | `meDelete` |
| `GET /v1/me` | Who the bearer token belongs to | Read | `meGet` |
| `GET /v1/me/channel` | Which build of the hosted app the caller sees and why: their own pick, the team's channel and lock | Read | `meChannelGet` |
| `PUT /v1/me/channel` | Pick the build you see: follow the team, stable or beta; the internal build is for Overlane staff only | Read, a person | `meChannelPut` |

## Members

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/members/{memberId}` | Remove a member from the team (deletion class) | Write | `membersRemove` |
| `GET /v1/tenants/{tenantId}/members` | List the team's members | Read | `membersList` |
| `PATCH /v1/tenants/{tenantId}/members/{memberId}` | Change a member's role (policy class) | Write | `membersRole` |

## Memory

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/memory/{memoryId}` | Delete one memory (deletion class) | Write | `memoryDelete` |
| `GET /v1/memory/search` | Search memories across scopes, in precedence order | Read | `memorySearch` |
| `GET /v1/tenants/{tenantId}/memory` | List memories | Read | `memoryList` |
| `GET /v1/tenants/{tenantId}/memory/export` | Export every memory the caller can see | Read | `memoryExport` |
| `GET /v1/tenants/{tenantId}/memory/settings` | Read the team's memory settings | Read | `memorySettingsGet` |
| `GET /v1/tenants/{tenantId}/memory/status` | Memory counts and inference mode | Read | `memoryStatus` |
| `GET /v1/tenants/{tenantId}/memory/{memoryId}` | Read one memory | Read | `memoryGet` |
| `POST /v1/tenants/{tenantId}/memory` | Write a memory candidate | Write | `memoryCreate` |
| `POST /v1/tenants/{tenantId}/memory/purge` | Delete memories by subject (export and deletion rights) | Write | `memoryPurge` |
| `POST /v1/tenants/{tenantId}/memory/symbols` | Link memories to code symbols | Write | `memorySymbols` |
| `POST /v1/tenants/{tenantId}/memory/{memoryId}/confirm` | Confirm a memory | Write | `memoryConfirm` |
| `POST /v1/tenants/{tenantId}/memory/{memoryId}/promote` | Promote a memory to a wider scope (memory promotion class) | Write | `memoryPromote` |
| `POST /v1/tenants/{tenantId}/memory/{memoryId}/unlearn` | Unlearn a memory | Write | `memoryUnlearn` |
| `PUT /v1/tenants/{tenantId}/memory/settings` | Change the team's memory settings (policy class) | Write | `memorySettingsPut` |

## Models

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/models/{modelId}` | Remove a model executor and destroy its stored key (secrets class) | Write | `modelsRemove` |
| `GET /v1/tenants/{tenantId}/models` | Model executors by alias, kind, model, caps and key state; a key is never returned | Read | `modelsList` |
| `POST /v1/tenants/{tenantId}/models` | Register a model executor; the key is write-only and stored encrypted (secrets class) | Write | `modelsCreate` |
| `POST /v1/tenants/{tenantId}/models/{modelId}/complete` | One model call inside a run, held to the run's token and dollar caps | Write | `modelsComplete` |

## Observe

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/observe/alerts/rules` | Remove an alert rule (policy class) | Write | `observeAlertsRulesDelete` |
| `GET /v1/tenants/{tenantId}/metrics/cost` | The cost report for the web app | Read | `observeCostWeb` |
| `GET /v1/tenants/{tenantId}/observe/alerts` | Alert rules and open incidents | Read | `observeAlertsGet` |
| `GET /v1/tenants/{tenantId}/observe/compare` | Compare agents on one task | Read | `observeCompare` |
| `GET /v1/tenants/{tenantId}/observe/cost` | The cost report | Read | `observeCost` |
| `GET /v1/tenants/{tenantId}/observe/evals` | The last eval report | Read | `observeEvalsGet` |
| `GET /v1/tenants/{tenantId}/observe/metrics` | Cost and token metrics per agent, project and team | Read | `observeMetricsGet` |
| `GET /v1/tenants/{tenantId}/observe/reconcile` | Compare observed cost with metered usage | Read | `observeReconcile` |
| `GET /v1/tenants/{tenantId}/observe/retention` | The retention the plan keeps | Read | `observeRetentionGet` |
| `GET /v1/tenants/{tenantId}/observe/status` | Observability status: what is flowing and the plan's retention | Read | `observeStatus` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/logs` | A project's logs for the web app | Read | `observeLogsWeb` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/observe/logs` | Search a project's logs | Read | `observeLogsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/observe/runs` | Runs still going in the project and the tool call each is running now | Read | `observeRunsLive` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/observe/settings` | The project's observability settings: whether agents send live activity | Read | `observeSettingsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/observe/status` | A project's runs in the last 24 hours by status, for a token limited to that project | Read | `observeProjectStatus` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/runs/{runId}/stream` | Live events of a run over a stream | Read | `observeRunStream` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/runs/{runId}/trace` | A run's logs and trace stitched by run ID | Read | `observeRunTrace` |
| `POST /v1/tenants/{tenantId}/observe/alerts/evaluate` | Evaluate the alert rules now; opens incidents and sends notices | Write | `observeAlertsEvaluate` |
| `POST /v1/tenants/{tenantId}/observe/evals` | Replay pull requests with each agent and configuration | Write | `observeEvalsRun` |
| `POST /v1/tenants/{tenantId}/observe/metrics` | Ingest usage metrics (machine ingest) | Write | `observeMetricsIngest` |
| `POST /v1/tenants/{tenantId}/observe/retention/purge` | Delete telemetry older than the plan keeps | Write | `observeRetentionPurge` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/observe/events` | Ingest run events (tool calls, file-edit diffs, commits) from an agent's hooks or the CI runner; text is redacted before it is stored | Write | `observeEventsIngest` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/observe/telemetry` | Ingest logs and spans from an agent or the CI runner (machine ingest; secrets are redacted) | Write | `observeTelemetryIngest` |
| `PUT /v1/tenants/{tenantId}/observe/alerts/rules` | Set an alert rule (policy class) | Write | `observeAlertsRulesPut` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/observe/settings` | Turn live activity on or off for the project | Write | `observeSettingsPut` |

## Onboarding

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/onboarding` | Onboarding state for the team | Read | `onboardingGet` |
| `GET /v1/tenants/{tenantId}/onboarding/first-review` | The first AI review of onboarding | Read | `onboardingReview` |
| `GET /v1/tenants/{tenantId}/onboarding/funnel` | Time from sign-up to the first reviewed agent change, for admins | Write | `onboardingFunnel` |
| `POST /v1/tenants/{tenantId}/onboarding/advance` | Advance onboarding one step | Write | `onboardingAdvance` |

## Openapi

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/openapi.json` | This OpenAPI 3.1 document, generated from the route tables and the contracts | No token | `openapiGet` |

## Operator

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/operator/discounts` | Take a workspace's discount back (Overlane staff) | Write, a person | `operatorDiscountsRevoke` |
| `DELETE /v1/operator/invitations` | Take an invitation back (Overlane staff) | Write, a person | `operatorInvitationsRemove` |
| `GET /v1/operator/discounts` | Discounts granted to workspaces (Overlane staff) | Write, a person | `operatorDiscountsList` |
| `GET /v1/operator/invitations` | Who may create an account while Overlane is invite-only (Overlane staff) | Write, a person | `operatorInvitationsList` |
| `GET /v1/operator/tables` | Row counts and column masking for every table (Overlane staff) | Read | `operatorTables` |
| `GET /v1/operator/tables/{table}/rows` | Rows of one table with personal fields masked (Overlane staff) | Read | `operatorRows` |
| `PUT /v1/operator/discounts` | Grant a workspace the open-source or startup discount (Overlane staff) | Write, a person | `operatorDiscountsGrant` |
| `PUT /v1/operator/invitations` | Invite an email address or a domain to create an account (Overlane staff) | Write, a person | `operatorInvitationsAdd` |

## Projects

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}` | Delete a project: it is archived and can be restored for 30 days, then removed; refused while a task has a lease or recorded evidence | Write | `projectsDelete` |
| `GET /v1/tenants/{tenantId}/projects` | List the team's projects; archived=true lists the archived ones that can still be restored | Read | `projectsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}` | Read a project | Read | `projectsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/context` | The context packet for a project | Read | `projectsContext` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/merge` | Count what merging another project into this one would move; changes nothing | Read | `projectsMergePreview` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}` | Rename a project, or change its code layer, its code map as context or repository sign-in | Write | `projectsUpdate` |
| `POST /v1/tenants/{tenantId}/projects` | Create a project (idempotent on repository) | Write | `projectsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/archive` | Archive a project and its open tasks | Write | `projectsArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/merge` | Merge a second project for the same code into this one | Write | `projectsMerge` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/restore` | Restore an archived project and the tasks archived with it, within 30 days | Write | `projectsRestore` |

## Pull request routing

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/pr-routes` | Pull requests with their routed lane | Read | `prroutesList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/pr-routes/batch` | Batches of small pull requests | Read | `prroutesBatch` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/pr-routes/policy` | Read the project's pull request routing policy | Read | `prroutesPolicyGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/pr-routes/approve` | Approve a pull request in its lane (independence rules apply) | Write | `prroutesApprove` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/pr-routes/route` | Route a pull request to a lane by risk | Write | `prroutesRoute` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/pr-routes/policy` | Change the project's pull request routing policy | Write | `prroutesPolicyPut` |

## Queue

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/queue` | The project task queue, in priority order; archived=true lists the archived tasks that can still be restored | Read | `queueList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/queue/next` | The next task an executor should take | Read | `queueNext` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/queue/policy` | Read the task requirement for a project | Read | `queuePolicyGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/queue/{queueId}/prioritise` | Change a task priority | Write | `queuePrioritise` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/queue/policy` | Set the task requirement (task policy class) | Write | `queuePolicyPut` |

## Rate limits

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/rate-limit` | The team's request limit from the plan data, and what is left in this minute | Read | `ratelimitGet` |

## Release

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/release/rollback` | Roll a project back to its previous release (release class) | Write | `releaseRollback` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/release` | Pin a project to a release (release class) | Write | `releasePin` |

## Releases

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/release-promotion` | Read how internal releases reach stable (automatic after a soak, or by hand) | Read | `releasesPromotionGet` |
| `GET /v1/tenants/{tenantId}/releases` | List releases | Read | `releasesList` |
| `GET /v1/tenants/{tenantId}/releases/{releaseId}` | Read a release | Read | `releasesGet` |
| `POST /v1/tenants/{tenantId}/releases` | Publish a signed release (release class) | Write | `releasesPublish` |
| `POST /v1/tenants/{tenantId}/releases/{releaseId}/promote` | Promote a release to a channel (release class) | Write | `releasesPromote` |
| `POST /v1/tenants/{tenantId}/releases/{releaseId}/withdraw` | Withdraw a release (release class) | Write | `releasesWithdraw` |
| `PUT /v1/tenants/{tenantId}/release-promotion` | Change how internal releases reach stable (release class) | Write | `releasesPromotionPut` |

## Review

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/review/findings` | List review findings | Read | `reviewFindingsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/review/settings` | Read a project's review settings | Read | `reviewSettingsGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/review/status` | Review status for a project | Read | `reviewStatus` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/review/findings/{findingId}/autofix` | Apply a finding's suggested fix | Write | `reviewFindingsAutofix` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/review/findings/{findingId}/feedback` | Give feedback on a finding | Write | `reviewFindingsFeedback` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/review/runs` | Start an AI review run | Write | `reviewRunsCreate` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/review/settings` | Change a project's review settings | Write | `reviewSettingsPut` |

## Rules

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/rules` | The rules text the project's task payloads use | Read | `rulesGet` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/rules` | Set the rules text the project's task payloads use (the text of the rules source file) | Write | `rulesPut` |

## Signals

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/signals` | The signals the task engine tracks, each with the task it opened and why it closed; state=open or state=cleared narrows the list | Read | `signalsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/signals/settings` | Whether the task engine opens tasks on its own for this project: automatic, supervised (opened paused with a reason) or manual (the signal is recorded and nothing opens) | Read | `signalsSettingsGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/signals/documents` | Send an audit or plan document: each unchecked item opens one task, and an item that is ticked or removed closes its task | Write | `signalsDocuments` |
| `PUT /v1/tenants/{tenantId}/projects/{projectId}/signals/settings` | Set task creation for this project (task policy class) | Write | `signalsSettingsPut` |

## Skills

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/skills` | List the project's skills with their review state | Read | `skillsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/skills/{name}` | Read a skill with its full SKILL.md text | Read | `skillsGet` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/skills/from-conversation` | Save one of your assistant conversations as a skill draft in the standard skill format; secrets are removed and the draft is not used until it is approved | Write, a person | `skillsSave` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/skills/{name}/approve` | Approve a skill draft so tasks in the project use it (a person does this) | Write, a person | `skillsApprove` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/skills/{name}/reject` | Reject a skill draft (a person does this) | Write, a person | `skillsReject` |

## Tasks

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}` | Delete a task: it is archived and can be restored for 30 days, then removed; refused while it has a lease or recorded evidence | Write | `tasksDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks` | List a project's tasks; archived=true lists the archived ones that can still be restored | Read | `tasksList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}` | Read a task and its ledger | Read | `tasksGet` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/approvals` | List a task's approvals | Read | `tasksApprovalsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/capsule` | A task as an open, versioned capsule | Read | `tasksCapsule` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/capsule/payload` | The rendered payload sections of a task capsule, for the lease holder only | Read | `tasksCapsulePayload` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/messages` | A task's messages | Read | `tasksMessages` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}` | Change a task's title or outcome | Write | `tasksUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks` | Create a task contract | Write | `tasksCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/approvals` | Ask for an approval on a task | Write | `tasksApprovalsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/archive` | Archive a task | Write | `tasksArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/assign` | Assign a task to an agent, person or bot | Write | `tasksAssign` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/restore` | Restore an archived task within 30 days | Write | `tasksRestore` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/tasks/{taskId}/{operation}` | Run a task operation: claim, start, checkpoint, submit, evidence, handoff, cancel | Write | `tasksOperation` |

## Teams

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/teams` | Teams the caller belongs to | Read | `teamsList` |

## Tokens

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/tokens/{tokenId}` | Revoke an agent token | Write | `tokensRevoke` |
| `GET /v1/tenants/{tenantId}/tokens` | List agent tokens | Write | `tokensList` |
| `POST /v1/tenants/{tenantId}/tokens` | Mint an agent token; the secret is shown once | Write | `tokensCreate` |

## Versions

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/versions` | The API versions that exist, with their changelog and end dates | Read | `versionsList` |

## Views

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/views/{viewId}` | Delete a saved view: it is archived and can be restored for 30 days, then removed | Write | `viewsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/views` | List saved views; archived=true lists the archived ones that can still be restored | Read | `viewsList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/views/{viewId}/run` | Run a saved view with stable ordering | Read | `viewsRun` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/views/{viewId}` | Rename a saved view or change its filter, grouping and sort | Write | `viewsUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/views` | Save a view: filter, grouping and sort over any issue field | Write | `viewsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/views/{viewId}/archive` | Archive a saved view | Write | `viewsArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/views/{viewId}/restore` | Restore an archived saved view within 30 days | Write | `viewsRestore` |

## Webhooks

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/webhooks/{webhookId}` | Disable a webhook (bots class) | Write | `webhooksDelete` |
| `GET /v1/tenants/{tenantId}/webhooks` | List outbound webhooks | Read | `webhooksList` |
| `GET /v1/tenants/{tenantId}/webhooks/{webhookId}/deliveries` | A webhook's recent deliveries with status, attempts and next attempt | Read | `webhooksDeliveries` |
| `POST /v1/tenants/{tenantId}/webhooks` | Create an outbound webhook; the signing secret is shown once (bots class) | Write | `webhooksCreate` |
| `POST /v1/tenants/{tenantId}/webhooks/{webhookId}/rotate-key` | Rotate a webhook's signing secret; shown once (bots class) | Write | `webhooksRotate` |
| `POST /v1/tenants/{tenantId}/webhooks/{webhookId}/test` | Send a test event to a webhook | Write | `webhooksTest` |

## Wiki

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/wiki` | List the pages of the project wiki built from the code map | Read | `wikiList` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/wiki/{wikiId}` | Read one page of the project wiki | Read | `wikiPage` |

## Issue projects

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `DELETE /v1/tenants/{tenantId}/projects/{projectId}/work-projects/{workProjectId}` | Delete a work project: it is archived and can be restored for 30 days, then removed; refused while issues use it | Write | `workprojectsDelete` |
| `GET /v1/tenants/{tenantId}/projects/{projectId}/work-projects` | List an issue project's groupings; archived=true lists the archived ones that can still be restored | Read | `workprojectsList` |
| `PATCH /v1/tenants/{tenantId}/projects/{projectId}/work-projects/{workProjectId}` | Rename a work project or change its description | Write | `workprojectsUpdate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/work-projects` | Create a project to group issues | Write | `workprojectsCreate` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/work-projects/{workProjectId}/archive` | Archive a work project; refused while issues use it | Write | `workprojectsArchive` |
| `POST /v1/tenants/{tenantId}/projects/{projectId}/work-projects/{workProjectId}/restore` | Restore an archived work project within 30 days | Write | `workprojectsRestore` |

## Workspace

| Operation | Summary | Access | SDK method |
| --- | --- | --- | --- |
| `GET /v1/tenants/{tenantId}/channel` | Which build of the hosted app the team gets (stable or beta) and whether the team is locked to stable | Read | `workspaceChannelGet` |
| `PUT /v1/tenants/{tenantId}/channel` | Set the team's build (stable or beta) and lock it to stable; the internal build is for Overlane staff only | Write | `workspaceChannelPut` |

Source: https://docs.overlane.app/api/index.mdx
