Mojo UpDocs
API reference

Project orders

GET/projects/v1/{id}/orders

The last 100 orders of the project, newest first, with a count by state. With batchId, only that batch. A project's owners.

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.

Query Parameters

batchId?string

The batch an earlier POST answered with.

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/orders"
{  "batchId": "string",  "orders": [    {      "id": "string",      "deviceId": "string",      "kind": "model.download",      "body": {        "property1": null,        "property2": null      },      "issuedAt": "string",      "issuedBy": {        "id": "string",        "name": "string"      },      "projectId": "string",      "batchId": "string",      "expiresAt": "string",      "state": "pending",      "message": "string",      "answeredAt": "string"    }  ],  "summary": {}}
POST/projects/v1/{id}/orders

A project owner (an administrator or portfolio manager counts) sends one order, { kind, body }, to every approved node assigned to the project or owned by it; never a desktop. The nodes take it on their next heartbeat and answer there. kind is one of model.download, model.remove, runtime.install, runtime.remove, dlp.configure and setting.set; a model download is ordered from the approved models in the catalogue only. Teams plan and above.

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.

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/orders" \  -H "Content-Type: application/json" \  -d '{    "kind": "model.download",    "body": {      "property1": null,      "property2": null    }  }'
{  "batchId": "string",  "orders": [    {      "id": "string",      "deviceId": "string",      "kind": "model.download",      "body": {        "property1": null,        "property2": null      },      "issuedAt": "string",      "issuedBy": {        "id": "string",        "name": "string"      },      "projectId": "string",      "batchId": "string",      "expiresAt": "string",      "state": "pending",      "message": "string",      "answeredAt": "string"    }  ],  "skipped": [    {      "deviceId": "string",      "name": "string",      "error": "string",      "message": "string"    }  ],  "summary": {    "total": 0,    "pending": 0,    "done": 0,    "failed": 0,    "refused": 0,    "expired": 0  }}
GET/fleet/v1/orders/{orderId}/evaluation

A node reads this for a pending specialist.evaluate order it holds (AIOE 0.45.0, extended in 0.46.0): the specialist, the team that uses it if one was named, the dataset, the platform's own specialistDigest and each member's rawInstructions. Answers 404 for an order that is not this machine's or not an evaluation, 409 once the order is no longer pending, and 410 (specialist_gone or dataset_gone) when the specialist or dataset was removed after the order was sent: refuse the order.

Authorization

deviceToken
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

orderId*string

The pending specialist.evaluate order.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/fleet/v1/orders/string/evaluation"
{  "orderId": "string",  "specialistDigest": "string",  "rawInstructions": {    "property1": "string",    "property2": "string"  },  "specialist": {},  "team": {},  "dataset": {    "id": "string",    "name": "string",    "version": "string",    "content": null  }}
GET/fleet/v1/orders/{orderId}/foundry

For a pending foundry.publish or foundry.unpublish order this node holds (AIOE 0.48.0): the team, the member, the project the checks used, the Foundry policy clause, and teamConfig, the team as the project's team list gives it. The pending order is the authority; the node never speaks as a person.

Authorization

deviceToken
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

orderId*string

The pending Foundry order.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/fleet/v1/orders/string/foundry"
{  "orderId": "string",  "kind": "foundry.publish",  "team": {},  "member": {},  "project": {},  "clause": {},  "teamConfig": {}}
PUT/fleet/v1/orders/{orderId}/foundry/block

Writes only that member's Foundry block. On an unpublish, { "block": null } or a block of only the project and deployment drops what the publish recorded and keeps the member on Foundry. A block naming another project than the order is refused (endpoint_differs).

Authorization

deviceToken
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

orderId*string

The pending Foundry order.

Request Body

application/json

The member's Foundry block, or null.

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/fleet/v1/orders/string/foundry/block" \  -H "Content-Type: application/json" \  -d '{    "block": null  }'
{}
GET/fleet/v1/orders/{orderId}/foundry/credentials

From the organisation secrets FOUNDRY_TENANT_ID, FOUNDRY_CLIENT_ID and FOUNDRY_CLIENT_SECRET, for this pending order only, never cached (no-store), and audited as a secret release for the person who asked.

Authorization

deviceToken
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

orderId*string

The pending Foundry order.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/fleet/v1/orders/string/foundry/credentials"
{  "tenantId": "string",  "clientId": "string",  "clientSecret": "string"}
DELETE/projects/v1/{id}/orders/{orderId}

A project's owners. Only a pending order can be cancelled.

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.

orderId*string

The order.

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 DELETE "https://example.com/projects/v1/string/orders/string"
{  "id": "string",  "deviceId": "string",  "kind": "model.download",  "body": {    "property1": null,    "property2": null  },  "issuedAt": "string",  "issuedBy": {    "id": "string",    "name": "string"  },  "projectId": "string",  "batchId": "string",  "expiresAt": "string",  "state": "pending",  "message": "string",  "answeredAt": "string"}