Mojo UpDocs
API reference

Project lifecycle

GET/projects/v1/join-requests

The requests to join a project the caller has made, as a person.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/projects/v1/join-requests"
[  {}]

Ask to join a project

POST/projects/v1/{id}/join-request

Asks the project's owners to let the caller in. Done as a person.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/join-request" \  -H "Content-Type: application/json" \  -d '{}'
{}
GET/projects/v1/{id}/requests

The pending requests to join the project, or to merge another project into it. Owners only; anyone else is answered 404.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/projects/v1/string/requests"
[  {}]

Approve a request

POST/projects/v1/{id}/join-requests/{requestId}/approve

Approves a request that belongs to this project. The body may carry a reason of at most 2000 characters.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

requestId*string

The request.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/join-requests/string/approve" \  -H "Content-Type: application/json" \  -d '{}'
{}

Decline a request

POST/projects/v1/{id}/join-requests/{requestId}/decline

Declines a request that belongs to this project. The body may carry a reason of at most 2000 characters.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

requestId*string

The request.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/join-requests/string/decline" \  -H "Content-Type: application/json" \  -d '{}'
{}
POST/projects/v1/{id}/merge

Owners of the source project, or an administrator. dryRun=1 answers what would move, with a sentence, and changes nothing. Otherwise the merge waits on the target's owners' approval and answers with the request; it happens at once when the caller owns both projects, or with force: true for an administrator.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project to merge away.

Query Parameters

dryRun?string

1 or true to preview only.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/merge" \  -H "Content-Type: application/json" \  -d '{    "into": "string"  }'
{}

Archive a project

POST/projects/v1/{id}/archive

Owners, or an administrator. A project already archived or merged answers 409.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/archive"
{}
POST/projects/v1/{id}/restore

Owners, or an administrator.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/restore"
{}
POST/projects/v1/{id}/transfer

One of the owners, or an administrator. The new owner is a person who has signed in to the organisation. An archived or merged project is restored first.

Authorization

AuthorizationBearer <token>

A device access token from the device-code flow (aioe_at_…). A DPoP-bound token is sent as Authorization: DPoP <token> with a fresh DPoP proof on every request.

In: header

Path Parameters

id*string

The project.

Header Parameters

X-Aioe-Organisation?string

Mojo Up AI Cloud only, with a person's access token: the id of the organisation the request is for. A person's session is not tied to one organisation, so each request names it. Device tokens already carry their organisation.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/v1/string/transfer" \  -H "Content-Type: application/json" \  -d '{    "to": "string"  }'
{}