Mojo UpDocs
API reference

Project queue

DELETE/projects/v1/{id}/roots/{rootId}

Owners. Without confirm, a repository with anything open answers 409 root_has_work with the counts. With it, the repository's open tasks are closed as cancelled, claims are released (reason root_removed), the repository leaves every delegates list and its live plans are abandoned. Its boards and map stay readable for 30 days.

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.

rootId*string

The repository.

Query Parameters

confirm?string

Send 1 (or true) to remove the repository although work is open on it.

Value in

  • "1"
  • "true"

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

application/json

curl -X DELETE "https://example.com/projects/v1/string/roots/string"
{  "root": "string",  "rootName": "string",  "cancelled": 0,  "released": 0,  "plans": 0,  "keptUntil": "2019-08-24T14:15:22Z"}
PUT/projects/v1/{id}/roots/{rootId}

Owners, as a person. Names which node holds the canonical clone, and (from 0.34.0) a repository's name, in words for people. A body of only name renames the repository on every clone and touches nothing else. A repository removed in the last 30 days, put again, comes back at once. An archived project is read-only.

Authorization

cloudSession
AuthorizationBearer <token>

Mojo Up AI Cloud: a person's access token from /auth/v1/token. Name the organisation with the X-Aioe-Organisation header where a request acts for one.

In: header

Path Parameters

id*string

The project.

rootId*string

The repository (letters, digits and _ . : -).

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 PUT "https://example.com/projects/v1/string/roots/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "rootId": "string",  "nodeId": "string",  "name": "string",  "remote": "string",  "remoteKey": "string",  "branch": "string",  "canonical": false,  "deviceId": "string",  "lastSeenAt": "string",  "hostState": "ready",  "distro": "string",  "targetState": "available",  "classification": "public"}
PUT/projects/v1/{id}/roots/{rootId}/classification

A project's owners, as a person (AIOE 0.40.0). Sets the repository's classification, never weaker than its project's; null goes back to inheriting the project's. An archived project is read-only.

Authorization

cloudSession
AuthorizationBearer <token>

Mojo Up AI Cloud: a person's access token from /auth/v1/token. Name the organisation with the X-Aioe-Organisation header where a request acts for one.

In: header

Path Parameters

id*string

The project.

rootId*string

The repository.

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 PUT "https://example.com/projects/v1/string/roots/string/classification" \  -H "Content-Type: application/json" \  -d '{    "classification": "string"  }'
{  "rootId": "string",  "rootName": "string",  "classification": "string",  "effective": "string"}
GET/projects/v1/{id}/agent-files

For members of the project (AIOE 0.40.0): each repository's instructions, hooks, skills, agents and MCP servers as its freshest reporting machine saw them, and whether the organisation has approved each server. A read; nothing is audited.

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

curl -X GET "https://example.com/projects/v1/string/agent-files"
{  "roots": [    {}  ],  "summary": {}}
GET/projects/v1/{id}/assurance

For members of the project (AIOE 0.40.0): the lowest assurance rating its classification allows, and for each provider and tier its rating, whether it is allowed and why.

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/assurance"
{  "classification": "string",  "effective": {    "minimumRating": "string",    "providers": [      {}    ]  }}
GET/projects/v1/{id}/parts

Newest first. A viewer or better. A part still waiting carries waitingFor, for example "waiting for a machine with api".

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.

Query Parameters

projectTask?string

Only the parts of this project task (its uid).

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

curl -X GET "https://example.com/projects/v1/string/parts"
{  "parts": [    {      "partId": "string",      "projectTask": "string",      "rootId": "string",      "rootName": "string",      "title": "string",      "state": "placing",      "requestedBy": "string",      "requestedAt": "2019-08-24T14:15:22Z",      "placedAt": "2019-08-24T14:15:22Z",      "deviceName": "string",      "waitingFor": "string"    }  ]}
POST/projects/v1/{id}/parts

A contributor or better. Sends the part to an online device that holds the repository. When nobody holding it is online the part is kept at the home and placed on the holder's next registration or heartbeat (waiting_for_device). Audited as part.place.

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/parts" \  -H "Content-Type: application/json" \  -d '{    "projectTask": "string",    "rootId": "string",    "title": "string"  }'
{  "partId": "string",  "state": "placed",  "rootName": "string"}
POST/projects/v1/{id}/queue/leases/renew

One call renews many leases and names the ones the caller has lost, with the reason: taken_over, released, lapsed, revoked, done or not_found. A contributor or better.

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/queue/leases/renew" \  -H "Content-Type: application/json" \  -d '{    "leases": [      {        "rootId": "string",        "board": "string",        "taskId": "string",        "epoch": 0      }    ]  }'
{  "leaseSeconds": 0,  "renewed": [    {      "rootId": "string",      "board": "string",      "taskId": "string",      "epoch": 0,      "leaseUntil": "2019-08-24T14:15:22Z"    }  ],  "lost": [    {      "rootId": "string",      "board": "string",      "taskId": "string",      "reason": "taken_over",      "by": "string",      "byName": "string",      "byDeviceName": "string",      "at": "2019-08-24T14:15:22Z"    }  ]}
POST/projects/v1/{id}/queue/claim/{taskId}/takeover

The claim's own person from any device, the task's assignee, or an owner may take it; an agent for the operations manager only once the claim is stale. The task goes back to the queue, or, with deviceId, to that device (the caller's own, or one that reaches the project) at the next epoch. ifEpoch fences the call: a claim that has moved on is refused.

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.

taskId*string

The claimed task.

Query Parameters

rootId*string

The board's root.

board*string

The board.

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/queue/claim/string/takeover?rootId=string&board=string" \  -H "Content-Type: application/json" \  -d '{    "ifEpoch": 0  }'
{  "task": {},  "claimedBy": {},  "previous": {}}

Release a claimed task

DELETE/projects/v1/{id}/queue/claim/{taskId}

A device names the claim's epoch and releases it. A person releases without one: the person working on the task, or an owner. The task goes back to the queue.

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.

taskId*string

The claimed task.

Query Parameters

rootId*string

The board's root.

board*string

The board.

epoch?integer

The claim's whole-number epoch. A device must send it; a claim that has moved on is refused.

Range0 <= value

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

application/json

curl -X DELETE "https://example.com/projects/v1/string/queue/claim/string?rootId=string&board=string"
{}