Oruoma Docs

API reference

Oruoma is API-first. The dashboard, SDK, and custom integrations should all consume the same workspace API surface instead of bypassing the service layer.

This page is a practical endpoint map for builders. Exact response payloads may evolve, but these resource groups and safety rules are the stable contract.

URL structure

Workspace routes are scoped by workspace id:

text
/api/ws/{workspace_id}/...

Platform/control routes are intentionally separate:

text
/api/platform/...
/api/workspaces
/api/me

If an integration is operating on tenant data, prefer the workspace route. Avoid control-account routes for automation unless you are building platform administration features.

Authentication

Use a workspace account API key for workspace routes:

http
Authorization: Bearer <workspace-account-api-key>

Recommended key policy:

IntegrationKey ownerRole
CI workflow creating jobsdedicated service accountleast role needed
Admin automation managing accounts/secretsdedicated admin service accountadmin
Public app user sessionhuman workspace accountleast role possible

Create one key per integration or machine. Never share one owner key across every tool like it is a communal toothbrush.

Common response conventions

List endpoints generally return either:

json
{ "items": [] }

or a resource-specific collection:

json
{ "models": [] }

Errors return a JSON object with a human-readable message:

json
{ "error": "This account does not have permission to perform that action" }

Treat non-2xx responses as actionable failures and surface the error field to administrators or integration owners.

Workspaces and current user

MethodPathPurpose
GET/api/meCurrent authenticated identity.
GET/api/workspacesWorkspaces visible to the control user/session.
GET/api/workspace/currentCurrent selected workspace.
POST/api/workspacesCreate a workspace.

Workspace accounts and API keys

MethodPathPurpose
GET/api/ws/{workspace_id}/accountsList workspace accounts.
POST/api/ws/{workspace_id}/accountsCreate a human or agent account.
GET/api/ws/{workspace_id}/accounts/{account_id}Get one account.
PATCH/api/ws/{workspace_id}/accounts/{account_id}Update account metadata/role.
POST/api/ws/{workspace_id}/accounts/{account_id}/disableDisable an account.
POST/api/ws/{workspace_id}/accounts/{account_id}/enableRe-enable an account.
GET/api/ws/{workspace_id}/accounts/{account_id}/api-keysList API key metadata.
POST/api/ws/{workspace_id}/accounts/{account_id}/api-keysCreate an API key; raw key is returned once.
DELETE/api/ws/{workspace_id}/api-keys/{api_key_id}Revoke an API key.

Account roles:

RoleTypical use
ownerWorkspace ownership and billing/security decisions.
adminAccounts, secrets, policies, broad operations.
operatorJobs, workflows, and approved integrations.
viewerRead-only observation, limited visibility by policy.

Jobs and tasks

MethodPathPurpose
GET/api/ws/{workspace_id}/jobsList jobs.
POST/api/ws/{workspace_id}/jobsCreate a durable job.
GET/api/ws/{workspace_id}/jobs/{job_id}Get a job with tasks.
PATCH/api/ws/{workspace_id}/jobs/{job_id}Update job fields/status.
POST/api/ws/{workspace_id}/jobs/{job_id}/terminateCancel remaining job tasks.
PATCH/api/ws/{workspace_id}/jobs/{job_id}/tasks/{task_id}Update task status/checkpoint.
POST/api/ws/{workspace_id}/jobs/{job_id}/tasks/{task_id}/notesAppend immutable task note.
POST/api/ws/{workspace_id}/jobs/{job_id}/tasks/{task_id}/renewRenew active task lease.
POST/api/ws/{workspace_id}/jobs/{job_id}/tasks/{task_id}/terminateCancel one task.
GET/api/ws/{workspace_id}/due-tasksList pending/stale tasks.

Task status lifecycle:

StatusMeaning
pendingReady to start.
runningActor is actively working.
completedWork is finished but may not yet be reported.
reportedHuman/system recipient has received the result.
failedAttempt failed and may retry.
cancelledWork was intentionally stopped.
exhaustedRetries are exhausted.

Teams and delegation graphs

MethodPathPurpose
GET/api/ws/{workspace_id}/teamsList teams.
POST/api/ws/{workspace_id}/teamsCreate a team.
GET/api/ws/{workspace_id}/teams/{team_id}Get team metadata.
PATCH/api/ws/{workspace_id}/teams/{team_id}Update team metadata.
GET/api/ws/{workspace_id}/teams/{team_id}/graphGet team delegation graph.
PUT/api/ws/{workspace_id}/teams/{team_id}/graphReplace graph nodes/edges.

Use delegation graph edges to make authority explicit. If agent A can delegate to agent B, that should be visible in the graph rather than hidden in a prompt.

Workflows

MethodPathPurpose
GET/api/ws/{workspace_id}/workflowsList workflows.
POST/api/ws/{workspace_id}/workflowsCreate workflow.
GET/api/ws/{workspace_id}/workflows/{workflow_id}Get workflow detail.
PATCH/api/ws/{workspace_id}/workflows/{workflow_id}Update workflow metadata/graph.
POST/api/ws/{workspace_id}/workflows/{workflow_id}/validateValidate graph without saving.
POST/api/ws/{workspace_id}/workflows/{workflow_id}/runsStart a run.
GET/api/ws/{workspace_id}/workflow-runsList runs.
GET/api/ws/{workspace_id}/workflow-runs/{run_id}Get run detail and steps.
POST/api/ws/{workspace_id}/workflow-runs/{run_id}/cancelStop/cancel a run.
POST/api/ws/{workspace_id}/workflow-runs/{run_id}/terminateForce-stop synonym for integrations.
GET/api/ws/{workspace_id}/workflow-runs/{run_id}/steps/{step_id}/deliverablesGet step deliverable status.
PATCH/api/ws/{workspace_id}/workflow-run-steps/{step_id}/deliverables/{deliverable_id}Mark deliverable complete/incomplete.

Deliverable actions

MethodPathPurpose
GET/api/ws/{workspace_id}/deliverable-actionsList built-in, community, and custom actions visible to the workspace.
POST/api/ws/{workspace_id}/custom-deliverable-actionsCreate workspace custom action.
PATCH/api/ws/{workspace_id}/custom-deliverable-actions/{action_id}Update workspace custom action.
POST/api/ws/{workspace_id}/deliverable-actions/resolveResolve an action reference for execution/rendering.

Use deliverable actions to replace vague “done” with explicit output shapes: approval decisions, URLs, reports, files, review forms, QA results, and similar artifacts.

Triggers

MethodPathPurpose
GET/api/ws/{workspace_id}/triggersList trigger definitions.
POST/api/ws/{workspace_id}/custom-triggersCreate workspace custom trigger.
PATCH/api/ws/{workspace_id}/custom-triggers/{trigger_id}Update workspace custom trigger.

Triggers should use workspace secrets for credentials and fail closed when a required secret is absent.

Workspace secrets

MethodPathPurpose
GET/api/ws/{workspace_id}/secretsList secret metadata only.
POST/api/ws/{workspace_id}/secretsCreate/update encrypted secret.
PATCH/api/ws/{workspace_id}/secrets/{name}Update encrypted secret.
DELETE/api/ws/{workspace_id}/secrets/{name}Delete secret.

Secret values are never returned after write. Reference them in configs with:

text
${secret.NAME}
${secrets.NAME}

Visibility policy

MethodPathPurpose
GET/api/ws/{workspace_id}/visibility-policyGet policy.
PUT/api/ws/{workspace_id}/visibility-policyReplace policy.
GET/api/ws/{workspace_id}/visibility-capabilitiesGet current caller capabilities.

Visibility policy controls which users can see accounts, teams, workflows, and other workspace resources. It should narrow views by default and expand access intentionally.

SDK example coverage

The private examples repository maps every user-facing SDK-exposed feature to a working path. Use these links when turning endpoint groups into runnable automation:

API/resource groupWorking example path
Jobs, tasks, delegation, messages, team chat, tunnels, teams, workflows, custom nodes, accounts, storage, inference, secrets, and trigger URLscore_workspace_features.py
On-the-Job workflow graph and evidence-gated daily jobon_the_job_workflow.py
Network Boundary policy and network-solution payload helpersnetwork_solution_payloads.py
Custom private Network Boundary gateway registration and verificationcustom_private_gateway.py
Network Boundary audit search, explain, and exportnetwork_boundary_audit_examples.py
JavaScript Network Solution payload helpersnetwork-solution-payloads.mjs

If a route is added to this API page, add or update an example link at the same time. Ghost APIs are how platforms become archaeological sites.

API design rules for builders

  • Workspace features must exist at the API layer first; UI and tooling are consumers.
  • Do not implement dashboard-only behavior that cannot be automated.
  • Return actionable errors with enough context to fix the request.
  • Keep tenant data behind /api/ws/{workspace_id} boundaries.
  • Use immutable notes/audit events for work history.
  • Prefer disabling risky resources before deleting them when administrators need recovery time.
  • Use encrypted workspace secrets for credentials.
  • Keep generated docs and dashboard docs sourced from repo markdown, not separate hand-written website copies.