docs/api-operations.md
Rama main · réplica de lectura del repositorio original.
---
description: Every REST endpoint, required permission and corresponding MCP tool.
---
# API reference
Base URL: **`https://app.devpu.sh/api/v1`**. For self-hosting, replace the host with your dashboard URL. Authenticate with a bearer API key; see the [API guide](/docs/api/) for setup, errors, pagination and retries.
Select an endpoint below for its inputs and response fields. Tables use `[]` for array items and `.*` for record keys. A nested field is required only when its parent object or variant is present. Unknown request fields are rejected.
The [OpenAPI JSON](https://app.devpu.sh/api/v1/openapi.json) is also available for scripts and code generation.
## Projects
| Endpoint | Permission | MCP tool |
| --- | --- | --- |
| [`GET /api/v1/github/installations`](/docs/api-projects/#list-github-installations) | `projects:write` | — |
| [`GET /api/v1/github/repositories`](/docs/api-projects/#list-github-repositories) | `projects:write` | — |
| [`GET /api/v1/projects`](/docs/api-projects/#list-projects) | `projects:read` | [`list_projects`](/docs/mcp-tools/#list_projects) |
| [`GET /api/v1/projects/{projectId}`](/docs/api-projects/#get-project) | `projects:read` | [`get_project`](/docs/mcp-tools/#get_project) |
| [`GET /api/v1/projects/{projectId}/environments`](/docs/api-projects/#list-environments) | `projects:read` | [`list_environments`](/docs/mcp-tools/#list_environments) |
| [`GET /api/v1/projects/{projectId}/configuration`](/docs/api-projects/#get-project-configuration) | `projects:read` | [`get_project_configuration`](/docs/mcp-tools/#get_project_configuration) |
| [`GET /api/v1/projects/{projectId}/variables`](/docs/api-projects/#list-variables) | `projects:read` | [`list_variables`](/docs/mcp-tools/#list_variables) |
| [`GET /api/v1/projects/{projectId}/domains`](/docs/api-projects/#list-domains) | `projects:read` | [`list_domains`](/docs/mcp-tools/#list_domains) |
| [`GET /api/v1/projects/{projectId}/aliases`](/docs/api-projects/#list-aliases) | `projects:read` | [`list_aliases`](/docs/mcp-tools/#list_aliases) |
| [`PATCH /api/v1/projects/{projectId}`](/docs/api-projects/#rename-project) | `projects:write` | [`rename_project`](/docs/mcp-tools/#rename_project) |
| [`PATCH /api/v1/projects/{projectId}/variables`](/docs/api-projects/#update-variables) | `secrets:write` | [`update_variables`](/docs/mcp-tools/#update_variables) |
| [`PUT /api/v1/projects/{projectId}/configuration`](/docs/api-projects/#update-project-configuration) | `projects:write` | [`update_project_configuration`](/docs/mcp-tools/#update_project_configuration) |
| [`DELETE /api/v1/projects/{projectId}`](/docs/api-projects/#delete-project) | `projects:write` | [`delete_project`](/docs/mcp-tools/#delete_project) |
| [`POST /api/v1/projects`](/docs/api-projects/#create-project) | `projects:write` | [`create_project`](/docs/mcp-tools/#create_project) |
| [`PUT /api/v1/projects/{projectId}/environments`](/docs/api-projects/#update-environments) | `projects:write` | [`update_environments`](/docs/mcp-tools/#update_environments) |
| [`PUT /api/v1/projects/{projectId}/environment-servers`](/docs/api-projects/#update-environment-servers) | `projects:write` | [`update_environment_servers`](/docs/mcp-tools/#update_environment_servers) |
## Deployments and logs
| Endpoint | Permission | MCP tool |
| --- | --- | --- |
| [`GET /api/v1/projects/{projectId}/deployments`](/docs/api-deployments/#list-deployments) | `deployments:read` | [`list_deployments`](/docs/mcp-tools/#list_deployments) |
| [`GET /api/v1/deployments/{deploymentId}`](/docs/api-deployments/#get-deployment) | `deployments:read` | [`get_deployment`](/docs/mcp-tools/#get_deployment) |
| [`GET /api/v1/deployments/{deploymentId}/logs`](/docs/api-deployments/#read-deployment-logs) | `logs:read` | [`read_deployment_logs`](/docs/mcp-tools/#read_deployment_logs) |
| [`GET /api/v1/projects/{projectId}/runtime-logs`](/docs/api-deployments/#read-runtime-logs) | `logs:read` | [`read_runtime_logs`](/docs/mcp-tools/#read_runtime_logs) |
| [`POST /api/v1/projects/{projectId}/deployments`](/docs/api-deployments/#deploy) | `deployments:write` | [`deploy`](/docs/mcp-tools/#deploy) |
| [`POST /api/v1/deployments/{deploymentId}/redeploy`](/docs/api-deployments/#redeploy) | `deployments:write` | [`redeploy`](/docs/mcp-tools/#redeploy) |
| [`POST /api/v1/deployments/{deploymentId}/rollback`](/docs/api-deployments/#rollback) | `deployments:write` | [`rollback`](/docs/mcp-tools/#rollback) |
| [`GET /api/v1/projects/{projectId}/deploy-options`](/docs/api-deployments/#get-deployment-options) | `deployments:read` | [`get_deployment_options`](/docs/mcp-tools/#get_deployment_options) |
## Servers
| Endpoint | Permission | MCP tool |
| --- | --- | --- |
| [`GET /api/v1/servers`](/docs/api-servers/#list-servers) | `servers:read` | [`list_servers`](/docs/mcp-tools/#list_servers) |
| [`GET /api/v1/servers/{serverId}`](/docs/api-servers/#get-server) | `servers:read` | [`get_server`](/docs/mcp-tools/#get_server) |
| [`GET /api/v1/servers/{serverId}/metrics`](/docs/api-servers/#read-server-metrics) | `servers:read` | [`read_server_metrics`](/docs/mcp-tools/#read_server_metrics) |
| [`PATCH /api/v1/servers/{serverId}`](/docs/api-servers/#rename-server) | `servers:write` | — |
| [`POST /api/v1/servers`](/docs/api-servers/#create-server) | `servers:write` | — |
| [`POST /api/v1/servers/{serverId}/enable`](/docs/api-servers/#enable-server) | `servers:write` | — |
| [`POST /api/v1/servers/{serverId}/disable`](/docs/api-servers/#disable-server) | `servers:write` | — |
| [`DELETE /api/v1/servers/{serverId}`](/docs/api-servers/#delete-server) | `servers:write` | — |
| [`GET /api/v1/servers/{serverId}/delete-diagnostic`](/docs/api-servers/#get-server-delete-diagnostic) | `servers:write` | — |
## Backups and jobs
| Endpoint | Permission | MCP tool |
| --- | --- | --- |
| [`GET /api/v1/projects/{projectId}/backup-policies/{policyId}`](/docs/api-backups/#get-backup-policy) | `backups:read` | [`get_backup_policy`](/docs/mcp-tools/#get_backup_policy) |
| [`GET /api/v1/projects/{projectId}/backups`](/docs/api-backups/#list-backups) | `backups:read` | [`list_backups`](/docs/mcp-tools/#list_backups) |
| [`GET /api/v1/backups/{backupRunId}`](/docs/api-backups/#get-backup) | `backups:read` | [`get_backup`](/docs/mcp-tools/#get_backup) |
| [`GET /api/v1/backups/{backupRunId}/artifacts`](/docs/api-backups/#list-backup-artifacts) | `backups:read` | [`list_backup_artifacts`](/docs/mcp-tools/#list_backup_artifacts) |
| [`GET /api/v1/projects/{projectId}/backup-policies`](/docs/api-backups/#list-backup-policies) | `backups:read` | [`list_backup_policies`](/docs/mcp-tools/#list_backup_policies) |
| [`GET /api/v1/backup-storage`](/docs/api-backups/#list-backup-storage) | `backups:read` | [`list_backup_storage`](/docs/mcp-tools/#list_backup_storage) |
| [`GET /api/v1/jobs/{jobId}`](/docs/api-backups/#get-job) | `backups:read` | [`get_job`](/docs/mcp-tools/#get_job) |
| [`GET /api/v1/jobs/{jobId}/logs`](/docs/api-backups/#read-job-logs) | `logs:read` | [`read_job_logs`](/docs/mcp-tools/#read_job_logs) |
| [`POST /api/v1/projects/{projectId}/backups`](/docs/api-backups/#run-backup) | `backups:write` | [`run_backup`](/docs/mcp-tools/#run_backup) |
| [`POST /api/v1/backups/{backupRunId}/restore`](/docs/api-backups/#restore-backup) | `backups:restore` | [`restore_backup`](/docs/mcp-tools/#restore_backup) |
| [`POST /api/v1/projects/{projectId}/backup-policies`](/docs/api-backups/#create-backup-policy) | `backups:write` | [`create_backup_policy`](/docs/mcp-tools/#create_backup_policy) |
| [`PUT /api/v1/projects/{projectId}/backup-policies/{policyId}`](/docs/api-backups/#update-backup-policy) | `backups:write` | [`update_backup_policy`](/docs/mcp-tools/#update_backup_policy) |
| [`DELETE /api/v1/projects/{projectId}/backup-policies/{policyId}`](/docs/api-backups/#delete-backup-policy) | `backups:write` | [`delete_backup_policy`](/docs/mcp-tools/#delete_backup_policy) |
| [`POST /api/v1/backup-storage`](/docs/api-backups/#create-backup-storage) | `backups:write` | — |
| [`PUT /api/v1/backup-storage/{storageId}`](/docs/api-backups/#update-backup-storage) | `backups:write` | — |
| [`DELETE /api/v1/backup-storage/{storageId}`](/docs/api-backups/#delete-backup-storage) | `backups:write` | — |
## Identity
| Endpoint | Permission | MCP tool |
| --- | --- | --- |
| [`GET /api/v1/identity`](/docs/api-operations/#get-identity) | `projects:read` | [`get_identity`](/docs/mcp-tools/#get_identity) |
## Get identity
`GET /api/v1/identity`
Read the authenticated user, selected team, and effective credential scopes.
**Permission:** `projects:read` · Team member.
**MCP:** [`get_identity`](/docs/mcp-tools/#get_identity).
**Query parameters**
None.
**Response:** HTTP 200.
| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `user` | `object` | Yes | — |
| `user.id` | `string` | Yes | Min 1; max 128 characters. |
| `user.name` | `string` | Yes | — |
| `user.username` | `string` | Yes | — |
| `team` | `object` | Yes | — |
| `team.id` | `string` | Yes | Min 1; max 128 characters. |
| `team.name` | `string` | Yes | — |
| `team.slug` | `string` | Yes | — |
| `scopes` | `string[]` | Yes | — |
| `projectIds` | `string[] or null` | Yes | Each item: Min 1; max 128 characters. |