> For the complete documentation index, see [llms.txt](https://docs.discloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.discloud.com/en/api-and-integrations/api-overview/project.md).

# Project

## List projects

> Lists the projects accessible by the user.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects":{"get":{"tags":["Projects"],"summary":"List projects","description":"Lists the projects accessible by the user.","operationId":"listProjects","responses":{"200":{"description":"Projects listed successfully","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Create project

> Creates a new project. Requires a compatible plan.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects":{"post":{"tags":["Projects"],"summary":"Create project","description":"Creates a new project. Requires a compatible plan.","operationId":"createProject","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Project name (max. 50 characters)"},"description":{"type":"string"},"icon":{"type":"string"},"teamID":{"type":"string","description":"Team to link (optional)"},"fromAppIDs":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"201":{"description":"Project created successfully","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Plan does not allow creating projects or limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Project details

> Returns the details of a project, including team and apps.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}":{"get":{"tags":["Projects"],"summary":"Project details","description":"Returns the details of a project, including team and apps.","operationId":"getProject","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Project loaded successfully","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No permission to view the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Update project

> Updates the name, description and/or icon of a project.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}":{"patch":{"tags":["Projects"],"summary":"Update project","description":"Updates the name, description and/or icon of a project.","operationId":"updateProject","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"}}}}}},"responses":{"200":{"description":"Project updated successfully","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No permission to manage the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Link/unlink team

> Links a team to the project (teamID) or unlinks it (teamID null). Owner only.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}/team":{"patch":{"tags":["Projects"],"summary":"Link/unlink team","description":"Links a team to the project (teamID) or unlinks it (teamID null). Owner only.","operationId":"setProjectTeam","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamID":{"type":"string","nullable":true,"description":"Team ID to link, or null to unlink"}}}}}},"responses":{"200":{"description":"Team linked or unlinked successfully","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid teamID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Not the project owner or insufficient plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project or team not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## List available apps

> Lists the apps that can be added to the project.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}/apps":{"get":{"tags":["Projects"],"summary":"List available apps","description":"Lists the apps that can be added to the project.","operationId":"projectAvailableApps","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Available apps listed successfully","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No permission to view the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Add/move app to project

> Adds an app to the project. If the cluster differs, use migrate=true to migrate (202 response, asynchronous migration).

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}/apps/{appID}":{"put":{"tags":["Projects"],"summary":"Add/move app to project","description":"Adds an app to the project. If the cluster differs, use migrate=true to migrate (202 response, asynchronous migration).","operationId":"addAppToProject","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"appID","in":"path","required":true,"description":"Application ID","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"migrate":{"type":"boolean","description":"If true, migrates the app to the project's cluster"}}}}}},"responses":{"200":{"description":"App added to the project successfully","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Migration started (processed asynchronously)","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No permission to manage the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project or app not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Cluster mismatch (migration required) or migration already in progress","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Remove app from project

> Removes the app from the project (sets projectID null). The app is not deleted.

```json
{"openapi":"3.0.3","info":{"title":"Discloud API","version":"2.0.0"},"tags":[{"name":"Projects","description":"Operations about projects (grouping of apps)"}],"servers":[{"url":"https://api.discloud.app/v2","description":"API Server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-token"}},"schemas":{"Error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"paths":{"/projects/{projectID}/apps/{appID}":{"delete":{"tags":["Projects"],"summary":"Remove app from project","description":"Removes the app from the project (sets projectID null). The app is not deleted.","operationId":"removeAppFromProject","parameters":[{"name":"projectID","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"appID","in":"path","required":true,"description":"Application ID","schema":{"type":"string"}}],"responses":{"200":{"description":"App removed from the project successfully","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No permission to manage the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Project not found or app does not belong to the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```
