API reference
Hives
Compute: projects, deployments, functions, secrets, schedules, queues, topics, volumes, metrics and logs.
- Operations
- 175
- Base path
https://os.one.ml/api/v1/hives- Scopes
hives:readhives:write- API keys
- 26 failed with an API key · 27 need a signed-in session · 4 refused to API keys · 53 not yet tested · 65 tested with an API key
- SDK
genesis.call('hives_me', …)· helpers undergenesis.hives- MCP
- 131 tools; the other 44 through
genesis_call
Operations
| Operation | Endpoint | API key |
|---|---|---|
| Return the authenticated user. | GET/auth/me | Tested with an API key |
| List invoices for the authenticated org | GET/billing/invoices | Signed-in session |
| Get a specific invoice | GET/billing/invoices/{invoice_id} | Signed-in session |
| List available billing plans (public) | GET/billing/plans | Signed-in session |
| Create a new subscription | POST/billing/subscribe | Signed-in session |
| Get current subscription for the authenticated org | GET/billing/subscription | Signed-in session |
| Cancel subscription | DELETE/billing/subscription | Signed-in session |
| Change subscription plan | PUT/billing/subscription/plan | Signed-in session |
| Get usage summary for the authenticated org | GET/billing/usage | Signed-in session |
| hives_get_context_project | GET/context/project | API keys refused |
| hives_set_context_project | POST/context/project | API keys refused |
| hives_detach_context_project | DELETE/context/project | API keys refused |
| List all fleets known to the controller. | GET/fleets | Failed with an API key |
| Deploy a MAP fleet from a TOML manifest. | POST/fleets | Tested with an API key |
| Get detailed status for a single fleet. | GET/fleets/{fleet_id} | Failed with an API key |
| Teardown a fleet — stop all instances and remove from discovery. | DELETE/fleets/{fleet_id} | Failed with an API key |
| List organizations for the authenticated user | GET/organizations | Signed-in session |
| Create a new organization | POST/organizations | Signed-in session |
| Get a single organization | GET/organizations/{org_id} | Signed-in session |
| Delete an organization | DELETE/organizations/{org_id} | Signed-in session |
| Update an organization | PATCH/organizations/{org_id} | Signed-in session |
| List pending invites | GET/organizations/{org_id}/invites | Signed-in session |
| Invite a member to the organization | POST/organizations/{org_id}/invites | Signed-in session |
| Cancel a pending invite | DELETE/organizations/{org_id}/invites/{invite_id} | Signed-in session |
| List organization members | GET/organizations/{org_id}/members | Signed-in session |
| Remove a member from the organization | DELETE/organizations/{org_id}/members/{member_id} | Signed-in session |
| Update a member's role | PUT/organizations/{org_id}/members/{member_id}/role | Signed-in session |
| Get SSO configuration for an organization | GET/organizations/{org_id}/sso | Signed-in session |
| Create a new SSO connection | POST/organizations/{org_id}/sso | Signed-in session |
| Delete an SSO connection | DELETE/organizations/{org_id}/sso/{connection_id} | Signed-in session |
| Get organization usage (proxied to Cabbage) | GET/organizations/{org_id}/usage | Signed-in session |
| Create a Stripe checkout session | POST/payments/checkout | Signed-in session |
| List payment methods for the authenticated org | GET/payments/methods | Signed-in session |
| Add a payment method | POST/payments/methods | Signed-in session |
| Get Stripe billing portal URL | POST/payments/portal | Signed-in session |
| List all projects for the authenticated tenant | GET/projects | Tested with an API key |
| Create a new project | POST/projects | Tested with an API key |
| Get a project by ID | GET/projects/{project_id} | Failed with an API key |
| Delete a project | DELETE/projects/{project_id} | Tested with an API key |
| Update a project | PATCH/projects/{project_id} | Tested with an API key |
| List activity for an authenticated org's project | GET/projects/{project_id}/activity | Tested with an API key |
| List all cron jobs for a project | GET/projects/{project_id}/cron | Tested with an API key |
| Create a new cron job | POST/projects/{project_id}/cron | — |
| Get a specific cron job | GET/projects/{project_id}/cron/{cron_id} | — |
| Delete a cron job | DELETE/projects/{project_id}/cron/{cron_id} | — |
| Update a cron job | PATCH/projects/{project_id}/cron/{cron_id} | — |
| Pause a cron job | POST/projects/{project_id}/cron/{cron_id}/pause | — |
| Resume a cron job | POST/projects/{project_id}/cron/{cron_id}/resume | — |
| Get run history for a cron job | GET/projects/{project_id}/cron/{cron_id}/runs | — |
| Manually trigger a cron job | POST/projects/{project_id}/cron/{cron_id}/trigger | — |
| List all deployments for a project | GET/projects/{project_id}/deployments | Tested with an API key |
| Create a new deployment | POST/projects/{project_id}/deployments | — |
| Get a specific deployment | GET/projects/{project_id}/deployments/{deployment_id} | — |
| Delete an inactive deployment | DELETE/projects/{project_id}/deployments/{deployment_id} | — |
| Cancel a pending deployment and stop its runtime work | POST/projects/{project_id}/deployments/{deployment_id}/cancel | — |
| Invoke a real running owned deployment and return the raw guest HTTP response | POST/projects/{project_id}/deployments/{deployment_id}/invoke | — |
| Query logs for a project | GET/projects/{project_id}/deployments/{deployment_id}/logs | — |
| Get deployment metrics | GET/projects/{project_id}/deployments/{deployment_id}/metrics | — |
| Promote a deployment to production | POST/projects/{project_id}/deployments/{deployment_id}/promote | — |
| Roll back to the selected deployment in this project | POST/projects/{project_id}/deployments/{deployment_id}/rollback | — |
| Stop an active deployment after runtime acknowledgment | POST/projects/{project_id}/deployments/{deployment_id}/stop | — |
| Upload a real WASM artifact and deploy it | POST/projects/{project_id}/deployments/upload | Failed with an API key |
| List all domains for a project | GET/projects/{project_id}/domains | Tested with an API key |
| Add a custom domain to a project | POST/projects/{project_id}/domains | Tested with an API key |
| Provision SSL certificate for a domain | POST/projects/{project_id}/domains/{domain_id}/ssl | — |
| Verify domain DNS configuration | POST/projects/{project_id}/domains/{domain_id}/verify | — |
| Reveal one owned environment value through Genesis KMS with org/project AAD. | GET/projects/{project_id}/env/{key}/reveal | Tested with an API key |
| List persisted environment names, including retained legacy entries. | GET/projects/{project_id}/env/metadata | Tested with an API key |
| Encrypt and persist a flat map; acknowledge updated names without values. | PUT/projects/{project_id}/env/metadata | Tested with an API key |
| List all functions for a project | GET/projects/{project_id}/functions | Tested with an API key |
| Create a new function | POST/projects/{project_id}/functions | — |
| Get a specific function | GET/projects/{project_id}/functions/{function_id} | — |
| Update an owned function and encrypted overrides | PUT/projects/{project_id}/functions/{function_id} | — |
| Unregister an owned function before removing metadata | DELETE/projects/{project_id}/functions/{function_id} | — |
| Complete a real function invocation and return the raw guest HTTP response | POST/projects/{project_id}/functions/{function_id}/invoke | — |
| Complete invocation through the compatibility alias (no durable queue) | POST/projects/{project_id}/functions/{function_id}/invoke/async | — |
| Get function metrics | GET/projects/{project_id}/functions/{function_id}/metrics | — |
| Get function invocations time series | GET/projects/{project_id}/functions/{function_id}/metrics/invocations | — |
| Read original funding operation status without replaying the guest | GET/projects/{project_id}/functions/{function_id}/operations/{operation_id} | — |
| Release an unused reservation only if no guest dispatch occurred | POST/projects/{project_id}/functions/{function_id}/operations/{operation_id}/release | — |
| Query logs for a project | GET/projects/{project_id}/logs | Tested with an API key |
| Stream real-time logs for a project via SSE | GET/projects/{project_id}/logs/stream | Tested with an API key |
| Return existing categories with visibility-scoped actual counts. | GET/projects/{project_id}/marketplace/categories | Tested with an API key |
| Return only persisted featured packages backed by real artifacts. | GET/projects/{project_id}/marketplace/featured | Tested with an API key |
| List selected-project installations, preserving unresolved state. | GET/projects/{project_id}/marketplace/installed | Tested with an API key |
| Read a persisted installation after an interrupted operation. | GET/projects/{project_id}/marketplace/installed/{installation_id} | — |
| Persist uninstall intent before stopping every retained workload. | DELETE/projects/{project_id}/marketplace/installed/{installation_id} | — |
| Explicitly finish an existing durable operation; this never starts a build. | POST/projects/{project_id}/marketplace/installed/{installation_id}/reconcile | — |
| Search the persisted visible catalog. | GET/projects/{project_id}/marketplace/packages | Tested with an API key |
| Read the selected package and its actual immutable versions. | GET/projects/{project_id}/marketplace/packages/{slug} | — |
| Install a real package. A 202 acknowledges the durable operation, not readiness. | POST/projects/{project_id}/marketplace/packages/{slug}/install | — |
| Update through a real successor deployment while retaining the old runtime. | POST/projects/{project_id}/marketplace/packages/{slug}/update | — |
| Read every eligible version using bounded pages. | GET/projects/{project_id}/marketplace/packages/{slug}/versions | — |
| Publish a verified selected-project artifact; never fetch an arbitrary URL. | POST/projects/{project_id}/marketplace/packages/publish | — |
| Get project metrics overview | GET/projects/{project_id}/metrics | Tested with an API key |
| Get dashboard metrics for retained completed API invocations. | GET/projects/{project_id}/metrics/dashboard | Tested with an API key |
| Get error rate metrics | GET/projects/{project_id}/metrics/errors | Tested with an API key |
| Get response time metrics | GET/projects/{project_id}/metrics/latency | Tested with an API key |
| Get real-time metrics for dashboard | GET/projects/{project_id}/metrics/realtime | Tested with an API key |
| Get request metrics time series | GET/projects/{project_id}/metrics/requests | Tested with an API key |
| Get measured API invocation metadata and real owned resource counts | GET/projects/{project_id}/metrics/usage | Tested with an API key |
| hives_list_native_queue | GET/projects/{project_id}/queues | Tested with an API key |
| hives_create_native_queue | POST/projects/{project_id}/queues | Tested with an API key |
| hives_inspect_native_queue | GET/projects/{project_id}/queues/{queue_id} | Tested with an API key |
| hives_delete_native_queue | DELETE/projects/{project_id}/queues/{queue_id} | Tested with an API key |
| hives_configure_native_queue | PATCH/projects/{project_id}/queues/{queue_id} | Failed with an API key |
| hives_get_native_queue_consumer | GET/projects/{project_id}/queues/{queue_id}/consumer | Tested with an API key |
| hives_configure_native_queue_consumer | PUT/projects/{project_id}/queues/{queue_id}/consumer | Failed with an API key |
| hives_remove_native_queue_consumer | DELETE/projects/{project_id}/queues/{queue_id}/consumer | Tested with an API key |
| hives_consumers_native_queue | GET/projects/{project_id}/queues/{queue_id}/consumers | Failed with an API key |
| hives_dead_letters_native_queue | GET/projects/{project_id}/queues/{queue_id}/dlq | Failed with an API key |
| hives_purge_dlq_native_queue | DELETE/projects/{project_id}/queues/{queue_id}/dlq | Failed with an API key |
| hives_delete_dlq_native_queue | DELETE/projects/{project_id}/queues/{queue_id}/dlq/{message_id} | Failed with an API key |
| hives_replay_native_queue | POST/projects/{project_id}/queues/{queue_id}/dlq/replay | Failed with an API key |
| hives_dlq_stats_native_queue | GET/projects/{project_id}/queues/{queue_id}/dlq/stats | Failed with an API key |
| Send one message with an explicit original funding key when required | POST/projects/{project_id}/queues/{queue_id}/messages | API keys refused |
| hives_ack_native_queue | POST/projects/{project_id}/queues/{queue_id}/messages/{message_id}/ack | Failed with an API key |
| hives_nack_native_queue | POST/projects/{project_id}/queues/{queue_id}/messages/{message_id}/nack | Failed with an API key |
| hives_receive_native_queue | POST/projects/{project_id}/queues/{queue_id}/messages/receive | Tested with an API key |
| Read the original queue send operation without any queue effect | GET/projects/{project_id}/queues/{queue_id}/operations/{operation_id} | Failed with an API key |
| hives_pause_native_queue | POST/projects/{project_id}/queues/{queue_id}/pause | Tested with an API key |
| hives_purge_native_queue | POST/projects/{project_id}/queues/{queue_id}/purge | Tested with an API key |
| hives_resume_native_queue | POST/projects/{project_id}/queues/{queue_id}/resume | Tested with an API key |
| hives_stats_native_queue | GET/projects/{project_id}/queues/{queue_id}/stats | Tested with an API key |
| Create a debug session for attaching to a running instance | POST/projects/{project_id}/remote/debug | Failed with an API key |
| List active remote sessions for a project | GET/projects/{project_id}/remote/sessions | Failed with an API key |
| Close an active remote session | DELETE/projects/{project_id}/remote/sessions/{session_id} | — |
| Delete a file via SFTP | DELETE/projects/{project_id}/remote/sftp/{target_id}/delete | Failed with an API key |
| List files via SFTP | GET/projects/{project_id}/remote/sftp/{target_id}/ls | — |
| Read a file via SFTP (returns base64-encoded content) | GET/projects/{project_id}/remote/sftp/{target_id}/read | Failed with an API key |
| Write a file via SFTP | POST/projects/{project_id}/remote/sftp/{target_id}/write | Failed with an API key |
| Create an SSH session for remote access | POST/projects/{project_id}/remote/ssh | Failed with an API key |
| Create a WebSocket terminal session | POST/projects/{project_id}/remote/terminal | Failed with an API key |
| Read compiled serving metadata after verified owned project lookup | GET/projects/{project_id}/runtimes | Tested with an API key |
| List all secrets for a project (names and metadata only, not values) | GET/projects/{project_id}/secrets | Tested with an API key |
| Create a new secret | POST/projects/{project_id}/secrets | Tested with an API key |
| Get a secret's metadata (not its value) | GET/projects/{project_id}/secrets/{secret_id} | Tested with an API key |
| Update a secret's value (creates a new version) | PUT/projects/{project_id}/secrets/{secret_id} | Tested with an API key |
| Delete a secret | DELETE/projects/{project_id}/secrets/{secret_id} | Tested with an API key |
| Explicitly reveal a secret value (sensitive output, audit logged) | GET/projects/{project_id}/secrets/{secret_id}/reveal | Tested with an API key |
| Bulk create or update secrets | PUT/projects/{project_id}/secrets/bulk | Tested with an API key |
| hives_get_project_settings | GET/projects/{project_id}/settings | Tested with an API key |
| hives_update_project_settings | PATCH/projects/{project_id}/settings | Tested with an API key |
| List all storage buckets for a project | GET/projects/{project_id}/storage/buckets | Tested with an API key |
| Create a new storage bucket | POST/projects/{project_id}/storage/buckets | Failed with an API key |
| Get a specific bucket | GET/projects/{project_id}/storage/buckets/{bucket_id} | — |
| Delete a storage bucket | DELETE/projects/{project_id}/storage/buckets/{bucket_id} | — |
| Get CORS rules for a bucket | GET/projects/{project_id}/storage/buckets/{bucket_id}/cors | — |
| Set CORS rules for a bucket | PUT/projects/{project_id}/storage/buckets/{bucket_id}/cors | — |
| List objects in a bucket | GET/projects/{project_id}/storage/buckets/{bucket_id}/objects | — |
| hives_upload_object_by_key | PUT/projects/{project_id}/storage/buckets/{bucket_id}/objects | — |
| hives_delete_object_by_key | DELETE/projects/{project_id}/storage/buckets/{bucket_id}/objects | — |
| Upload an object to a bucket via a server-side proxy. | PUT/projects/{project_id}/storage/buckets/{bucket_id}/objects/{key} | — |
| Delete an object from a bucket | DELETE/projects/{project_id}/storage/buckets/{bucket_id}/objects/{key} | — |
| hives_download_object_by_key | GET/projects/{project_id}/storage/buckets/{bucket_id}/objects/download | — |
| Generate a presigned URL for object access | POST/projects/{project_id}/storage/buckets/{bucket_id}/presigned | — |
| Explicit recovery observes provider generations. It never replays an unknown | POST/projects/{project_id}/storage/buckets/{bucket_id}/reconcile | — |
| hives_list_native_topic | GET/projects/{project_id}/topics | Tested with an API key |
| hives_create_native_topic | POST/projects/{project_id}/topics | Tested with an API key |
| hives_inspect_native_topic | GET/projects/{project_id}/topics/{topic_id} | Tested with an API key |
| hives_delete_native_topic | DELETE/projects/{project_id}/topics/{topic_id} | Tested with an API key |
| hives_publish_native_topic | POST/projects/{project_id}/topics/{topic_id}/messages | Failed with an API key |
| hives_subscriptions_native_topic | GET/projects/{project_id}/topics/{topic_id}/subscriptions | Tested with an API key |
| hives_subscribe_native_topic | POST/projects/{project_id}/topics/{topic_id}/subscriptions | Tested with an API key |
| hives_unsubscribe_native_topic | DELETE/projects/{project_id}/topics/{topic_id}/subscriptions/{subscription_id} | Tested with an API key |
| List persisted local volumes | GET/projects/{project_id}/volumes | Tested with an API key |
| Create bounded local persistent storage | POST/projects/{project_id}/volumes | Tested with an API key |
| Read persisted volume state and measured usage | GET/projects/{project_id}/volumes/{volume_id} | Tested with an API key |
| Delete a detached volume and its data | DELETE/projects/{project_id}/volumes/{volume_id} | Tested with an API key |
| Attach or reconnect the exact existing attachment | POST/projects/{project_id}/volumes/{volume_id}/mount | — |
| Detach a volume without a request body | POST/projects/{project_id}/volumes/{volume_id}/unmount | Failed with an API key |
| List deployment regions available for project creation. | GET/regions | Tested with an API key |
| hives_list_runtimes | GET/runtimes | Tested with an API key |
| hives_get_runtime | GET/runtimes/{name} | Tested with an API key |
| hives_select_runtime | GET/runtimes/select | Tested with an API key |
Auth
Return the authenticated user.
GET/v1/hives/auth/me
The handler never calls another service — it shapes the response entirely from the AuthContext that middleware already validated. This means GET /v1/auth/me remains available even if the upstream IAM service is degraded, which is critical for the console's "am I still logged in?" poll.
Responses
- 200Current authenticated user
Response fields
avatarstring | nullOptional avatar URL. The Hives API does not currently populate this — it is exposed for forward compatibility with the console type contract.
createdAtstringrequiredISO 8601 timestamp describing the creation of the response. This is included so the client can cache it; creation-time of the underlying user record lives in the platform IAM service, not Hives.
emailstringrequiredEmail address of the authenticated principal. Falls back to the empty string when the upstream identity provider did not populate an email — this happens for machine-to-machine API keys.
idstringrequiredStable subject identifier (user or service principal). Mirrors
AuthContext::subject_idand corresponds to the JWTsubclaim when authenticated via a bearer token.namestringrequiredHuman-readable display name. When the JWT does not carry a name, this is derived (in order) from: the local-part of the email, or the subject identifier, so the field is never empty.
organizationIdstring | nullOptional active organization / tenant identifier. Set to
Nonewhen the authenticated subject is not bound to a tenant (e.g. a newly-signed-in user prior to selecting an organization).rolestringrequiredMost-privileged organization role carried by the subject. Roles are collapsed using the ordering
owner > admin > member > viewer. When no recognized role is present,memberis returned as the safe default — matching the console default for authenticated users.
- 401Unauthorized — no valid JWT or API key
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/auth/me" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_me'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_me",
"arguments": {}
}
}
}Billing
List invoices for the authenticated org
GET/v1/hives/billing/invoices
Parameters
limitquery · integer | null (int32)offsetquery · integer | null (int32)
Responses
- 200Invoices for the authenticated organization
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/billing/invoices" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_invoices'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_invoices",
"arguments": {}
}
}
}Get a specific invoice
GET/v1/hives/billing/invoices/{invoice_id}
Parameters
invoice_idpath · stringrequiredInvoice ID
Responses
- 200Invoice details
Response fields
A JSON object.
- 401Unauthorized
- 404Invoice not found
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/billing/invoices/$INVOICE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_invoice', {
invoice_id: '<invoice_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_invoice",
"arguments": {
"invoice_id": "<invoice_id>"
}
}
}
}List available billing plans (public)
GET/v1/hives/billing/plans
Responses
- 200Available billing plans
Response fields
A JSON object.
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/billing/plans" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_plans'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_plans",
"arguments": {}
}
}
}Create a new subscription
POST/v1/hives/billing/subscribe
Request body application/json
plan_idstringrequired
Responses
- 200Subscription created
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/billing/subscribe" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_subscription', {
body: {
plan_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_subscription",
"arguments": {
"body": {
"plan_id": "string"
}
}
}
}
}Get current subscription for the authenticated org
GET/v1/hives/billing/subscription
Responses
- 200Current subscription
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/billing/subscription" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_subscription'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_subscription",
"arguments": {}
}
}
}Cancel subscription
DELETE/v1/hives/billing/subscription
Responses
- 200Subscription cancelled
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/billing/subscription" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_cancel_subscription'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_cancel_subscription",
"arguments": {}
}
}
}Change subscription plan
PUT/v1/hives/billing/subscription/plan
Request body application/json
plan_idstringrequired
Responses
- 200Subscription plan changed
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/billing/subscription/plan" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_change_plan', {
body: {
plan_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_change_plan",
"arguments": {
"body": {
"plan_id": "string"
}
}
}
}
}Get usage summary for the authenticated org
GET/v1/hives/billing/usage
Parameters
periodquery · string | null
Responses
- 200Usage summary
Response fields
A JSON object.
- 401Unauthorized
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/billing/usage" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_usage'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_usage",
"arguments": {}
}
}
}Context
hives_get_context_project
GET/v1/hives/context/project
Responses
- 200Owned Hives project for verified native selection
Response fields
bindingobjectrequiredbinding.createdAtstring (date-time)requiredbinding.hivesProjectIdstringrequiredprojectobjectrequiredPersisted metadata only: no secret values or invented runtime counters.
project.active_deployment_idstring | nullproject.created_atstring (date-time)requiredproject.descriptionstring | nullproject.idstringrequiredproject.kindstringrequiredproject.namestringrequiredproject.slugstringrequiredproject.statusstringrequiredproject.tenant_idstringrequiredproject.updated_atstring (date-time)requiredselectedContextobjectrequiredField declaration order is the producer's canonical JSON order.
selectedContext.expiresAtMsinteger (int64)requiredmin 0
selectedContext.fleetIdstring | nullselectedContext.organizationIdstringrequiredselectedContext.platformIdstringrequiredselectedContext.projectIdstringrequiredselectedContext.resourceEnvironmentstringrequiredselectedContext.schemaVersioninteger (int32)requiredmin 0
selectedContext.workspaceIdstringrequired
- 401Invalid or expired signed identity or selection
- 404Selection has no Hives binding
- 409Selection required or linked project unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/context/project" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_context_project'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_context_project",
"arguments": {}
}
}hives_set_context_project
POST/v1/hives/context/project
Request body application/json
createnull | objectlinknull | object
Responses
- 200Existing or explicitly linked owned project
Response fields
bindingobjectrequiredbinding.createdAtstring (date-time)requiredbinding.hivesProjectIdstringrequiredprojectobjectrequiredPersisted metadata only: no secret values or invented runtime counters.
project.active_deployment_idstring | nullproject.created_atstring (date-time)requiredproject.descriptionstring | nullproject.idstringrequiredproject.kindstringrequiredproject.namestringrequiredproject.slugstringrequiredproject.statusstringrequiredproject.tenant_idstringrequiredproject.updated_atstring (date-time)requiredselectedContextobjectrequiredField declaration order is the producer's canonical JSON order.
selectedContext.expiresAtMsinteger (int64)requiredmin 0
selectedContext.fleetIdstring | nullselectedContext.organizationIdstringrequiredselectedContext.platformIdstringrequiredselectedContext.projectIdstringrequiredselectedContext.resourceEnvironmentstringrequiredselectedContext.schemaVersioninteger (int32)requiredmin 0
selectedContext.workspaceIdstringrequired
- 201Created project and binding committed atomically
Response fields
bindingobjectrequiredbinding.createdAtstring (date-time)requiredbinding.hivesProjectIdstringrequiredprojectobjectrequiredPersisted metadata only: no secret values or invented runtime counters.
project.active_deployment_idstring | nullproject.created_atstring (date-time)requiredproject.descriptionstring | nullproject.idstringrequiredproject.kindstringrequiredproject.namestringrequiredproject.slugstringrequiredproject.statusstringrequiredproject.tenant_idstringrequiredproject.updated_atstring (date-time)requiredselectedContextobjectrequiredField declaration order is the producer's canonical JSON order.
selectedContext.expiresAtMsinteger (int64)requiredmin 0
selectedContext.fleetIdstring | nullselectedContext.organizationIdstringrequiredselectedContext.platformIdstringrequiredselectedContext.projectIdstringrequiredselectedContext.resourceEnvironmentstringrequiredselectedContext.schemaVersioninteger (int32)requiredmin 0
selectedContext.workspaceIdstringrequired
- 400Provide exactly create or link
- 401Invalid or expired signed identity or selection
- 404Link target does not belong to verified org
- 409Conflicting binding or project
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/context/project" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_set_context_project', {
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_set_context_project",
"arguments": {
"body": {}
}
}
}hives_detach_context_project
DELETE/v1/hives/context/project
Responses
- 200Explicitly detached binding; Hives project retained
Response fields
hivesProjectIdstringrequiredremovedbooleanrequired
- 401Invalid or expired signed selection
- 404Selection has no binding
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/context/project" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_detach_context_project'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_detach_context_project",
"arguments": {}
}
}Fleets
List all fleets known to the controller.
GET/v1/hives/fleets
Responses
- 200Fleet list
Response fields
fleetsobject[]requiredFleets currently known to the controller.
fleets[].[].fleetIdstringrequiredUnique fleet identifier (e.g.
fleet_map-production).fleets[].[].gatewaynull | objectfleets[].[].healthyInstancesinteger (int32)requiredTotal healthy instances. min 0
fleets[].[].namestringrequiredHuman-readable fleet name from the manifest.
fleets[].[].protocolsobject[]requiredProtocols in this fleet.
fleets[].[].protocols[].[].endpointsstring[]requiredEndpoint strings in
host:portform.fleets[].[].protocols[].[].healthyInstancesinteger (int32)requiredInstances passing health checks. min 0
fleets[].[].protocols[].[].namestringrequiredHuman-readable name.
fleets[].[].protocols[].[].protocolIdstringrequiredProtocol identifier (e.g. "marc", "mind").
fleets[].[].protocols[].[].runningInstancesinteger (int32)requiredCurrently running instances. min 0
fleets[].[].protocols[].[].targetInstancesinteger (int32)requiredTarget instance count. min 0
fleets[].[].statestringrequiredCurrent lifecycle state (Deploying, Running, Degraded, Updating, TearingDown, Terminated).
fleets[].[].totalInstancesinteger (int32)requiredTotal instances across all protocols + gateway. min 0
- 401Unauthorized
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/fleets" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_fleets'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_fleets",
"arguments": {}
}
}
}Deploy a MAP fleet from a TOML manifest.
POST/v1/hives/fleets
Request body application/json
manifestTomlstringrequiredContents of the
map-fleet.tomlmanifest.
Responses
- 201Fleet deployed
Response fields
fleetIdstringrequiredAssigned fleet id.
gatewayEndpointstring | nullGateway endpoint if present (e.g.
0.0.0.0:8080).totalInstancesinteger (int32)requiredTotal instances that were instantiated. min 0
- 400Invalid manifest
- 401Unauthorized
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/fleets" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"manifestToml": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_deploy_fleet', {
body: {
manifestToml: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_deploy_fleet",
"arguments": {
"body": {
"manifestToml": "string"
}
}
}
}
}Get detailed status for a single fleet.
GET/v1/hives/fleets/{fleet_id}
Parameters
fleet_idpath · stringrequiredFleet identifier
Responses
- 200Fleet status
Response fields
fleetIdstringrequiredUnique fleet identifier (e.g.
fleet_map-production).gatewaynull | objecthealthyInstancesinteger (int32)requiredTotal healthy instances. min 0
namestringrequiredHuman-readable fleet name from the manifest.
protocolsobject[]requiredProtocols in this fleet.
protocols[].[].endpointsstring[]requiredEndpoint strings in
host:portform.protocols[].[].healthyInstancesinteger (int32)requiredInstances passing health checks. min 0
protocols[].[].namestringrequiredHuman-readable name.
protocols[].[].protocolIdstringrequiredProtocol identifier (e.g. "marc", "mind").
protocols[].[].runningInstancesinteger (int32)requiredCurrently running instances. min 0
protocols[].[].targetInstancesinteger (int32)requiredTarget instance count. min 0
statestringrequiredCurrent lifecycle state (Deploying, Running, Degraded, Updating, TearingDown, Terminated).
totalInstancesinteger (int32)requiredTotal instances across all protocols + gateway. min 0
- 401Unauthorized
- 404Fleet not found
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/fleets/$FLEET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_fleet_status', {
fleet_id: '<fleet_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_fleet_status",
"arguments": {
"fleet_id": "<fleet_id>"
}
}
}
}Teardown a fleet — stop all instances and remove from discovery.
DELETE/v1/hives/fleets/{fleet_id}
Parameters
fleet_idpath · stringrequiredFleet identifier
Responses
- 204Fleet torn down
- 401Unauthorized
- 404Fleet not found
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/fleets/$FLEET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_teardown_fleet', {
fleet_id: '<fleet_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_teardown_fleet",
"arguments": {
"fleet_id": "<fleet_id>"
}
}
}
}Organizations
List organizations for the authenticated user
GET/v1/hives/organizations
Responses
- 200Organizations visible to the authenticated user
Response fields
A JSON object.
- 401Unauthorized
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_organizations'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_organizations",
"arguments": {}
}
}
}Create a new organization
POST/v1/hives/organizations
Request body application/json
A JSON object; see the description above.
Responses
- 200Organization created
Response fields
A JSON object.
- 401Unauthorized
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/organizations" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_organization', {
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_organization",
"arguments": {
"body": {}
}
}
}
}Get a single organization
GET/v1/hives/organizations/{org_id}
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200Organization details
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations/$ORG_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_organization', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_organization",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Delete an organization
DELETE/v1/hives/organizations/{org_id}
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200Organization deleted
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/organizations/$ORG_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_organization', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_delete_organization",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Update an organization
PATCH/v1/hives/organizations/{org_id}
Parameters
org_idpath · stringrequiredOrganization ID
Request body application/json
A JSON object; see the description above.
Responses
- 200Organization updated
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X PATCH "https://os.one.ml/api/v1/hives/organizations/$ORG_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_organization', {
org_id: '<org_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_update_organization",
"arguments": {
"org_id": "<org_id>",
"body": {}
}
}
}
}Invites
List pending invites
GET/v1/hives/organizations/{org_id}/invites
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200Pending invites
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/invites" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_invites', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_invites",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Invite a member to the organization
POST/v1/hives/organizations/{org_id}/invites
Parameters
org_idpath · stringrequiredOrganization ID
Request body application/json
emailstringrequiredrolestringrequired
Responses
- 200Invitation created
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/invites" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "string",
"role": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_invite_member', {
org_id: '<org_id>',
body: {
email: 'string',
role: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_invite_member",
"arguments": {
"org_id": "<org_id>",
"body": {
"email": "string",
"role": "string"
}
}
}
}
}Cancel a pending invite
DELETE/v1/hives/organizations/{org_id}/invites/{invite_id}
Parameters
org_idpath · stringrequiredOrganization ID
invite_idpath · stringrequiredInvite ID
Responses
- 200Invite cancelled
Response fields
A JSON object.
- 401Unauthorized
- 404Organization or invite not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/invites/$INVITE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_cancel_invite', {
org_id: '<org_id>',
invite_id: '<invite_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_cancel_invite",
"arguments": {
"org_id": "<org_id>",
"invite_id": "<invite_id>"
}
}
}
}Members
List organization members
GET/v1/hives/organizations/{org_id}/members
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200Organization members
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/members" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_members', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_members",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Remove a member from the organization
DELETE/v1/hives/organizations/{org_id}/members/{member_id}
Parameters
org_idpath · stringrequiredOrganization ID
member_idpath · stringrequiredMember ID
Responses
- 200Member removed
Response fields
A JSON object.
- 401Unauthorized
- 404Organization or member not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/members/$MEMBER_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_remove_member', {
org_id: '<org_id>',
member_id: '<member_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_remove_member",
"arguments": {
"org_id": "<org_id>",
"member_id": "<member_id>"
}
}
}
}Update a member's role
PUT/v1/hives/organizations/{org_id}/members/{member_id}/role
Parameters
org_idpath · stringrequiredOrganization ID
member_idpath · stringrequiredMember ID
Request body application/json
rolestringrequired
Responses
- 200Member role updated
Response fields
A JSON object.
- 401Unauthorized
- 404Organization or member not found
- 503IAM service unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/members/$MEMBER_ID/role" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_member_role', {
org_id: '<org_id>',
member_id: '<member_id>',
body: {
role: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_update_member_role",
"arguments": {
"org_id": "<org_id>",
"member_id": "<member_id>",
"body": {
"role": "string"
}
}
}
}
}Sso
Get SSO configuration for an organization
GET/v1/hives/organizations/{org_id}/sso
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200SSO configuration
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503SSO service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/sso" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_sso_config', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_sso_config",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Create a new SSO connection
POST/v1/hives/organizations/{org_id}/sso
Parameters
org_idpath · stringrequiredOrganization ID
Request body application/json
idp_typestring | nullIdP type hint
metadata_rawstring | nullRaw IdP metadata XML (alternative to URL)
metadata_urlstring | nullIdP metadata URL (e.g. Okta, Azure AD metadata endpoint)
namestringrequiredConnection name/label
Responses
- 200SSO connection created
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503SSO service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/sso" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_sso_connection', {
org_id: '<org_id>',
body: {
name: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_sso_connection",
"arguments": {
"org_id": "<org_id>",
"body": {
"name": "string"
}
}
}
}
}Delete an SSO connection
DELETE/v1/hives/organizations/{org_id}/sso/{connection_id}
Parameters
org_idpath · stringrequiredOrganization ID
connection_idpath · stringrequiredSSO connection ID
Responses
- 200SSO connection deleted
Response fields
A JSON object.
- 401Unauthorized
- 404Organization or connection not found
- 503SSO service unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/sso/$CONNECTION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_sso_connection', {
org_id: '<org_id>',
connection_id: '<connection_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_delete_sso_connection",
"arguments": {
"org_id": "<org_id>",
"connection_id": "<connection_id>"
}
}
}
}Usage
Get organization usage (proxied to Cabbage)
GET/v1/hives/organizations/{org_id}/usage
Parameters
org_idpath · stringrequiredOrganization ID
Responses
- 200Organization usage summary
Response fields
A JSON object.
- 401Unauthorized
- 404Organization not found
- 503Billing service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/organizations/$ORG_ID/usage" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_org_usage', {
org_id: '<org_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_org_usage",
"arguments": {
"org_id": "<org_id>"
}
}
}
}Payments
Create a Stripe checkout session
POST/v1/hives/payments/checkout
Request body application/json
cancel_urlstring | nullplan_idstringrequiredsuccess_urlstring | null
Responses
- 200Checkout session created
Response fields
A JSON object.
- 401Unauthorized
- 503Payments service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/payments/checkout" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_checkout', {
body: {
plan_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_checkout",
"arguments": {
"body": {
"plan_id": "string"
}
}
}
}
}List payment methods for the authenticated org
GET/v1/hives/payments/methods
Responses
- 200Payment methods
Response fields
A JSON object.
- 401Unauthorized
- 503Payments service unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/payments/methods" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_payment_methods'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_payment_methods",
"arguments": {}
}
}
}Add a payment method
POST/v1/hives/payments/methods
Request body application/json
payment_method_idstringrequiredset_defaultboolean | null
Responses
- 200Payment method added
Response fields
A JSON object.
- 401Unauthorized
- 503Payments service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/payments/methods" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"payment_method_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_add_payment_method', {
body: {
payment_method_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_add_payment_method",
"arguments": {
"body": {
"payment_method_id": "string"
}
}
}
}
}Get Stripe billing portal URL
POST/v1/hives/payments/portal
Responses
- 200Billing portal URL
Response fields
A JSON object.
- 401Unauthorized
- 503Payments service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/payments/portal" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_billing_portal'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_get_billing_portal",
"arguments": {}
}
}
}Projects
List all projects for the authenticated tenant
GET/v1/hives/projects
Parameters
kindquery · string | nullFilter by project kind
statusquery · string | nullFilter by status
searchquery · string | nullSearch by name
sort_byquery · "name" | "created_at" | "updated_at"Sort field
sort_orderquery · "asc" | "desc"Sort order
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of projects
Response fields
dataobject[]requiredResponse data
data[].[].active_instancesinteger | null (int64)No project-worker inventory is connected; never substitute a fabricated zero. min 0
data[].[].current_versioninteger | null (int64)Current deployment version min 0
data[].[].observationnull | objectdata[].[].requests_24hinteger | null (int64)Retained completed API invocation observations in the explicit 24-hour window. min 0
data[].[].summary_state"available" | "unavailable"requiredWhether the derived summary was available; mutation acknowledgements preserve committed data.
data[].[].total_deploymentsinteger | null (int64)Actual owned deployment count; unavailable only on a committed mutation acknowledgement. min 0
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_projects'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_projects",
"arguments": {}
}
}Create a new project
POST/v1/hives/projects
Request body application/json
descriptionstring | nullProject description
domainsstring[]Initial custom domains
envobjectInitial environment variables
kindstringrequiredProject type
namestringrequiredProject name (3-64 characters, alphanumeric with hyphens)
Responses
- 201Project created
Response fields
active_instancesinteger | null (int64)No project-worker inventory is connected; never substitute a fabricated zero. min 0
current_versioninteger | null (int64)Current deployment version min 0
observationnull | objectrequests_24hinteger | null (int64)Retained completed API invocation observations in the explicit 24-hour window. min 0
summary_state"available" | "unavailable"requiredWhether the derived summary was available; mutation acknowledgements preserve committed data.
total_deploymentsinteger | null (int64)Actual owned deployment count; unavailable only on a committed mutation acknowledgement. min 0
- 400Invalid request
- 401Unauthorized
- 409Project already exists
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"kind": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_project', {
body: {
name: 'string',
kind: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_project",
"arguments": {
"body": {
"name": "string",
"kind": "string"
}
}
}
}Get a project by ID
GET/v1/hives/projects/{project_id}
Parameters
project_idpath · stringrequiredProject ID
Responses
- 200Project details
Response fields
active_instancesinteger | null (int64)No project-worker inventory is connected; never substitute a fabricated zero. min 0
current_versioninteger | null (int64)Current deployment version min 0
observationnull | objectrequests_24hinteger | null (int64)Retained completed API invocation observations in the explicit 24-hour window. min 0
summary_state"available" | "unavailable"requiredWhether the derived summary was available; mutation acknowledgements preserve committed data.
total_deploymentsinteger | null (int64)Actual owned deployment count; unavailable only on a committed mutation acknowledgement. min 0
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_project', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_project",
"arguments": {
"project_id": "<project_id>"
}
}
}Delete a project
DELETE/v1/hives/projects/{project_id}
Parameters
project_idpath · stringrequiredProject ID
Responses
- 200Project deleted
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_project', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_project",
"arguments": {
"project_id": "<project_id>"
}
}
}Update a project
PATCH/v1/hives/projects/{project_id}
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
descriptionstring | nullNew description
envobjectEnvironment variables to add/update
namestring | nullNew project name
remove_envstring[]Environment variable names to remove
Responses
- 200Project updated
Response fields
active_instancesinteger | null (int64)No project-worker inventory is connected; never substitute a fabricated zero. min 0
current_versioninteger | null (int64)Current deployment version min 0
observationnull | objectrequests_24hinteger | null (int64)Retained completed API invocation observations in the explicit 24-hour window. min 0
summary_state"available" | "unavailable"requiredWhether the derived summary was available; mutation acknowledgements preserve committed data.
total_deploymentsinteger | null (int64)Actual owned deployment count; unavailable only on a committed mutation acknowledgement. min 0
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X PATCH "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_project', {
project_id: '<project_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_project",
"arguments": {
"project_id": "<project_id>",
"body": {}
}
}
}Activity
List activity for an authenticated org's project
GET/v1/hives/projects/{project_id}/activity
Requires hives:read. The backend verifies that the project belongs to the signed org before reading its activity; an unknown or foreign-org project returns 404.
Parameters
project_idpath · stringrequiredProject ID belonging to the authenticated org
actionquery · stringFilter by action, such as project.updated
actor_typequery · stringFilter by actor type, such as user, api_key or system
resource_typequery · stringFilter by resource type
sincequery · string (date-time)Inclusive start timestamp
untilquery · string (date-time)Inclusive end timestamp
pagequery · integerPage number (1-indexed)
per_pagequery · integerItems per page
Responses
- 200Project activity for the authenticated org
Response fields
dataobject[]requireddata[].[].idstringrequireddata[].[].actor_idstringrequireddata[].[].actor_typestringrequireddata[].[].actor_namestring | nulldata[].[].actionstringrequireddata[].[].resource_typestringrequireddata[].[].resource_idstring | nulldata[].[].resource_namestring | nulldata[].[].metadataanyAdditional JSON metadata, or null
data[].[].ip_addressstring | nulldata[].[].user_agentstring | nulldata[].[].created_atstring (date-time)requiredpaginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 400Invalid filter or pagination
- 401Missing or invalid signed identity
- 403Missing hives:read scope
- 404Project not found in the authenticated org
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/activity" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_project_activity', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_project_activity",
"arguments": {
"project_id": "<project_id>"
}
}
}Cron
List all cron jobs for a project
GET/v1/hives/projects/{project_id}/cron
Parameters
project_idpath · stringrequiredProject ID
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of cron jobs
Response fields
A JSON object.
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_crons', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_crons",
"arguments": {
"project_id": "<project_id>"
}
}
}Create a new cron job
POST/v1/hives/projects/{project_id}/cron
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
enabledbooleanWhether the job is enabled
handlerstringrequiredHandler function ID or name
namestringrequiredJob name
schedulestringrequiredCron schedule expression
timezonestringTimezone (IANA format)
Responses
- 201Cron job created
Response fields
A JSON object.
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"schedule": "string",
"handler": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_cron', {
project_id: '<project_id>',
body: {
name: 'string',
schedule: 'string',
handler: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_cron",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string",
"schedule": "string",
"handler": "string"
}
}
}
}Get a specific cron job
GET/v1/hives/projects/{project_id}/cron/{cron_id}
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Responses
- 200Cron job details
Response fields
A JSON object.
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Delete a cron job
DELETE/v1/hives/projects/{project_id}/cron/{cron_id}
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Responses
- 200Cron job deleted
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Update a cron job
PATCH/v1/hives/projects/{project_id}/cron/{cron_id}
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Request body application/json
enabledboolean | nullWhether the job is enabled
handlerstring | nullHandler function
namestring | nullJob name
schedulestring | nullCron schedule expression
timezonestring | nullTimezone
Responses
- 200Cron job updated
Response fields
A JSON object.
- 400Invalid request
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X PATCH "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>",
"body": {}
}
}
}Pause a cron job
POST/v1/hives/projects/{project_id}/cron/{cron_id}/pause
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Responses
- 200Cron job paused
Response fields
A JSON object.
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID/pause" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_pause_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_pause_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Resume a cron job
POST/v1/hives/projects/{project_id}/cron/{cron_id}/resume
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Responses
- 200Cron job resumed
Response fields
A JSON object.
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID/resume" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_resume_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_resume_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Get run history for a cron job
GET/v1/hives/projects/{project_id}/cron/{cron_id}/runs
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
statusquery · string | nullFilter by status
sincequery · string | null (date-time)Start date filter
untilquery · string | null (date-time)End date filter
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200Cron run history
Response fields
dataobject[]requiredResponse data
data[].[].duration_msinteger | null (int64)Duration in ms min 0
data[].[].ended_atstring | null (date-time)End timestamp
data[].[].errorstring | nullError message if failed
data[].[].idstringrequiredRun ID
data[].[].logs_urlstring | nullLogs URL
data[].[].started_atstring (date-time)requiredStart timestamp
data[].[].statusstringrequiredRun status
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID/runs" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_cron_runs', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_cron_runs",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Manually trigger a cron job
POST/v1/hives/projects/{project_id}/cron/{cron_id}/trigger
Parameters
project_idpath · stringrequiredProject ID
cron_idpath · stringrequiredCron job ID
Responses
- 202Cron job triggered
- 401Unauthorized
- 404Cron job not found
- 500Internal server error
- 503Cron engine unavailable or unconfirmed control result
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/cron/$CRON_ID/trigger" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_trigger_cron', {
project_id: '<project_id>',
cron_id: '<cron_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_trigger_cron",
"arguments": {
"project_id": "<project_id>",
"cron_id": "<cron_id>"
}
}
}Deployments
List all deployments for a project
GET/v1/hives/projects/{project_id}/deployments
Parameters
project_idpath · stringrequiredProject ID
statusquery · string | nullFilter by status
environmentquery · string | nullFilter by environment
authorquery · string | nullFilter by author
sort_orderquery · "asc" | "desc"Sort order
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of deployments
Response fields
dataobject[]requiredResponse data
data[].[].logs_urlstring | nullBuild logs URL
data[].[].urlstring | nullDeployment URL
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_deployments', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_deployments",
"arguments": {
"project_id": "<project_id>"
}
}
}Create a new deployment
POST/v1/hives/projects/{project_id}/deployments
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
module_hashstringrequiredSHA-256 returned by a real upload in this same org and project pattern ^[a-f0-9]{64}$
auto_promotebooleanWhether to promote immediately to production
env_overridesobjectEnvironment overrides for this deployment
git_branchstring | nullGit branch name
git_messagestring | nullGit commit message
git_shastring | nullGit commit SHA (optional)
regionsstring[]Target regions (defaults to all)
Responses
- 201Deployment created
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"module_hash": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_deployment', {
project_id: '<project_id>',
body: {
module_hash: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_deployment",
"arguments": {
"project_id": "<project_id>",
"body": {
"module_hash": "string"
}
}
}
}Get a specific deployment
GET/v1/hives/projects/{project_id}/deployments/{deployment_id}
Parameters
project_idpath · stringrequiredProject ID
deployment_idpath · stringrequiredDeployment ID
Responses
- 200Deployment details
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 401Unauthorized
- 404Deployment not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Delete an inactive deployment
DELETE/v1/hives/projects/{project_id}/deployments/{deployment_id}
Parameters
project_idpath · stringrequireddeployment_idpath · stringrequired
Responses
- 200Action completed
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 401Unauthorized
- 403Missing Hives scope
- 404Project or deployment is not owned by the authenticated org and project
- 409Deployment status does not permit this action
- 502Runtime operation failed
- 503Runtime unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Cancel a pending deployment and stop its runtime work
POST/v1/hives/projects/{project_id}/deployments/{deployment_id}/cancel
Parameters
project_idpath · stringrequireddeployment_idpath · stringrequired
Responses
- 200Action completed
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 401Unauthorized
- 403Missing Hives scope
- 404Project or deployment is not owned by the authenticated org and project
- 409Deployment status does not permit this action
- 502Runtime operation failed
- 503Runtime unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/cancel" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_cancel_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_cancel_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Invoke a real running owned deployment and return the raw guest HTTP response
POST/v1/hives/projects/{project_id}/deployments/{deployment_id}/invoke
Returns actual guest status, safe headers and exact binary bytes, including executed error statuses. An authoritative x-execution-id distinguishes a completed guest response from an API failure. Unmarked WASI stdout is raw 200 octets. No JSON result wrapper or queue acknowledgement.
Parameters
project_idpath · stringrequireddeployment_idpath · stringrequired
Request body application/json
bodyanyStrings become UTF-8; other non-null values serialize as JSON; null is empty
body_base64stringStandard base64 for exact binary bytes, decoded at most 10 MiB; guest envelope may reach its cap earlier max length 13981016
headersobjectAt most 64 KiB of UTF-8 key/value bytes. Platform identity/status, auth, cookie, Host, framing, origin, referer and forwarding headers are forbidden. Guest headers cannot establish ownership.
methodstringValid ASCII HTTP method token at most 64 bytes max length 64 · default "POST"
pathstringOrigin-relative guest URI path including query, at most 8192 UTF-8 bytes. Begins with /, forbids // origins and # fragments. default "/"
Responses
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/invoke" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_invoke_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_invoke_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>",
"body": {}
}
}
}Query logs for a project
GET/v1/hives/projects/{project_id}/deployments/{deployment_id}/logs
Parameters
deployment_idpath · stringrequiredproject_idpath · stringrequiredProject ID
levelquery · string | nullFilter by minimum log level
sourcequery · string | nullFilter by source (function, deployment, etc.)
searchquery · string | nullSearch query
startquery · string | null (date-time)Start time (defaults to 1 hour ago)
endquery · string | null (date-time)End time (defaults to now)
request_idquery · string | nullRequest ID for correlation
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200Log entries
Response fields
logsobject[]requiredLog entries
logs[].[].duration_msinteger | null (int64)Execution duration in milliseconds
logs[].[].idstringrequiredLog entry ID
logs[].[].level"trace" | "debug" | "info" | "warn" | "error" | "fatal"requiredLog level enumeration
logs[].[].messagestringrequiredLog message
logs[].[].metadataanyStructured metadata
logs[].[].request_idstring | nullRequest ID for correlation
logs[].[].sourcestringrequiredSource (function name, deployment ID, etc.)
logs[].[].timestampstring (date-time)requiredTimestamp
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/logs" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_query_deployment_logs', {
deployment_id: '<deployment_id>',
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_query_deployment_logs",
"arguments": {
"deployment_id": "<deployment_id>",
"project_id": "<project_id>"
}
}
}Get deployment metrics
GET/v1/hives/projects/{project_id}/deployments/{deployment_id}/metrics
Parameters
project_idpath · stringrequiredProject ID
deployment_idpath · stringrequiredDeployment ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Deployment metrics
Response fields
active_instancesinteger | null (int32)Unavailable: no per-resource runtime inventory samples.
avg_api_http_duration_msnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
avg_cpu_percentnumber | null (double)Unavailable: no measured per-resource CPU producer.
avg_memory_mbnumber | null (double)Unavailable: no measured resident-memory producer.
avg_response_time_msnumber | null (double)Compatibility alias for monotonic API HTTP duration (milliseconds).
deployment_idstringrequiredDeployment ID
error_countinteger (int64)requiredError count
error_ratenumber | null (double)Error rate
max_instancesinteger | null (int32)Unavailable: no historical instance-count samples.
min_instancesinteger | null (int32)Unavailable: no historical instance-count samples.
network_in_bytesinteger | null (int64)Unavailable: decoded payload lengths are not wire-network measurements.
network_out_bytesinteger | null (int64)Unavailable: decoded payload lengths are not wire-network measurements.
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobserved_request_payload_bytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observed_response_payload_bytesinteger (int64)requiredp95_response_time_msnumber | null (double)P95 monotonic API HTTP duration (milliseconds).
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)requiredtotal_requestsinteger (int64)requiredTotal requests
- 401Unauthorized
- 403Permission denied
- 404Deployment not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/metrics" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_deployment_metrics', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_deployment_metrics",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Promote a deployment to production
POST/v1/hives/projects/{project_id}/deployments/{deployment_id}/promote
Parameters
project_idpath · stringrequiredProject ID
deployment_idpath · stringrequiredDeployment ID
Responses
- 200Deployment promoted
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 401Unauthorized
- 404Deployment not found
- 409Cannot promote deployment
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/promote" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_promote_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_promote_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Roll back to the selected deployment in this project
POST/v1/hives/projects/{project_id}/deployments/{deployment_id}/rollback
Parameters
project_idpath · stringrequiredProject ID
deployment_idpath · stringrequiredOwned target deployment ID
Request body application/json
reasonstring | nullReason for rollback
target_versioninteger | null (int64)Target version to rollback to (defaults to previous) min 0
Responses
- 200Rollback completed
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 401Unauthorized
- 404Project or target version not found
- 409Target deployment cannot be activated
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/rollback" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_rollback_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_rollback_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>",
"body": {}
}
}
}Stop an active deployment after runtime acknowledgment
POST/v1/hives/projects/{project_id}/deployments/{deployment_id}/stop
Bodyless explicit stop of an owned deployment. A successful response confirms cancelled after runtime stop acknowledgment. An uncertain stop remains stopping; read the same deployment before explicitly reconciling with another stop request. Clients never automatically replay this mutation.
Parameters
project_idpath · stringrequireddeployment_idpath · stringrequired
Responses
- 200Runtime stop acknowledged; deployment is cancelled
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 401Unauthorized
- 403Missing Hives scope
- 404Project or deployment is not owned by the authenticated org and project
- 409Deployment status does not permit this action
- 502Runtime operation failed
- 503Runtime unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/$DEPLOYMENT_ID/stop" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_stop_deployment', {
project_id: '<project_id>',
deployment_id: '<deployment_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_stop_deployment",
"arguments": {
"project_id": "<project_id>",
"deployment_id": "<deployment_id>"
}
}
}Upload a real WASM artifact and deploy it
POST/v1/hives/projects/{project_id}/deployments/upload
Multipart upload with one file, at most 10 MiB decoded bytes. Git fields are labels, not a Git build source. The backend owns org/project identity and computes the SHA-256 module_hash.
Request bodies sent through https://os.one.ml/api are limited to 2 MiB.
Parameters
project_idpath · stringrequired
Request body multipart/form-data
filestring (binary)requiredWebAssembly binary up to 10 MiB
git_shastringmin length 7 · max length 40
git_branchstringmax length 255
git_messagestringmax length 1000
Responses
- 201Real artifact persisted and build accepted
Response fields
idstringrequiredproject_idstringrequiredtenant_idstringrequiredmodule_idstringrequiredmodule_hashstring | nullOwned persisted artifact digest; null for a legacy deployment without an artifact pattern ^[a-f0-9]{64}$
versionintegerrequiredmin 1
statusstringrequiredgit_shastring | nullgit_branchstring | nullcreated_bystringrequiredcreated_atstring (date-time)requiredpromoted_atstring | null (date-time)logs_urlstring | nullurlstring | null
- 400Missing or invalid WASM binary or metadata
- 401Unauthorized
- 403Missing Hives write scope
- 404Project not owned by authenticated org
- 413Upload exceeds the bounded limit
- 502Build dispatch failed
- 503Build service unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/deployments/upload" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: multipart/form-data" \
--data-binary @body.binimport { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_upload_deployment', {
project_id: '<project_id>',
body: '<bytes>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_upload_deployment",
"arguments": {
"project_id": "<project_id>",
"body": "<bytes>"
}
}
}Domains
List all domains for a project
GET/v1/hives/projects/{project_id}/domains
Parameters
project_idpath · stringrequiredProject ID
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of domains
Response fields
dataobject[]requiredResponse data
data[].[].created_atstring (date-time)requiredCreated timestamp
data[].[].dns_statusstringrequiredDNS verification status
data[].[].domainstringrequiredDomain name
data[].[].domain_type"subdomain" | "custom" | "apex"requiredDomain type
data[].[].idstringrequiredDomain ID
data[].[].ssl_expires_atstring | null (date-time)SSL expiration
data[].[].ssl_statusstringrequiredSSL status
data[].[].verification_recordnull | objectpaginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/domains" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_domains', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_domains",
"arguments": {
"project_id": "<project_id>"
}
}
}Add a custom domain to a project
POST/v1/hives/projects/{project_id}/domains
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
domainstringrequiredDomain name
Responses
- 201Domain added
Response fields
created_atstring (date-time)requiredCreated timestamp
dns_statusstringrequiredDNS verification status
domainstringrequiredDomain name
domain_type"subdomain" | "custom" | "apex"requiredDomain type
idstringrequiredDomain ID
ssl_expires_atstring | null (date-time)SSL expiration
ssl_statusstringrequiredSSL status
verification_recordnull | object
- 400Invalid request
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 409Domain already exists
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/domains" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_add_domain', {
project_id: '<project_id>',
body: {
domain: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_add_domain",
"arguments": {
"project_id": "<project_id>",
"body": {
"domain": "string"
}
}
}
}Provision SSL certificate for a domain
POST/v1/hives/projects/{project_id}/domains/{domain_id}/ssl
Parameters
project_idpath · stringrequiredProject ID
domain_idpath · stringrequiredDomain ID
Responses
- 200SSL provisioning result
Response fields
errorstring | nullError message if failed
expires_atstring | null (date-time)Certificate expiration
ssl_statusstringrequiredUpdated SSL status
startedbooleanrequiredProvisioning started
- 400Domain not verified
- 401Unauthorized
- 403Permission denied
- 404Domain not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/domains/$DOMAIN_ID/ssl" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_provision_ssl', {
project_id: '<project_id>',
domain_id: '<domain_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_provision_ssl",
"arguments": {
"project_id": "<project_id>",
"domain_id": "<domain_id>"
}
}
}
}Verify domain DNS configuration
POST/v1/hives/projects/{project_id}/domains/{domain_id}/verify
Parameters
project_idpath · stringrequiredProject ID
domain_idpath · stringrequiredDomain ID
Responses
- 200Verification result
Response fields
checked_atstring (date-time)requiredCheck timestamp
dns_statusstringrequiredUpdated DNS status
errorstring | nullError message if failed
verifiedbooleanrequiredVerification success
- 401Unauthorized
- 403Permission denied
- 404Domain not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/domains/$DOMAIN_ID/verify" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_verify_domain', {
project_id: '<project_id>',
domain_id: '<domain_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_verify_domain",
"arguments": {
"project_id": "<project_id>",
"domain_id": "<domain_id>"
}
}
}
}Env
Reveal one owned environment value through Genesis KMS with org/project AAD.
GET/v1/hives/projects/{project_id}/env/{key}/reveal
Parameters
project_idpath · stringrequiredOwned Hives project ID
keypath · stringrequiredEnvironment variable name
Responses
- 200Explicit environment value reveal; no-store
Response fields
namestringrequiredvaluestringrequired
- 401Unauthorized
- 403Permission denied
- 404Project or environment name not found
- 503KMS, protected migration or audit unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/env/$KEY/reveal" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_reveal_project_environment', {
project_id: '<project_id>',
key: '<key>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_reveal_project_environment",
"arguments": {
"project_id": "<project_id>",
"key": "<key>"
}
}
}List persisted environment names, including retained legacy entries.
GET/v1/hives/projects/{project_id}/env/metadata
Parameters
project_idpath · stringrequiredOwned Hives project ID
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200Environment names only
Response fields
dataobject[]requireddata[].[].namestringrequiredpaginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
project_idstringrequired
- 400Invalid pagination
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/env/metadata" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_project_environment', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_project_environment",
"arguments": {
"project_id": "<project_id>"
}
}
}Encrypt and persist a flat map; acknowledge updated names without values.
PUT/v1/hives/projects/{project_id}/env/metadata
Parameters
project_idpath · stringrequiredOwned Hives project ID
Request body application/json
A JSON object; see the description above.
Responses
- 200Persisted updated names only
Response fields
project_idstringrequiredupdatedobject[]requiredupdated[].[].namestringrequired
- 400Invalid names, values or batch size
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 503KMS or protected migration unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/env/metadata" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_project_environment', {
project_id: '<project_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_project_environment",
"arguments": {
"project_id": "<project_id>",
"body": {}
}
}
}Functions
List all functions for a project
GET/v1/hives/projects/{project_id}/functions
Parameters
project_idpath · stringrequiredProject ID
statusquery · string | nullFilter by status
searchquery · string | nullSearch by name
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of functions
Response fields
dataobject[]requireddata[].[].idstringrequireddata[].[].tenant_idstringrequireddata[].[].project_idstringrequireddata[].[].namestringrequireddata[].[].descriptionstring | nulldata[].[].handlerstringrequiredPersisted handler reference; disabled retained legacy references remain inspectable. New or replacement handlers require an owned canonical WASM artifact.
data[].[].routestring | nulldata[].[].memory_mbintegerrequiredmin 64 · max 1024
data[].[].timeout_msintegerrequiredmin 100 · max 30000
data[].[].statusstringrequireddata[].[].invocationsintegerrequiredmin 0
data[].[].avg_duration_msnumberrequiredmin 0
data[].[].created_atstring (date-time)requireddata[].[].updated_atstring (date-time)requiredpaginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_functions', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_functions",
"arguments": {
"project_id": "<project_id>"
}
}
}Create a new function
POST/v1/hives/projects/{project_id}/functions
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
descriptionstring | nullFunction description
envobjectEnvironment variables
handlerstringrequiredOwned uploaded artifact wasm://sha256/<64 lowercase hex>; foreign org/project artifacts return 404 pattern ^wasm://sha256/[a-f0-9]{64}$
module_base64string | nullOptional canonical standard-base64 WASM bytes (8 to65536 decoded bytes) matching handler. Requires enabled finite staging policy and signed human Genesis sandbox FunctionWrite. Bytes remain on this function only; creation registers without a deployment, DNS or guest invocation. Omit to use an owned uploaded deployment artifact. Reconcile uncertain creation by owned name/ID; no POST replay contract. min length 12 · max length 87384 · pattern ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
memory_mbinteger (int64)Memory limit in MB (64-1024) min 64 · max 1024 · default 128
namestringrequiredFunction name
routestring | nullHTTP route pattern (optional)
timeout_msinteger (int64)Timeout in milliseconds (100-30000) min 100 · max 30000 · default 30000
Responses
- 201Function created
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequireddescriptionstring | nullhandlerstringrequiredPersisted handler reference; disabled retained legacy references remain inspectable. New or replacement handlers require an owned canonical WASM artifact.
routestring | nullmemory_mbintegerrequiredmin 64 · max 1024
timeout_msintegerrequiredmin 100 · max 30000
statusstringrequiredinvocationsintegerrequiredmin 0
avg_duration_msnumberrequiredmin 0
created_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 409Function already exists
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"handler": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_function', {
project_id: '<project_id>',
body: {
name: 'string',
handler: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_function",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string",
"handler": "string"
}
}
}
}Get a specific function
GET/v1/hives/projects/{project_id}/functions/{function_id}
Parameters
project_idpath · stringrequiredProject ID
function_idpath · stringrequiredFunction ID
Responses
- 200Function details
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequireddescriptionstring | nullhandlerstringrequiredPersisted handler reference; disabled retained legacy references remain inspectable. New or replacement handlers require an owned canonical WASM artifact.
routestring | nullmemory_mbintegerrequiredmin 64 · max 1024
timeout_msintegerrequiredmin 100 · max 30000
statusstringrequiredinvocationsintegerrequiredmin 0
avg_duration_msnumberrequiredmin 0
created_atstring (date-time)requiredupdated_atstring (date-time)required
- 401Unauthorized
- 404Function not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_function', {
project_id: '<project_id>',
function_id: '<function_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_function",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>"
}
}
}Update an owned function and encrypted overrides
PUT/v1/hives/projects/{project_id}/functions/{function_id}
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequired
Request body application/json
descriptionstring | nullmax length 500
handlerstringpattern ^wasm://sha256/[a-f0-9]{64}$
remove_routebooleanRemove the current HTTP route. Cannot be combined with a route value. Omitting this field or sending a null route preserves the current route.
routestring | nullmax length 255
memory_mbintegermin 64 · max 1024
timeout_msintegermin 100 · max 30000
envobjectValues encrypted by Genesis KMS; omitted from metadata
remove_envstring[]Override names to remove
Responses
- 200Updated metadata; environment values are omitted
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequireddescriptionstring | nullhandlerstringrequiredPersisted handler reference; disabled retained legacy references remain inspectable. New or replacement handlers require an owned canonical WASM artifact.
routestring | nullmemory_mbintegerrequiredmin 64 · max 1024
timeout_msintegerrequiredmin 100 · max 30000
statusstringrequiredinvocationsintegerrequiredmin 0
avg_duration_msnumberrequiredmin 0
created_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid request
- 403Missing authorized scope
- 404Function or artifact not found in the signed org and path project
- 409Mutation conflict; refresh and retry
- 502Runtime replacement failed; previous healthy function is retained
- 503Runtime or KMS unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_function', {
project_id: '<project_id>',
function_id: '<function_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_function",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>",
"body": {}
}
}
}Unregister an owned function before removing metadata
DELETE/v1/hives/projects/{project_id}/functions/{function_id}
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequired
Responses
- 200Runtime unregister and metadata deletion completed
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 403Missing authorized scope
- 404Function not found in signed org and path project
- 409Mutation conflict; refresh and retry
- 502Runtime unregister failed; metadata is retained
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_function', {
project_id: '<project_id>',
function_id: '<function_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_function",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>"
}
}
}Complete a real function invocation and return the raw guest HTTP response
POST/v1/hives/projects/{project_id}/functions/{function_id}/invoke
Returns actual guest status, safe headers and exact binary bytes, including executed error statuses. An authoritative x-execution-id distinguishes a completed guest response from an API failure. Unmarked WASI stdout is raw 200 octets. No JSON result wrapper or queue acknowledgement.
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequiredIdempotency-Keyheader · stringPersist the original key. Required when Genesis funding is enabled; retries reconcile the original operation without replaying the guest.
Request body application/json
bodyanyStrings become UTF-8; other non-null values serialize as JSON; null is empty
body_base64stringStandard base64 for exact binary bytes, decoded at most 10 MiB; guest envelope may reach its cap earlier max length 13981016
headersobjectAt most 64 KiB of UTF-8 key/value bytes. Platform identity/status, auth, cookie, Host, framing, origin, referer and forwarding headers are forbidden. Guest headers cannot establish ownership.
methodstringValid ASCII HTTP method token at most 64 bytes max length 64 · default "POST"
pathstringOrigin-relative guest URI path including query, at most 8192 UTF-8 bytes. Begins with /, forbids // origins and # fragments. default "/"
Responses
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/invoke" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('hives_invoke_function', {
project_id: '<project_id>',
function_id: '<function_id>',
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_invoke_function",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>",
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}Complete invocation through the compatibility alias (no durable queue)
POST/v1/hives/projects/{project_id}/functions/{function_id}/invoke/async
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequiredIdempotency-Keyheader · stringPersist the original key. Required when Genesis funding is enabled; retries reconcile the original operation without replaying the guest.
Request body application/json
bodyanyStrings become UTF-8; other non-null values serialize as JSON; null is empty
body_base64stringStandard base64 for exact binary bytes, decoded at most 10 MiB; guest envelope may reach its cap earlier max length 13981016
headersobjectAt most 64 KiB of UTF-8 key/value bytes. Platform identity/status, auth, cookie, Host, framing, origin, referer and forwarding headers are forbidden. Guest headers cannot establish ownership.
methodstringValid ASCII HTTP method token at most 64 bytes max length 64 · default "POST"
pathstringOrigin-relative guest URI path including query, at most 8192 UTF-8 bytes. Begins with /, forbids // origins and # fragments. default "/"
Responses
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/invoke/async" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('hives_invoke_function_async', {
project_id: '<project_id>',
function_id: '<function_id>',
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_invoke_function_async",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>",
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}Get function metrics
GET/v1/hives/projects/{project_id}/functions/{function_id}/metrics
Parameters
project_idpath · stringrequiredProject ID
function_idpath · stringrequiredFunction ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Function metrics
Response fields
avg_api_http_duration_msnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
avg_duration_msnumber | null (double)Compatibility alias for monotonic API HTTP duration (milliseconds).
billed_gb_secondsnumber | null (double)Unavailable: observations are not compute billing.
cold_startsinteger | null (int64)Unavailable: no persisted cold-start measurement.
configured_memory_limit_mbinteger (int64)requiredPersisted configuration limit, not a measured memory sample.
failed_invocationsinteger (int64)requiredFailed invocations
function_idstringrequiredFunction ID
function_namestringrequiredFunction name
memory_mbinteger | null (int32)Unavailable: no measured resident-memory producer.
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobserved_request_payload_bytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observed_response_payload_bytesinteger (int64)requiredp50_duration_msnumber | null (double)P50 monotonic API HTTP duration (milliseconds).
p95_duration_msnumber | null (double)P95 monotonic API HTTP duration (milliseconds).
p99_duration_msnumber | null (double)P99 monotonic API HTTP duration (milliseconds).
success_ratenumber | null (double)Success rate (percentage)
successful_invocationsinteger (int64)requiredSuccessful invocations
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)requiredtimeoutsinteger | null (int64)Unavailable: ambiguous transport timeouts are not guest completion samples.
total_invocationsinteger (int64)requiredTotal invocations
- 401Unauthorized
- 403Permission denied
- 404Function not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/metrics" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_function_metrics', {
project_id: '<project_id>',
function_id: '<function_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_function_metrics",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>"
}
}
}Get function invocations time series
GET/v1/hives/projects/{project_id}/functions/{function_id}/metrics/invocations
Parameters
project_idpath · stringrequiredProject ID
function_idpath · stringrequiredFunction ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Invocation metrics time series
Response fields
aggregation"sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"requiredMetric aggregation type
dataobject[]requiredData points
data[].[].labelsobject | nullOptional labels
data[].[].timestampstring (date-time)requiredTimestamp
data[].[].valuenumber (double)requiredMetric value
namestringrequiredMetric name
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredresolution_secondsinteger (int64)requiredResolution (bucket size in seconds)
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Function not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/metrics/invocations" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_function_invocations_series', {
project_id: '<project_id>',
function_id: '<function_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_function_invocations_series",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>"
}
}
}Read original funding operation status without replaying the guest
GET/v1/hives/projects/{project_id}/functions/{function_id}/operations/{operation_id}
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequiredoperation_idpath · stringrequired
Responses
- 200Original operation status; this does not replay the guest response
Response fields
operation_idstringrequiredpattern ^exec_[a-f0-9]{32}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "dispatched" | "settle_unknown" | "settled" | "release_pending" | "released"requiredcodestringrequiredfunding_source"sandbox_allowance" | "stripe_test_metered" | nullrequiredreservation_idstring | nullrequiredretry_executionfalserequired
- 202Original operation remains unresolved; retain its key
Response fields
operation_idstringrequiredpattern ^exec_[a-f0-9]{32}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "dispatched" | "settle_unknown" | "settled" | "release_pending" | "released"requiredcodestringrequiredfunding_source"sandbox_allowance" | "stripe_test_metered" | nullrequiredreservation_idstring | nullrequiredretry_executionfalserequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/operations/$OPERATION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_function_operation', {
project_id: '<project_id>',
function_id: '<function_id>',
operation_id: '<operation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_function_operation",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>",
"operation_id": "<operation_id>"
}
}
}Release an unused reservation only if no guest dispatch occurred
POST/v1/hives/projects/{project_id}/functions/{function_id}/operations/{operation_id}/release
Parameters
project_idpath · stringrequiredfunction_idpath · stringrequiredoperation_idpath · stringrequired
Responses
- 200Original operation status; this does not replay the guest response
Response fields
operation_idstringrequiredpattern ^exec_[a-f0-9]{32}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "dispatched" | "settle_unknown" | "settled" | "release_pending" | "released"requiredcodestringrequiredfunding_source"sandbox_allowance" | "stripe_test_metered" | nullrequiredreservation_idstring | nullrequiredretry_executionfalserequired
- 202Original operation remains unresolved; retain its key
Response fields
operation_idstringrequiredpattern ^exec_[a-f0-9]{32}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "dispatched" | "settle_unknown" | "settled" | "release_pending" | "released"requiredcodestringrequiredfunding_source"sandbox_allowance" | "stripe_test_metered" | nullrequiredreservation_idstring | nullrequiredretry_executionfalserequired
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/functions/$FUNCTION_ID/operations/$OPERATION_ID/release" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_release_function_operation', {
project_id: '<project_id>',
function_id: '<function_id>',
operation_id: '<operation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_release_function_operation",
"arguments": {
"project_id": "<project_id>",
"function_id": "<function_id>",
"operation_id": "<operation_id>"
}
}
}Logs
Query logs for a project
GET/v1/hives/projects/{project_id}/logs
Parameters
project_idpath · stringrequiredProject ID
levelquery · string | nullFilter by minimum log level
sourcequery · string | nullFilter by source (function, deployment, etc.)
searchquery · string | nullSearch query
startquery · string | null (date-time)Start time (defaults to 1 hour ago)
endquery · string | null (date-time)End time (defaults to now)
request_idquery · string | nullRequest ID for correlation
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200Log entries
Response fields
logsobject[]requiredLog entries
logs[].[].duration_msinteger | null (int64)Execution duration in milliseconds
logs[].[].idstringrequiredLog entry ID
logs[].[].level"trace" | "debug" | "info" | "warn" | "error" | "fatal"requiredLog level enumeration
logs[].[].messagestringrequiredLog message
logs[].[].metadataanyStructured metadata
logs[].[].request_idstring | nullRequest ID for correlation
logs[].[].sourcestringrequiredSource (function name, deployment ID, etc.)
logs[].[].timestampstring (date-time)requiredTimestamp
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/logs" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_query_logs', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_query_logs",
"arguments": {
"project_id": "<project_id>"
}
}
}Stream real-time logs for a project via SSE
GET/v1/hives/projects/{project_id}/logs/stream
Parameters
project_idpath · stringrequiredProject ID
levelquery · string | nullFilter by minimum log level
sourcequery · string | nullFilter by source
heartbeatquery · booleanInclude heartbeat events
Responses
- 200Log stream
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/logs/stream" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_stream_logs', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_stream_logs",
"arguments": {
"project_id": "<project_id>"
}
}
}
}Marketplace
Return existing categories with visibility-scoped actual counts.
GET/v1/hives/projects/{project_id}/marketplace/categories
Parameters
project_idpath · stringrequiredVerified owned Hives project
Responses
- 200Persisted Marketplace state
Response fields
descriptionstring | nullCategory description
icon_urlstring | nullIcon URL
idstring (uuid)requiredCategory ID
namestringrequiredCategory name
package_countinteger (int32)requiredPackage count
slugstringrequiredCategory slug
sort_orderinteger (int32)requiredSort order
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/categories" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_categories', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_categories",
"arguments": {
"project_id": "<project_id>"
}
}
}Return only persisted featured packages backed by real artifacts.
GET/v1/hives/projects/{project_id}/marketplace/featured
Parameters
project_idpath · stringrequiredVerified owned Hives project
Responses
- 200Persisted Marketplace state
Response fields
dataobject[]requiredData items
data[].[].author_namestringrequiredVerified publisher display name captured at publication.
data[].[].categoriesstring[]requiredExisting categories.
data[].[].created_atstring (date-time)requiredPersisted creation timestamp.
data[].[].descriptionstringrequiredDescription.
data[].[].featuredbooleanrequiredPersisted featured marker.
data[].[].freebooleanrequiredPaid packages require a real Foundry entitlement before installation.
data[].[].idstring (uuid)requiredPackage id.
data[].[].installsinteger (int64)requiredActual completed native installations, excluding seeded counters.
data[].[].keywordsstring[]requiredSearch keywords.
data[].[].latest_versionstringrequiredLatest eligible version.
data[].[].licensestringrequiredLicense.
data[].[].namestringrequiredDisplay name.
data[].[].ownedbooleanrequiredCan the signed organization publish another version?
data[].[].slugstringrequiredStable slug.
data[].[].starsinteger (int64)requiredActual persisted stars, excluding seeded counters.
data[].[].updated_atstring (date-time)requiredPersisted update timestamp.
data[].[].verifiedbooleanrequiredPersisted verification marker.
data[].[].version_countinteger (int64)requiredExact number of eligible versions.
data[].[].visibilitystringrequiredPublic/private/unlisted visibility.
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredHas next page
pagination.has_prevbooleanrequiredHas previous page
pagination.pageinteger (int32)requiredCurrent page min 0
pagination.page_sizeinteger (int32)requiredPage size min 0
pagination.totalinteger (int64)requiredTotal items
pagination.total_pagesinteger (int32)requiredTotal pages min 0
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/featured" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_featured', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_featured",
"arguments": {
"project_id": "<project_id>"
}
}
}List selected-project installations, preserving unresolved state.
GET/v1/hives/projects/{project_id}/marketplace/installed
Parameters
project_idpath · stringrequiredVerified owned Hives project
pagequery · integer (int32)One-based page.
page_sizequery · integer (int32)Maximum rows per page.
Responses
- 200Persisted Marketplace state
Response fields
dataobject[]requiredData items
data[].[].deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
data[].[].deployment_statusstring | nullCurrent deployment state.
data[].[].idstring (uuid)requiredDurable installation id.
data[].[].installed_atstring (date-time)requiredInstallation timestamp.
data[].[].latest_versionstring | nullLatest eligible catalog version.
data[].[].namestringrequiredPackage name.
data[].[].operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
data[].[].package_idstring (uuid)requiredPackage id.
data[].[].pending_deployment_idstring | nullPending actual deployment.
data[].[].pending_deployment_statusstring | nullPending deployment state.
data[].[].pending_versionstring | nullPending target version.
data[].[].project_idstringrequiredVerified selected project.
data[].[].slugstringrequiredPackage slug.
data[].[].statusstringrequiredLast persisted installation state.
data[].[].versionstring | nullCurrent completed version, if one exists.
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredHas next page
pagination.has_prevbooleanrequiredHas previous page
pagination.pageinteger (int32)requiredCurrent page min 0
pagination.page_sizeinteger (int32)requiredPage size min 0
pagination.totalinteger (int64)requiredTotal items
pagination.total_pagesinteger (int32)requiredTotal pages min 0
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/installed" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_installed', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_installed",
"arguments": {
"project_id": "<project_id>"
}
}
}Read a persisted installation after an interrupted operation.
GET/v1/hives/projects/{project_id}/marketplace/installed/{installation_id}
Parameters
project_idpath · stringrequiredVerified owned Hives project
installation_idpath · string (uuid)requiredOwned persisted installation
Responses
- 200Persisted Marketplace state
Response fields
deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
deployment_statusstring | nullCurrent deployment state.
idstring (uuid)requiredDurable installation id.
installed_atstring (date-time)requiredInstallation timestamp.
latest_versionstring | nullLatest eligible catalog version.
namestringrequiredPackage name.
operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
package_idstring (uuid)requiredPackage id.
pending_deployment_idstring | nullPending actual deployment.
pending_deployment_statusstring | nullPending deployment state.
pending_versionstring | nullPending target version.
project_idstringrequiredVerified selected project.
slugstringrequiredPackage slug.
statusstringrequiredLast persisted installation state.
versionstring | nullCurrent completed version, if one exists.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/installed/$INSTALLATION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_get_installation', {
project_id: '<project_id>',
installation_id: '<installation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_get_installation",
"arguments": {
"project_id": "<project_id>",
"installation_id": "<installation_id>"
}
}
}Persist uninstall intent before stopping every retained workload.
DELETE/v1/hives/projects/{project_id}/marketplace/installed/{installation_id}
Parameters
project_idpath · stringrequiredVerified owned Hives project
installation_idpath · string (uuid)requiredOwned persisted installation
Responses
- 200Persisted Marketplace state
Response fields
deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
deployment_statusstring | nullCurrent deployment state.
idstring (uuid)requiredDurable installation id.
installed_atstring (date-time)requiredInstallation timestamp.
latest_versionstring | nullLatest eligible catalog version.
namestringrequiredPackage name.
operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
package_idstring (uuid)requiredPackage id.
pending_deployment_idstring | nullPending actual deployment.
pending_deployment_statusstring | nullPending deployment state.
pending_versionstring | nullPending target version.
project_idstringrequiredVerified selected project.
slugstringrequiredPackage slug.
statusstringrequiredLast persisted installation state.
versionstring | nullCurrent completed version, if one exists.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/installed/$INSTALLATION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_uninstall', {
project_id: '<project_id>',
installation_id: '<installation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_uninstall",
"arguments": {
"project_id": "<project_id>",
"installation_id": "<installation_id>"
}
}
}Explicitly finish an existing durable operation; this never starts a build.
POST/v1/hives/projects/{project_id}/marketplace/installed/{installation_id}/reconcile
Parameters
project_idpath · stringrequiredVerified owned Hives project
installation_idpath · string (uuid)requiredOwned persisted installation
Responses
- 200Persisted Marketplace state
Response fields
deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
deployment_statusstring | nullCurrent deployment state.
idstring (uuid)requiredDurable installation id.
installed_atstring (date-time)requiredInstallation timestamp.
latest_versionstring | nullLatest eligible catalog version.
namestringrequiredPackage name.
operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
package_idstring (uuid)requiredPackage id.
pending_deployment_idstring | nullPending actual deployment.
pending_deployment_statusstring | nullPending deployment state.
pending_versionstring | nullPending target version.
project_idstringrequiredVerified selected project.
slugstringrequiredPackage slug.
statusstringrequiredLast persisted installation state.
versionstring | nullCurrent completed version, if one exists.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/installed/$INSTALLATION_ID/reconcile" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_reconcile', {
project_id: '<project_id>',
installation_id: '<installation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_reconcile",
"arguments": {
"project_id": "<project_id>",
"installation_id": "<installation_id>"
}
}
}Search the persisted visible catalog.
GET/v1/hives/projects/{project_id}/marketplace/packages
Parameters
project_idpath · stringrequiredVerified owned Hives project
qquery · string | nullSearch query
categoryquery · string | nullCategory filter
free_onlyquery · booleanOnly free packages
verified_onlyquery · booleanOnly verified packages
sortquery · "name" | "installs" | "stars" | "created" | "updated"Sort field
orderquery · "asc" | "desc"Sort order
pagequery · integer (int32)Page number
page_sizequery · integer (int32)Page size
Responses
- 200Persisted Marketplace state
Response fields
dataobject[]requiredData items
data[].[].author_namestringrequiredVerified publisher display name captured at publication.
data[].[].categoriesstring[]requiredExisting categories.
data[].[].created_atstring (date-time)requiredPersisted creation timestamp.
data[].[].descriptionstringrequiredDescription.
data[].[].featuredbooleanrequiredPersisted featured marker.
data[].[].freebooleanrequiredPaid packages require a real Foundry entitlement before installation.
data[].[].idstring (uuid)requiredPackage id.
data[].[].installsinteger (int64)requiredActual completed native installations, excluding seeded counters.
data[].[].keywordsstring[]requiredSearch keywords.
data[].[].latest_versionstringrequiredLatest eligible version.
data[].[].licensestringrequiredLicense.
data[].[].namestringrequiredDisplay name.
data[].[].ownedbooleanrequiredCan the signed organization publish another version?
data[].[].slugstringrequiredStable slug.
data[].[].starsinteger (int64)requiredActual persisted stars, excluding seeded counters.
data[].[].updated_atstring (date-time)requiredPersisted update timestamp.
data[].[].verifiedbooleanrequiredPersisted verification marker.
data[].[].version_countinteger (int64)requiredExact number of eligible versions.
data[].[].visibilitystringrequiredPublic/private/unlisted visibility.
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredHas next page
pagination.has_prevbooleanrequiredHas previous page
pagination.pageinteger (int32)requiredCurrent page min 0
pagination.page_sizeinteger (int32)requiredPage size min 0
pagination.totalinteger (int64)requiredTotal items
pagination.total_pagesinteger (int32)requiredTotal pages min 0
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_list_packages', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_list_packages",
"arguments": {
"project_id": "<project_id>"
}
}
}Read the selected package and its actual immutable versions.
GET/v1/hives/projects/{project_id}/marketplace/packages/{slug}
Parameters
project_idpath · stringrequiredVerified owned Hives project
slugpath · stringrequiredExisting package slug
versionquery · string | nullOptional exact semantic version; absence returns the newest bounded page.
Responses
- 200Persisted Marketplace state
Response fields
author_namestringrequiredVerified publisher display name captured at publication.
categoriesstring[]requiredExisting categories.
created_atstring (date-time)requiredPersisted creation timestamp.
descriptionstringrequiredDescription.
featuredbooleanrequiredPersisted featured marker.
freebooleanrequiredPaid packages require a real Foundry entitlement before installation.
idstring (uuid)requiredPackage id.
installsinteger (int64)requiredActual completed native installations, excluding seeded counters.
keywordsstring[]requiredSearch keywords.
latest_versionstringrequiredLatest eligible version.
licensestringrequiredLicense.
namestringrequiredDisplay name.
ownedbooleanrequiredCan the signed organization publish another version?
slugstringrequiredStable slug.
starsinteger (int64)requiredActual persisted stars, excluding seeded counters.
updated_atstring (date-time)requiredPersisted update timestamp.
verifiedbooleanrequiredPersisted verification marker.
version_countinteger (int64)requiredExact number of eligible versions.
visibilitystringrequiredPublic/private/unlisted visibility.
versionsobject[]requiredEligible immutable versions.
versions[].[].changelogstringrequiredVersion changes.
versions[].[].deprecatedbooleanrequiredPersisted deprecation flag.
versions[].[].downloadsinteger (int64)requiredActual persisted installation attempts for this new artifact version.
versions[].[].idstring (uuid)requiredVersion id.
versions[].[].module_hashstringrequiredContent digest.
versions[].[].package_idstring (uuid)requiredOwning package.
versions[].[].published_atstring (date-time)requiredPersisted publish timestamp.
versions[].[].readmestringrequiredReadme text.
versions[].[].required_envstring[]requiredRequired environment names.
versions[].[].size_bytesinteger (int64)requiredActual stored size.
versions[].[].versionstringrequiredSemantic version.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages/$SLUG" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_get_package', {
project_id: '<project_id>',
slug: '<slug>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_get_package",
"arguments": {
"project_id": "<project_id>",
"slug": "<slug>"
}
}
}Install a real package. A 202 acknowledges the durable operation, not readiness.
POST/v1/hives/projects/{project_id}/marketplace/packages/{slug}/install
Parameters
project_idpath · stringrequiredVerified owned Hives project
slugpath · stringrequiredExisting package slug
Request body application/json
env_overridesobjectValues are encrypted through the existing deployment KMS path.
versionstring | nullLatest eligible version is selected when omitted.
Responses
- 202Persisted Marketplace state
Response fields
deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
deployment_statusstring | nullCurrent deployment state.
idstring (uuid)requiredDurable installation id.
installed_atstring (date-time)requiredInstallation timestamp.
latest_versionstring | nullLatest eligible catalog version.
namestringrequiredPackage name.
operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
package_idstring (uuid)requiredPackage id.
pending_deployment_idstring | nullPending actual deployment.
pending_deployment_statusstring | nullPending deployment state.
pending_versionstring | nullPending target version.
project_idstringrequiredVerified selected project.
slugstringrequiredPackage slug.
statusstringrequiredLast persisted installation state.
versionstring | nullCurrent completed version, if one exists.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages/$SLUG/install" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_install', {
project_id: '<project_id>',
slug: '<slug>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_install",
"arguments": {
"project_id": "<project_id>",
"slug": "<slug>",
"body": {}
}
}
}Update through a real successor deployment while retaining the old runtime.
POST/v1/hives/projects/{project_id}/marketplace/packages/{slug}/update
Parameters
project_idpath · stringrequiredVerified owned Hives project
slugpath · stringrequiredExisting package slug
Request body application/json
env_overridesobjectValues are encrypted through the existing deployment KMS path.
versionstring | nullLatest eligible version is selected when omitted.
Responses
- 202Persisted Marketplace state
Response fields
deployment_idstring | nullCurrent actual deployment, retained until a successor is ready.
deployment_statusstring | nullCurrent deployment state.
idstring (uuid)requiredDurable installation id.
installed_atstring (date-time)requiredInstallation timestamp.
latest_versionstring | nullLatest eligible catalog version.
namestringrequiredPackage name.
operationstring | nullDurable operation (install/update/cleanup/uninstall) or null.
package_idstring (uuid)requiredPackage id.
pending_deployment_idstring | nullPending actual deployment.
pending_deployment_statusstring | nullPending deployment state.
pending_versionstring | nullPending target version.
project_idstringrequiredVerified selected project.
slugstringrequiredPackage slug.
statusstringrequiredLast persisted installation state.
versionstring | nullCurrent completed version, if one exists.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages/$SLUG/update" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_update', {
project_id: '<project_id>',
slug: '<slug>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_update",
"arguments": {
"project_id": "<project_id>",
"slug": "<slug>",
"body": {}
}
}
}Read every eligible version using bounded pages.
GET/v1/hives/projects/{project_id}/marketplace/packages/{slug}/versions
Parameters
project_idpath · stringrequiredVerified owned Hives project
slugpath · stringrequiredExisting package slug
pagequery · integer (int32)One-based page.
page_sizequery · integer (int32)At most five full versions keep escaped JSON beneath the Console limit.
Responses
- 200Persisted Marketplace state
Response fields
dataobject[]requiredData items
data[].[].changelogstringrequiredVersion changes.
data[].[].deprecatedbooleanrequiredPersisted deprecation flag.
data[].[].downloadsinteger (int64)requiredActual persisted installation attempts for this new artifact version.
data[].[].idstring (uuid)requiredVersion id.
data[].[].module_hashstringrequiredContent digest.
data[].[].package_idstring (uuid)requiredOwning package.
data[].[].published_atstring (date-time)requiredPersisted publish timestamp.
data[].[].readmestringrequiredReadme text.
data[].[].required_envstring[]requiredRequired environment names.
data[].[].size_bytesinteger (int64)requiredActual stored size.
data[].[].versionstringrequiredSemantic version.
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredHas next page
pagination.has_prevbooleanrequiredHas previous page
pagination.pageinteger (int32)requiredCurrent page min 0
pagination.page_sizeinteger (int32)requiredPage size min 0
pagination.totalinteger (int64)requiredTotal items
pagination.total_pagesinteger (int32)requiredTotal pages min 0
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages/$SLUG/versions" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_list_versions', {
project_id: '<project_id>',
slug: '<slug>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_list_versions",
"arguments": {
"project_id": "<project_id>",
"slug": "<slug>"
}
}
}Publish a verified selected-project artifact; never fetch an arbitrary URL.
POST/v1/hives/projects/{project_id}/marketplace/packages/publish
Parameters
project_idpath · stringrequiredVerified owned Hives project
Request body application/json
categoriesstring[]Existing category slugs.
changelogstringVersion changes.
descriptionstringShort description.
keywordsstring[]Search keywords.
licensestringPackage license.
module_hashstringrequiredSource artifact already owned by the selected project.
namestringrequiredHuman-readable package name.
readmestringPlain-text readme.
required_envstring[]Environment names required when installing; never values.
slugstringrequiredStable package slug.
versionstringrequiredImmutable semantic version.
visibility"public" | "private" | "unlisted"Package visibility
Responses
- 201Persisted Marketplace state
Response fields
author_namestringrequiredVerified publisher display name captured at publication.
categoriesstring[]requiredExisting categories.
created_atstring (date-time)requiredPersisted creation timestamp.
descriptionstringrequiredDescription.
featuredbooleanrequiredPersisted featured marker.
freebooleanrequiredPaid packages require a real Foundry entitlement before installation.
idstring (uuid)requiredPackage id.
installsinteger (int64)requiredActual completed native installations, excluding seeded counters.
keywordsstring[]requiredSearch keywords.
latest_versionstringrequiredLatest eligible version.
licensestringrequiredLicense.
namestringrequiredDisplay name.
ownedbooleanrequiredCan the signed organization publish another version?
slugstringrequiredStable slug.
starsinteger (int64)requiredActual persisted stars, excluding seeded counters.
updated_atstring (date-time)requiredPersisted update timestamp.
verifiedbooleanrequiredPersisted verification marker.
version_countinteger (int64)requiredExact number of eligible versions.
visibilitystringrequiredPublic/private/unlisted visibility.
versionsobject[]requiredEligible immutable versions.
versions[].[].changelogstringrequiredVersion changes.
versions[].[].deprecatedbooleanrequiredPersisted deprecation flag.
versions[].[].downloadsinteger (int64)requiredActual persisted installation attempts for this new artifact version.
versions[].[].idstring (uuid)requiredVersion id.
versions[].[].module_hashstringrequiredContent digest.
versions[].[].package_idstring (uuid)requiredOwning package.
versions[].[].published_atstring (date-time)requiredPersisted publish timestamp.
versions[].[].readmestringrequiredReadme text.
versions[].[].required_envstring[]requiredRequired environment names.
versions[].[].size_bytesinteger (int64)requiredActual stored size.
versions[].[].versionstringrequiredSemantic version.
- 404Resource outside verified organization/project or unavailable
- 409Existing operation requires reconciliation
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/marketplace/packages/publish" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"slug": "string",
"name": "string",
"module_hash": "string",
"version": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_marketplace_publish', {
project_id: '<project_id>',
body: {
slug: 'string',
name: 'string',
module_hash: 'string',
version: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_marketplace_publish",
"arguments": {
"project_id": "<project_id>",
"body": {
"slug": "string",
"name": "string",
"module_hash": "string",
"version": "string"
}
}
}
}Metrics
Get project metrics overview
GET/v1/hives/projects/{project_id}/metrics
Parameters
project_idpath · stringrequiredProject ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Project metrics
Response fields
active_deploymentsinteger (int32)requiredActive deployments
avg_api_http_duration_msnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
avg_response_time_msnumber | null (double)Compatibility alias for monotonic API HTTP duration (milliseconds).
cron_executionsinteger | null (int64)Unavailable: this ledger does not observe scheduler execution history.
data_transfer_bytesinteger (int64)requiredCompatibility alias for observed decoded request + response payload bytes.
error_countinteger (int64)requiredError count
error_ratenumber | null (double)Error rate (percentage)
function_invocationsinteger (int64)requiredFunction invocations
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobserved_request_payload_bytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observed_response_payload_bytesinteger (int64)requiredp95_response_time_msnumber | null (double)P95 monotonic API HTTP duration (milliseconds).
p99_response_time_msnumber | null (double)P99 monotonic API HTTP duration (milliseconds).
project_idstringrequiredProject ID
storage_bytesinteger | null (int64)Unavailable: no attested storage-usage producer.
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)requiredtotal_requestsinteger (int64)requiredTotal requests
unique_visitorsinteger | null (int64)Unavailable: no visitor identity collection.
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_project_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_project_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get dashboard metrics for retained completed API invocations.
GET/v1/hives/projects/{project_id}/metrics/dashboard
Parameters
project_idpath · stringrequiredOwned project ID
periodquery · string | nullRelative period: 1h, 24h, 7d, or 30d.
Responses
- 200Retained completed API invocation metrics; unavailable values are null
Response fields
activeDeploymentsinteger (int32)requiredavgApiHttpDurationMsnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
avgLatencyMsnumber | null (double)deploymentsChangenumber | null (double)errorRatenumber | null (double)errorRateChangenumber | null (double)errorTimeSeriesobject[]requirederrorTimeSeries[].[].labelsobject | nullOptional labels
errorTimeSeries[].[].timestampstring (date-time)requiredTimestamp
errorTimeSeries[].[].valuenumber (double)requiredMetric value
latencyChangenumber | null (double)latencyTimeSeriesobject[]requiredlatencyTimeSeries[].[].labelsobject | nullOptional labels
latencyTimeSeries[].[].timestampstring (date-time)requiredTimestamp
latencyTimeSeries[].[].valuenumber (double)requiredMetric value
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobservedRequestPayloadBytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observedResponsePayloadBytesinteger (int64)requiredrequestsChangenumber | null (double)requestsTimeSeriesobject[]requiredrequestsTimeSeries[].[].labelsobject | nullOptional labels
requestsTimeSeries[].[].timestampstring (date-time)requiredTimestamp
requestsTimeSeries[].[].valuenumber (double)requiredMetric value
totalRequestsinteger (int64)required
- 400Invalid metric window
- 401Unauthorized
- 404Project not found
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/dashboard" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_dashboard_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_dashboard_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get error rate metrics
GET/v1/hives/projects/{project_id}/metrics/errors
Parameters
project_idpath · stringrequiredProject ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Error metrics time series
Response fields
aggregation"sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"requiredMetric aggregation type
dataobject[]requiredData points
data[].[].labelsobject | nullOptional labels
data[].[].timestampstring (date-time)requiredTimestamp
data[].[].valuenumber (double)requiredMetric value
namestringrequiredMetric name
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredresolution_secondsinteger (int64)requiredResolution (bucket size in seconds)
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/errors" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_error_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_error_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get response time metrics
GET/v1/hives/projects/{project_id}/metrics/latency
Parameters
project_idpath · stringrequiredProject ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Latency metrics time series
Response fields
aggregation"sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"requiredMetric aggregation type
dataobject[]requiredData points
data[].[].labelsobject | nullOptional labels
data[].[].timestampstring (date-time)requiredTimestamp
data[].[].valuenumber (double)requiredMetric value
namestringrequiredMetric name
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredresolution_secondsinteger (int64)requiredResolution (bucket size in seconds)
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/latency" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_latency_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_latency_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get real-time metrics for dashboard
GET/v1/hives/projects/{project_id}/metrics/realtime
Parameters
project_idpath · stringrequiredProject ID
Responses
- 200Real-time metrics
Response fields
active_connectionsinteger | null (int64)Unavailable: process-global connections are not project measurements.
avg_api_http_duration_msnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
avg_response_time_msnumber | null (double)Compatibility alias for monotonic API HTTP duration (milliseconds). - last 5 minutes
cpu_percentnumber | null (double)Unavailable: no measured per-resource CPU producer.
error_ratenumber | null (double)Current error rate (percentage)
memory_percentnumber | null (double)Unavailable: no measured per-resource memory producer.
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobserved_request_payload_bytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observed_response_payload_bytesinteger (int64)requiredrequests_per_secondnumber (double)requiredCurrent requests per second
updated_atstring (date-time)requiredLast updated timestamp
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/realtime" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_realtime_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_realtime_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get request metrics time series
GET/v1/hives/projects/{project_id}/metrics/requests
Parameters
project_idpath · stringrequiredProject ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Request metrics time series
Response fields
aggregation"sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"requiredMetric aggregation type
dataobject[]requiredData points
data[].[].labelsobject | nullOptional labels
data[].[].timestampstring (date-time)requiredTimestamp
data[].[].valuenumber (double)requiredMetric value
namestringrequiredMetric name
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredresolution_secondsinteger (int64)requiredResolution (bucket size in seconds)
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/requests" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_request_metrics', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_request_metrics",
"arguments": {
"project_id": "<project_id>"
}
}
}Get measured API invocation metadata and real owned resource counts
GET/v1/hives/projects/{project_id}/metrics/usage
Parameters
project_idpath · stringrequiredProject ID
startquery · string | null (date-time)Start time (defaults based on resolution)
endquery · string | null (date-time)End time (defaults to now)
aggregationquery · "sum" | "avg" | "min" | "max" | "count" | "p50" | "p90" | "p95" | "p99"Aggregation type
resolutionquery · "minute" | "fiveminutes" | "fifteenminutes" | "hour" | "day"Resolution
Responses
- 200Resource usage
Response fields
active_deploymentsinteger (int32)requiredActive deployments
avg_api_http_duration_msnumber | null (double)Average monotonic API duration for retained completed invocations (milliseconds).
bandwidth_gbnumber | null (double)Unavailable: decoded payload bytes are not billed bandwidth.
build_minutesinteger | null (int64)Unavailable: no retained build-duration producer.
compute_gb_secondsnumber | null (double)Unavailable: this is not a billing ledger.
custom_domainsinteger (int32)requiredCustom domains
function_invocationsinteger (int64)requiredFunction invocations
observationobjectrequiredRetained observations only; an empty ledger is not proof of zero runtime traffic.
observation.duration_measurementstringrequiredobservation.first_observed_atstring | null (date-time)observation.payload_measurementstringrequiredobservation.sample_countinteger (int64)requiredobservation.scopestringrequiredobserved_request_payload_bytesinteger (int64)requiredDecoded HTTP payload bytes; these are not wire traffic or billing bandwidth.
observed_response_payload_bytesinteger (int64)requiredscheduled_jobsinteger (int32)requiredEnabled canonical Waggle definitions; not proof of scheduler execution.
ssl_certificatesinteger (int32)requiredSSL certificates
storage_gbnumber | null (double)Unavailable: no attested storage-usage producer.
time_rangeobjectrequiredTime range for metrics
time_range.endstring (date-time)requiredtime_range.startstring (date-time)required
- 401Unauthorized
- 403Permission denied
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/metrics/usage" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_resource_usage', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_resource_usage",
"arguments": {
"project_id": "<project_id>"
}
}
}Queues
hives_list_native_queue
GET/v1/hives/projects/{project_id}/queues
Parameters
project_idpath · stringrequiredOwned Hives project
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_native_queue', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_native_queue",
"arguments": {
"project_id": "<project_id>"
}
}
}hives_create_native_queue
POST/v1/hives/projects/{project_id}/queues
Parameters
project_idpath · stringrequiredOwned Hives project
Request body application/json
deadLetterQueueIdstring | nullmaxReceiveCountinteger (int32)min 0
namestringrequiredretentionPeriodinteger (int32)min 0
type"standard" | "fifo" | "dead_letter"Queue type determining delivery semantics
visibilityTimeoutinteger (int32)min 0
Responses
- 201Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_native_queue', {
project_id: '<project_id>',
body: {
name: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_native_queue",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string"
}
}
}
}hives_inspect_native_queue
GET/v1/hives/projects/{project_id}/queues/{queue_id}
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_inspect_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_inspect_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_delete_native_queue
DELETE/v1/hives/projects/{project_id}/queues/{queue_id}
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_configure_native_queue
PATCH/v1/hives/projects/{project_id}/queues/{queue_id}
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Request body application/json
deadLetterQueueIdstring | nullmaxReceiveCountinteger (int32)requiredmin 0
retentionPeriodinteger (int32)requiredmin 0
visibilityTimeoutinteger (int32)requiredmin 0
Responses
- 200Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X PATCH "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"retentionPeriod": 0,
"visibilityTimeout": 0,
"maxReceiveCount": 0
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_configure_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
body: {
retentionPeriod: 0,
visibilityTimeout: 0,
maxReceiveCount: 0,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_configure_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"body": {
"retentionPeriod": 0,
"visibilityTimeout": 0,
"maxReceiveCount": 0
}
}
}
}hives_get_native_queue_consumer
GET/v1/hives/projects/{project_id}/queues/{queue_id}/consumer
Parameters
project_idpath · stringrequiredqueue_idpath · stringrequired
Responses
- 200Persisted binding and latest attempt
Response fields
autoAckbooleanrequiredbatchSizeinteger (int32)requiredmin 0
consumerobjectrequiredconsumer.bindingnull | objectconsumer.exhaustedMessagesinteger (int64)requiredconsumer.latestAttemptnull | objectmaxConcurrentinteger (int32)requiredmin 0
runtimeEnabledbooleanrequired
- 401Verified identity required
- 403Hives read scope required
- 404Owned queue not found
- 503Persistence unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/consumer" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_native_queue_consumer', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_native_queue_consumer",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_configure_native_queue_consumer
PUT/v1/hives/projects/{project_id}/queues/{queue_id}/consumer
Parameters
project_idpath · stringrequiredqueue_idpath · stringrequired
Request body application/json
autoAckbooleanrequiredbatchSizeinteger (int32)requiredmin 0
deadLetterQueuestring | nullenabledbooleanrequiredfunctionIdstringrequiredmaxConcurrentinteger (int32)requiredmin 0
maxRetriesinteger (int32)requiredmin 0
queueNamestringrequiredvisibilityTimeoutSecsinteger (int32)requiredmin 0
Responses
- 200Persisted consumer binding
Response fields
createdAtstring (date-time)requiredenabledbooleanrequiredfunctionIdstringrequiredprojectIdstringrequiredqueueIdstringrequiredrevisioninteger (int64)requiredupdatedAtstring (date-time)required
- 400Invalid trigger configuration
- 401Verified identity required
- 403Queue write and function invoke scope required
- 404Owned queue or active function not found
- 409Delivery configuration mismatch or attempt in flight
- 503Unsupported trigger mode or persistence unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/consumer" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"functionId": "string",
"queueName": "string",
"batchSize": 0,
"maxConcurrent": 0,
"visibilityTimeoutSecs": 0,
"maxRetries": 0,
"autoAck": true,
"enabled": true
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_configure_native_queue_consumer', {
project_id: '<project_id>',
queue_id: '<queue_id>',
body: {
functionId: 'string',
queueName: 'string',
batchSize: 0,
maxConcurrent: 0,
visibilityTimeoutSecs: 0,
maxRetries: 0,
autoAck: true,
enabled: true,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_configure_native_queue_consumer",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"body": {
"functionId": "string",
"queueName": "string",
"batchSize": 0,
"maxConcurrent": 0,
"visibilityTimeoutSecs": 0,
"maxRetries": 0,
"autoAck": true,
"enabled": true
}
}
}
}hives_remove_native_queue_consumer
DELETE/v1/hives/projects/{project_id}/queues/{queue_id}/consumer
Parameters
project_idpath · stringrequiredqueue_idpath · stringrequired
Responses
- 200Binding removed; messages and invocation logs retained
Response fields
queueIdstringrequiredsuccessbooleanrequired
- 401Verified identity required
- 403Hives write scope required
- 404Owned queue not found
- 409Attempt in flight
- 503Persistence unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/consumer" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_remove_native_queue_consumer', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_remove_native_queue_consumer",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_consumers_native_queue
GET/v1/hives/projects/{project_id}/queues/{queue_id}/consumers
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/consumers" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_consumers_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_consumers_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_dead_letters_native_queue
GET/v1/hives/projects/{project_id}/queues/{queue_id}/dlq
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/dlq" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_dead_letters_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_dead_letters_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_purge_dlq_native_queue
DELETE/v1/hives/projects/{project_id}/queues/{queue_id}/dlq
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/dlq" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_purge_dlq_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_purge_dlq_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_delete_dlq_native_queue
DELETE/v1/hives/projects/{project_id}/queues/{queue_id}/dlq/{message_id}
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
message_idpath · stringrequiredOwned message
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/dlq/$MESSAGE_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_dlq_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
message_id: '<message_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_dlq_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"message_id": "<message_id>"
}
}
}hives_replay_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/dlq/replay
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Request body application/json
message_idstringrequired
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/dlq/replay" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_replay_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
body: {
message_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_replay_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"body": {
"message_id": "string"
}
}
}
}hives_dlq_stats_native_queue
GET/v1/hives/projects/{project_id}/queues/{queue_id}/dlq/stats
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/dlq/stats" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_dlq_stats_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_dlq_stats_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}Send one message with an explicit original funding key when required
POST/v1/hives/projects/{project_id}/queues/{queue_id}/messages
Funded standard sends require a persisted Idempotency-Key and return the original queue operation. Do not retry an unknown send with a new key. Legacy nonrequired and FIFO sends retain their message receipt; keyed FIFO is unsupported.
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Idempotency-Keyheader · stringRequired in Genesis-required mode for standard queues. Printable ASCII1–128 bytes; preserve exactly. Unsupported for FIFO.
Request body application/json
attributesobjectbodyanybody_base64string | nulldeduplication_idstring | nullRequired for FIFO: queue-scoped identity retained for 300 seconds, including after ACK.
message_group_idstring | nullRequired for FIFO: printable ASCII, 1–128 bytes. Omit for standard queues.
Responses
- 200Original terminal queue operation; no repeated send
Response fields
object"queue_send_operation"requiredoperation_idstringrequiredpattern ^qop_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "commit_unknown" | "settle_unknown" | "settled" | "denied" | "released"requiredcodestringrequiredpattern ^[a-z_]{1,80}$
message_idstring | nullrequiredpattern ^msg_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
funding_source"sandbox_allowance" | nullrequiredreservation_idstring | nullrequirednative_meter"hives.queue_operations"requiredquantity_basestring | nullrequiredpattern ^[1-5]$
upper_bound_quantity_basestringrequiredpattern ^[1-5]$
retry_sendfalserequired
- 201Newly settled funded send, or original legacy message receipt
Response fields
Type:
object | object - 202Original operation pending or unknown; use GET, never replay send
Response fields
object"queue_send_operation"requiredoperation_idstringrequiredpattern ^qop_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "commit_unknown" | "settle_unknown" | "settled" | "denied" | "released"requiredcodestringrequiredpattern ^[a-z_]{1,80}$
message_idstring | nullrequiredpattern ^msg_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
funding_source"sandbox_allowance" | nullrequiredreservation_idstring | nullrequirednative_meter"hives.queue_operations"requiredquantity_basestring | nullrequiredpattern ^[1-5]$
upper_bound_quantity_basestringrequiredpattern ^[1-5]$
retry_sendfalserequired
- 400Static invalid request
- 401Verified identity required
- 402Required funding denied; no message effect
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/messages" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('hives_send_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_send_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}hives_ack_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/messages/{message_id}/ack
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
message_idpath · stringrequiredOwned message
Request body application/json
receiptHandlestringrequired
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/messages/$MESSAGE_ID/ack" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"receiptHandle": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_ack_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
message_id: '<message_id>',
body: {
receiptHandle: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_ack_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"message_id": "<message_id>",
"body": {
"receiptHandle": "string"
}
}
}
}hives_nack_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/messages/{message_id}/nack
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
message_idpath · stringrequiredOwned message
Request body application/json
receiptHandlestringrequired
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/messages/$MESSAGE_ID/nack" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"receiptHandle": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_nack_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
message_id: '<message_id>',
body: {
receiptHandle: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_nack_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"message_id": "<message_id>",
"body": {
"receiptHandle": "string"
}
}
}
}hives_receive_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/messages/receive
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Request body application/json
maxMessagesinteger (int32)min 0
waitSecondsinteger (int32)min 0
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/messages/receive" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_receive_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_receive_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"body": {}
}
}
}Read the original queue send operation without any queue effect
GET/v1/hives/projects/{project_id}/queues/{queue_id}/operations/{operation_id}
Requires fresh native read authorization and original actor/binding. No send, receive, ACK, new reservation or automatic settlement replay.
Parameters
project_idpath · stringrequiredqueue_idpath · stringrequiredoperation_idpath · stringrequired
Responses
- 200Original settled, denied or released operation
Response fields
object"queue_send_operation"requiredoperation_idstringrequiredpattern ^qop_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "commit_unknown" | "settle_unknown" | "settled" | "denied" | "released"requiredcodestringrequiredpattern ^[a-z_]{1,80}$
message_idstring | nullrequiredpattern ^msg_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
funding_source"sandbox_allowance" | nullrequiredreservation_idstring | nullrequirednative_meter"hives.queue_operations"requiredquantity_basestring | nullrequiredpattern ^[1-5]$
upper_bound_quantity_basestringrequiredpattern ^[1-5]$
retry_sendfalserequired
- 202Original operation remains pending or unknown
Response fields
object"queue_send_operation"requiredoperation_idstringrequiredpattern ^qop_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
state"prepared" | "reserve_unknown" | "reserved" | "dispatch_unknown" | "dispatch_authorized" | "commit_unknown" | "settle_unknown" | "settled" | "denied" | "released"requiredcodestringrequiredpattern ^[a-z_]{1,80}$
message_idstring | nullrequiredpattern ^msg_[0-9a-f]{12}7[0-9a-f]{3}[89ab][0-9a-f]{15}$
funding_source"sandbox_allowance" | nullrequiredreservation_idstring | nullrequirednative_meter"hives.queue_operations"requiredquantity_basestring | nullrequiredpattern ^[1-5]$
upper_bound_quantity_basestringrequiredpattern ^[1-5]$
retry_sendfalserequired
- 404Missing or wrong owner
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/operations/$OPERATION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_operation_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
operation_id: '<operation_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_operation_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>",
"operation_id": "<operation_id>"
}
}
}hives_pause_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/pause
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/pause" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_pause_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_pause_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_purge_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/purge
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
A JSON object.
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/purge" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_purge_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_purge_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_resume_native_queue
POST/v1/hives/projects/{project_id}/queues/{queue_id}/resume
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/resume" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_resume_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_resume_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}hives_stats_native_queue
GET/v1/hives/projects/{project_id}/queues/{queue_id}/stats
Parameters
project_idpath · stringrequiredOwned Hives project
queue_idpath · stringrequiredOwned Buzz queue
Responses
- 200Actual persisted queue result
Response fields
avgProcessingTimeMsnumber | null (double)consumerCountinteger | null (int64)min 0
createdAtstringrequireddeadLetterQueueIdstring | nulldelayedMessagesinteger (int64)requireddeliveryAvailablebooleanrequiredidstringrequiredmaxMessageSizeintegerrequiredmin 0
maxReceiveCountinteger (int32)requiredmin 0
messageCountinteger (int64)requiredmessagesProcessinginteger (int64)requirednamestringrequiredprojectIdstringrequiredretainedMessagesinteger (int64)requiredretainedPayloadBytesinteger (int64)requiredretentionPeriodinteger (int32)requiredmin 0
statusstringrequiredthroughputPerSecondnumber | null (double)typestringrequiredupdatedAtstringrequiredvisibilityTimeoutinteger (int32)requiredmin 0
- 400Static invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409State or receipt conflict
- 429Stored queue capacity reached
- 503Engine or measurement unavailable; no confirmed acknowledgement
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/queues/$QUEUE_ID/stats" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_stats_native_queue', {
project_id: '<project_id>',
queue_id: '<queue_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_stats_native_queue",
"arguments": {
"project_id": "<project_id>",
"queue_id": "<queue_id>"
}
}
}Remote
Create a debug session for attaching to a running instance
POST/v1/hives/projects/{project_id}/remote/debug
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
protocolstringDebug adapter protocol (dap, chrome-devtools)
target_idstringrequiredTarget deployment or instance ID
Responses
- 201Debug session created
Response fields
debug_urlstringrequiredexpires_atstringrequiredprotocolstringrequiredsession_idstringrequiredtokenstringrequired
- 400Invalid request
- 401Unauthorized
- 404Target not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/debug" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_debug_session', {
project_id: '<project_id>',
body: {
target_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_debug_session",
"arguments": {
"project_id": "<project_id>",
"body": {
"target_id": "string"
}
}
}
}
}List active remote sessions for a project
GET/v1/hives/projects/{project_id}/remote/sessions
Parameters
project_idpath · stringrequiredProject ID
session_typequery · string | nullFilter by session type (ssh, terminal, sftp, debug)
target_idquery · string | nullFilter by target ID
Responses
- 200List of remote sessions
Response fields
A JSON object.
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sessions" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_remote_sessions', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_list_remote_sessions",
"arguments": {
"project_id": "<project_id>"
}
}
}
}Close an active remote session
DELETE/v1/hives/projects/{project_id}/remote/sessions/{session_id}
Parameters
project_idpath · stringrequiredProject ID
session_idpath · stringrequiredSession ID
Responses
- 200Session closed
Response fields
A JSON object.
- 401Unauthorized
- 404Session not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sessions/$SESSION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_close_remote_session', {
project_id: '<project_id>',
session_id: '<session_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_close_remote_session",
"arguments": {
"project_id": "<project_id>",
"session_id": "<session_id>"
}
}
}
}Delete a file via SFTP
DELETE/v1/hives/projects/{project_id}/remote/sftp/{target_id}/delete
Parameters
project_idpath · stringrequiredProject ID
target_idpath · stringrequiredTarget deployment/instance ID
Request body application/json
pathstringrequiredTarget file or directory path
Responses
- 200File deleted
Response fields
A JSON object.
- 401Unauthorized
- 404File not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sftp/$TARGET_ID/delete" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"path": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_sftp_delete', {
project_id: '<project_id>',
target_id: '<target_id>',
body: {
path: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_sftp_delete",
"arguments": {
"project_id": "<project_id>",
"target_id": "<target_id>",
"body": {
"path": "string"
}
}
}
}
}List files via SFTP
GET/v1/hives/projects/{project_id}/remote/sftp/{target_id}/ls
Parameters
project_idpath · stringrequiredProject ID
target_idpath · stringrequiredTarget deployment/instance ID
pathquery · stringDirectory path to list
Responses
- 200Directory listing
Response fields
A JSON object.
- 401Unauthorized
- 404Target not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sftp/$TARGET_ID/ls" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_sftp_list', {
project_id: '<project_id>',
target_id: '<target_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_sftp_list",
"arguments": {
"project_id": "<project_id>",
"target_id": "<target_id>"
}
}
}
}Read a file via SFTP (returns base64-encoded content)
GET/v1/hives/projects/{project_id}/remote/sftp/{target_id}/read
Parameters
project_idpath · stringrequiredProject ID
target_idpath · stringrequiredTarget deployment/instance ID
pathquery · stringDirectory path to list
Responses
- 200File content
Response fields
A JSON object.
- 401Unauthorized
- 404File not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sftp/$TARGET_ID/read" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_sftp_read', {
project_id: '<project_id>',
target_id: '<target_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_sftp_read",
"arguments": {
"project_id": "<project_id>",
"target_id": "<target_id>"
}
}
}
}Write a file via SFTP
POST/v1/hives/projects/{project_id}/remote/sftp/{target_id}/write
Parameters
project_idpath · stringrequiredProject ID
target_idpath · stringrequiredTarget deployment/instance ID
Request body application/json
content_base64stringrequiredBase64-encoded file content
pathstringrequiredTarget file path
Responses
- 200File written
Response fields
A JSON object.
- 401Unauthorized
- 404Target not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/sftp/$TARGET_ID/write" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"path": "string",
"content_base64": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_sftp_write', {
project_id: '<project_id>',
target_id: '<target_id>',
body: {
path: 'string',
content_base64: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_sftp_write",
"arguments": {
"project_id": "<project_id>",
"target_id": "<target_id>",
"body": {
"path": "string",
"content_base64": "string"
}
}
}
}
}Create an SSH session for remote access
POST/v1/hives/projects/{project_id}/remote/ssh
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
public_keystringrequiredSSH public key for authentication
target_idstringrequiredTarget deployment or instance ID
ttl_secsinteger (int64)Session TTL in seconds (default 3600) min 0
Responses
- 201SSH session created
Response fields
expires_atstringrequiredfingerprintstringrequiredhoststringrequiredportinteger (int32)requiredmin 0
session_idstringrequiredusernamestringrequired
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/ssh" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_id": "string",
"public_key": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_ssh_session', {
project_id: '<project_id>',
body: {
target_id: 'string',
public_key: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_ssh_session",
"arguments": {
"project_id": "<project_id>",
"body": {
"target_id": "string",
"public_key": "string"
}
}
}
}
}Create a WebSocket terminal session
POST/v1/hives/projects/{project_id}/remote/terminal
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
colsinteger (int32)Terminal columns min 0
rowsinteger (int32)Terminal rows min 0
shellstringShell to use (default: /bin/sh)
target_idstringrequiredTarget deployment or instance ID
Responses
- 201Terminal session created
Response fields
expires_atstringrequiredsession_idstringrequiredtokenstringrequiredwebsocket_urlstringrequired
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/remote/terminal" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_id": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_terminal_session', {
project_id: '<project_id>',
body: {
target_id: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "hives_create_terminal_session",
"arguments": {
"project_id": "<project_id>",
"body": {
"target_id": "string"
}
}
}
}
}Runtimes
Read compiled serving metadata after verified owned project lookup
GET/v1/hives/projects/{project_id}/runtimes
Parameters
project_idpath · stringrequired
Responses
- 200Implemented serving runtime catalog; not live capacity
Response fields
runtimesobject[]requiredruntimes[].[].artifactKindsstring[]requiredAccepted serving artifacts; optional library presence does not imply execution.
runtimes[].[].capabilityScopestringrequiredThis catalog is implementation metadata, not observed node availability.
runtimes[].[].compiledFeaturesstring[]requiredActual Cargo feature flags, separately from serving admission.
runtimes[].[].featuresstring[]requiredruntimes[].[].namestringrequiredruntimes[].[].runnersstring[]requiredruntimes[].[].useCasesstring[]requiredruntimes[].[].versionstringrequiredExact locked dependency version embedded by the Nectar build script.
runtimes[].[].wasiVersionsstring[]requiredWASI interfaces accepted by the real serving path.
- 401Unauthorized
- 404Project not found in the verified organization
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/runtimes" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_project_runtimes', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_project_runtimes",
"arguments": {
"project_id": "<project_id>"
}
}
}hives_list_runtimes
GET/v1/hives/runtimes
Responses
- 200Implemented serving runtime catalog; not live capacity
Response fields
runtimesobject[]requiredruntimes[].[].artifactKindsstring[]requiredAccepted serving artifacts; optional library presence does not imply execution.
runtimes[].[].capabilityScopestringrequiredThis catalog is implementation metadata, not observed node availability.
runtimes[].[].compiledFeaturesstring[]requiredActual Cargo feature flags, separately from serving admission.
runtimes[].[].featuresstring[]requiredruntimes[].[].namestringrequiredruntimes[].[].runnersstring[]requiredruntimes[].[].useCasesstring[]requiredruntimes[].[].versionstringrequiredExact locked dependency version embedded by the Nectar build script.
runtimes[].[].wasiVersionsstring[]requiredWASI interfaces accepted by the real serving path.
- 401Unauthorized
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/runtimes" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_runtimes'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_runtimes",
"arguments": {}
}
}hives_get_runtime
GET/v1/hives/runtimes/{name}
Parameters
namepath · stringrequiredImplemented serving runtime name
Responses
- 200Serving runtime details
Response fields
artifactKindsstring[]requiredAccepted serving artifacts; optional library presence does not imply execution.
capabilityScopestringrequiredThis catalog is implementation metadata, not observed node availability.
compiledFeaturesstring[]requiredActual Cargo feature flags, separately from serving admission.
featuresstring[]requirednamestringrequiredrunnersstring[]requireduseCasesstring[]requiredversionstringrequiredExact locked dependency version embedded by the Nectar build script.
wasiVersionsstring[]requiredWASI interfaces accepted by the real serving path.
- 401Unauthorized
- 404Runtime not implemented
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/runtimes/$NAME" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_runtime', {
name: '<name>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_runtime",
"arguments": {
"name": "<name>"
}
}
}hives_select_runtime
GET/v1/hives/runtimes/select
Parameters
wasiquery · stringrequiredServing WASI interface: preview1 (p1/wasi-preview1 aliases accepted).
runnerquery · stringrequiredServing runner: http.
artifactquery · stringrequiredServing artifact: core-module (core alias accepted).
Responses
- 200Implemented serving selection; not deployment admission
Response fields
artifactstringrequiredreasonstringrequiredrunnerstringrequiredselectedstringrequiredwasistringrequired
- 400Unsupported or invalid serving workload shape
- 401Unauthorized
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/runtimes/select?wasi=$WASI&runner=$RUNNER&artifact=$ARTIFACT" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_select_runtime', {
wasi: '<wasi>',
runner: '<runner>',
artifact: '<artifact>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_select_runtime",
"arguments": {
"wasi": "<wasi>",
"runner": "<runner>",
"artifact": "<artifact>"
}
}
}Secrets
List all secrets for a project (names and metadata only, not values)
GET/v1/hives/projects/{project_id}/secrets
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
pagequery · integer (int32)Page number (1-indexed, up to 10000)
per_pagequery · integer (int32)Items per page
Responses
- 200List of secrets
Response fields
dataobject[]requiredResponse data
data[].[].created_atstring (date-time)requiredCreated timestamp
data[].[].descriptionstring | nullDescription
data[].[].namestringrequiredSecret name
data[].[].updated_atstring (date-time)requiredUpdated timestamp
data[].[].versioninteger (int32)requiredCurrent version min 0
paginationobjectrequiredPagination metadata
pagination.has_nextbooleanrequiredWhether there is a next page
pagination.has_prevbooleanrequiredWhether there is a previous page
pagination.pageinteger (int32)requiredCurrent page number min 0
pagination.per_pageinteger (int32)requiredItems per page min 0
pagination.totalinteger (int64)requiredTotal number of items min 0
pagination.total_pagesinteger (int32)requiredTotal number of pages min 0
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Project not found
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_secrets', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_secrets",
"arguments": {
"project_id": "<project_id>"
}
}
}Create a new secret
POST/v1/hives/projects/{project_id}/secrets
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
descriptionstring | nullDescription max length 500
namestringrequiredSecret name min length 1 · max length 255 · pattern ^[A-Za-z][A-Za-z0-9_]*$
valuestringrequiredSecret value, limited to 65,536 UTF-8 bytes by Genesis KMS min length 1 · max length 65536
Responses
- 201Secret created
Response fields
idstringrequiredPersisted secret ID for metadata, update, delete and reveal routes
created_atstring (date-time)requiredCreated timestamp
descriptionstring | nullDescription
namestringrequiredSecret name
updated_atstring (date-time)requiredUpdated timestamp
versioninteger (int32)requiredCurrent version min 0
- 400Invalid request
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Project not found
- 409Secret already exists
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"value": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_secret', {
project_id: '<project_id>',
body: {
name: 'string',
value: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_secret",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string",
"value": "string"
}
}
}
}Get a secret's metadata (not its value)
GET/v1/hives/projects/{project_id}/secrets/{secret_id}
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
secret_idpath · stringrequiredSecret ID
Responses
- 200Secret metadata
Response fields
idstringrequiredPersisted secret ID for metadata, update, delete and reveal routes
created_atstring (date-time)requiredCreated timestamp
descriptionstring | nullDescription
namestringrequiredSecret name
updated_atstring (date-time)requiredUpdated timestamp
versioninteger (int32)requiredCurrent version min 0
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Secret not found
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets/$SECRET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_secret', {
project_id: '<project_id>',
secret_id: '<secret_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_secret",
"arguments": {
"project_id": "<project_id>",
"secret_id": "<secret_id>"
}
}
}Update a secret's value (creates a new version)
PUT/v1/hives/projects/{project_id}/secrets/{secret_id}
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
secret_idpath · stringrequiredSecret ID
Request body application/json
valuestringrequiredNew secret value, limited to 65,536 UTF-8 bytes by Genesis KMS min length 1 · max length 65536
Responses
- 200Secret updated
Response fields
idstringrequiredPersisted secret ID for metadata, update, delete and reveal routes
created_atstring (date-time)requiredCreated timestamp
descriptionstring | nullDescription
namestringrequiredSecret name
updated_atstring (date-time)requiredUpdated timestamp
versioninteger (int32)requiredCurrent version min 0
- 400Invalid request
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Secret not found
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets/$SECRET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"value": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_secret', {
project_id: '<project_id>',
secret_id: '<secret_id>',
body: {
value: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_secret",
"arguments": {
"project_id": "<project_id>",
"secret_id": "<secret_id>",
"body": {
"value": "string"
}
}
}
}Delete a secret
DELETE/v1/hives/projects/{project_id}/secrets/{secret_id}
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
secret_idpath · stringrequiredSecret ID
Responses
- 200Secret deleted
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Secret not found
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets/$SECRET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_secret', {
project_id: '<project_id>',
secret_id: '<secret_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_secret",
"arguments": {
"project_id": "<project_id>",
"secret_id": "<secret_id>"
}
}
}Explicitly reveal a secret value (sensitive output, audit logged)
GET/v1/hives/projects/{project_id}/secrets/{secret_id}/reveal
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
secret_idpath · stringrequiredSecret ID
Responses
- 200Secret value revealed
Response fields
valuestringrequired
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Secret not found
- 500Decryption failed
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets/$SECRET_ID/reveal" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_reveal_secret', {
project_id: '<project_id>',
secret_id: '<secret_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_reveal_secret",
"arguments": {
"project_id": "<project_id>",
"secret_id": "<secret_id>"
}
}
}Bulk create or update secrets
PUT/v1/hives/projects/{project_id}/secrets/bulk
The backend verifies the signed org owns the project and secret. Unknown, foreign-org or wrong-project resources return 404. Values remain encrypted in Genesis KMS; only explicit reveal returns plaintext.
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
descriptionstring | nullDescription max length 500
namestringrequiredSecret name min length 1 · max length 255 · pattern ^[A-Za-z][A-Za-z0-9_]*$
valuestringrequiredSecret value, limited to 65,536 UTF-8 bytes by Genesis KMS min length 1 · max length 65536
Responses
- 200Secrets created/updated
Response fields
successbooleanrequiredsecretsobject[]requiredsecrets[].[].idstringrequiredPersisted secret ID for metadata, update, delete and reveal routes
secrets[].[].created_atstring (date-time)requiredCreated timestamp
secrets[].[].descriptionstring | nullDescription
secrets[].[].namestringrequiredSecret name
secrets[].[].updated_atstring (date-time)requiredUpdated timestamp
secrets[].[].versioninteger (int32)requiredCurrent version min 0
- 400Invalid request
- 401Unauthorized
- 403Missing the required hives read or write scope
- 404Project not found
- 500Internal server error
- 503Customer encryption unavailable or legacy ciphertext requires protected migration
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/secrets/bulk" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '[]'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_bulk_upsert_secrets', {
project_id: '<project_id>',
body: [],
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_bulk_upsert_secrets",
"arguments": {
"project_id": "<project_id>",
"body": []
}
}
}Settings
hives_get_project_settings
GET/v1/hives/projects/{project_id}/settings
Parameters
project_idpath · stringrequiredOwned project ID
Responses
- 200Stored and effective project settings
Response fields
autoDeployEnabledbooleanrequiredbuildCommandstring | nulldefaultRegionstringrequiredinstallCommandstring | nulloutputDirectorystring | nullpreviewDeploymentsEnabledbooleanrequiredcapabilitiesobjectrequiredcapabilities.autoDeployobjectrequiredcapabilities.autoDeploy.availablebooleanrequiredcapabilities.autoDeploy.reasonCodestringrequiredcapabilities.buildCommandsobjectrequiredcapabilities.buildCommands.availablebooleanrequiredcapabilities.buildCommands.reasonCodestringrequiredcapabilities.previewDeploymentsobjectrequiredcapabilities.previewDeployments.availablebooleanrequiredcapabilities.previewDeployments.reasonCodestringrequiredeffectiveobjectrequiredeffective.autoDeployEnabledbooleanrequiredeffective.defaultRegionstringrequiredThe only supported deployment target, not a guarantee of live capacity.
effective.previewDeploymentsEnabledbooleanrequired
- 401Unauthorized
- 403Read scope required
- 404Project not found
- 500Settings unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/settings" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_project_settings', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_project_settings",
"arguments": {
"project_id": "<project_id>"
}
}
}hives_update_project_settings
PATCH/v1/hives/projects/{project_id}/settings
Parameters
project_idpath · stringrequiredOwned project ID
Request body application/json
autoDeployEnabledboolean | nullbuildCommandstring | nullBlank clears a stored command. Source-build commands are not operational in Genesis.
defaultRegionstring | nullinstallCommandstring | nulloutputDirectorystring | nullpreviewDeploymentsEnabledboolean | null
Responses
- 200Persisted stored settings and actual capabilities
Response fields
autoDeployEnabledbooleanrequiredbuildCommandstring | nulldefaultRegionstringrequiredinstallCommandstring | nulloutputDirectorystring | nullpreviewDeploymentsEnabledbooleanrequiredcapabilitiesobjectrequiredcapabilities.autoDeployobjectrequiredcapabilities.autoDeploy.availablebooleanrequiredcapabilities.autoDeploy.reasonCodestringrequiredcapabilities.buildCommandsobjectrequiredcapabilities.buildCommands.availablebooleanrequiredcapabilities.buildCommands.reasonCodestringrequiredcapabilities.previewDeploymentsobjectrequiredcapabilities.previewDeployments.availablebooleanrequiredcapabilities.previewDeployments.reasonCodestringrequiredeffectiveobjectrequiredeffective.autoDeployEnabledbooleanrequiredeffective.defaultRegionstringrequiredThe only supported deployment target, not a guarantee of live capacity.
effective.previewDeploymentsEnabledbooleanrequired
- 400Invalid region or bounded settings
- 401Unauthorized
- 403Write scope required
- 404Project not found
- 409Stored settings owner conflict
- 503Requested Git or source-build engine is not connected
- 4xx 5xxThe error envelope.
curl -X PATCH "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/settings" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_update_project_settings', {
project_id: '<project_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_update_project_settings",
"arguments": {
"project_id": "<project_id>",
"body": {}
}
}
}Storage
List all storage buckets for a project
GET/v1/hives/projects/{project_id}/storage/buckets
Parameters
project_idpath · stringrequiredProject ID
pagequery · integer (int32)Page number (1-indexed)
per_pagequery · integer (int32)Items per page
Responses
- 200List of buckets
Response fields
dataobject[]requireddata[].[].idstringrequireddata[].[].tenant_idstringrequireddata[].[].project_idstringrequireddata[].[].namestringrequireddata[].[].regionstringrequireddata[].[].visibilitystringrequireddata[].[].statusstringrequireddata[].[].created_atstringrequireddata[].[].object_countinteger | nullrequiredmin 0
data[].[].size_bytesinteger | nullrequiredmin 0
data[].[].statistics_scope"unmeasured_provider_inventory" | "retained_legacy_metadata"requireddata[].[].provider_bindingobject | nullrequireddata[].[].provider_binding.provider"gcs"requireddata[].[].provider_binding.regionstringrequireddata[].[].provider_binding.statestringrequireddata[].[].provider_binding.requires_reconciliationbooleanrequireddata[].[].operation_statestring | nullrequiredpaginationobjectrequiredpagination.pageintegerrequiredmin 0
pagination.per_pageintegerrequiredmin 0
pagination.totalintegerrequiredmin 0
pagination.total_pagesintegerrequiredmin 0
pagination.has_nextbooleanrequiredpagination.has_prevbooleanrequired
- 401Unauthorized
- 404Project not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_buckets', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_buckets",
"arguments": {
"project_id": "<project_id>"
}
}
}Create a new storage bucket
POST/v1/hives/projects/{project_id}/storage/buckets
Parameters
project_idpath · stringrequiredProject ID
Request body application/json
cors_rulesobject[]cors_rules[].[].allowed_originsstring[]requiredcors_rules[].[].allowed_methodsstring[]requiredcors_rules[].[].allowed_headers["*"]requiredcors_rules[].[].exposed_headersstring[]requiredcors_rules[].[].max_age_secsintegerrequiredmin 0
namestringrequiredBucket name
region"us-central1"default "us-central1"
visibility"private" | "publicread"default "private"
Responses
- 201Bucket created and access policy confirmed
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredvisibilitystringrequiredstatusstringrequiredcreated_atstringrequiredobject_countinteger | nullrequiredmin 0
size_bytesinteger | nullrequiredmin 0
statistics_scope"unmeasured_provider_inventory" | "retained_legacy_metadata"requiredprovider_bindingobject | nullrequiredprovider_binding.provider"gcs"requiredprovider_binding.regionstringrequiredprovider_binding.statestringrequiredprovider_binding.requires_reconciliationbooleanrequiredoperation_statestring | nullrequired
- 202Durable pending provider outcome; explicit readback/reconciliation required
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredvisibilitystringrequiredstatusstringrequiredcreated_atstringrequiredobject_countinteger | nullrequiredmin 0
size_bytesinteger | nullrequiredmin 0
statistics_scope"unmeasured_provider_inventory" | "retained_legacy_metadata"requiredprovider_bindingobject | nullrequiredprovider_binding.provider"gcs"requiredprovider_binding.regionstringrequiredprovider_binding.statestringrequiredprovider_binding.requires_reconciliationbooleanrequiredoperation_statestring | nullrequired
- 400Invalid request
- 401Unauthorized
- 404Project not found
- 409Bucket already exists
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_bucket', {
project_id: '<project_id>',
body: {
name: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_bucket",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string"
}
}
}
}Get a specific bucket
GET/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
Responses
- 200Bucket details
Response fields
idstringrequiredtenant_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredvisibilitystringrequiredstatusstringrequiredcreated_atstringrequiredobject_countinteger | nullrequiredmin 0
size_bytesinteger | nullrequiredmin 0
statistics_scope"unmeasured_provider_inventory" | "retained_legacy_metadata"requiredprovider_bindingobject | nullrequiredprovider_binding.provider"gcs"requiredprovider_binding.regionstringrequiredprovider_binding.statestringrequiredprovider_binding.requires_reconciliationbooleanrequiredoperation_statestring | nullrequired
- 401Unauthorized
- 404Bucket not found
- 500Internal server error
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_bucket', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_bucket",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>"
}
}
}Delete a storage bucket
DELETE/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
Responses
- 200Bucket deleted
Response fields
idstringrequiredDeleted resource ID
messagestringrequiredMessage
successbooleanrequiredSuccess flag
- 400Bucket not empty
- 401Unauthorized
- 404Bucket not found
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_bucket', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_bucket",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>"
}
}
}Get CORS rules for a bucket
GET/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/cors
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
Responses
- 200CORS configuration
Response fields
allowed_originsstring[]requiredallowed_methodsstring[]requiredallowed_headers["*"]requiredexposed_headersstring[]requiredmax_age_secsintegerrequiredmin 0
- 401Unauthorized
- 404Bucket not found
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/cors" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_cors_config', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_cors_config",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>"
}
}
}Set CORS rules for a bucket
PUT/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/cors
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
Request body application/json
rulesobject[]requiredrules[].[].allowed_originsstring[]requiredrules[].[].allowed_methodsstring[]requiredrules[].[].allowed_headers["*"]requiredrules[].[].exposed_headersstring[]requiredrules[].[].max_age_secsintegerrequiredmin 0
Responses
- 200CORS configuration updated
Response fields
allowed_originsstring[]requiredallowed_methodsstring[]requiredallowed_headers["*"]requiredexposed_headersstring[]requiredmax_age_secsintegerrequiredmin 0
- 401Unauthorized
- 404Bucket not found
- 422Validation error
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/cors" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"rules": []
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_set_cors_config', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
body: {
rules: [],
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_set_cors_config",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"body": {
"rules": []
}
}
}
}List objects in a bucket
GET/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
prefixquery · string | nullPrefix filter
delimiterquery · string | nullDelimiter for hierarchical listing
continuation_tokenquery · string | nullContinuation token for pagination
max_keysquery · integer (int32)Maximum keys to return
Responses
- 200Provider object list; content_type and metadata may be null when not returned by listing; total is unknown
Response fields
objectsobject[]requiredobjects[].[].keystringrequiredobjects[].[].bucket_idstringrequiredobjects[].[].size_bytesintegerrequiredmin 0
objects[].[].etagstringrequiredobjects[].[].generationstringrequiredobjects[].[].content_typestring | nullrequiredobjects[].[].last_modifiedstringrequiredobjects[].[].metadataobject | nullrequiredobjects[].[].metadata_scope"provider_list_metadata"requiredcommon_prefixesstring[]requiredis_truncatedbooleanrequirednext_continuation_tokenstring | nullrequiredtotalnullrequired
- 401Unauthorized
- 404Bucket not found
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_objects', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_objects",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>"
}
}
}hives_upload_object_by_key
PUT/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects
Request bodies sent through https://os.one.ml/api are limited to 2 MiB.
Parameters
project_idpath · stringrequiredbucket_idpath · stringrequiredkey_base64urlquery · stringrequiredUnpadded base64url UTF-8 key, 1..1366 characters and <=1024 decoded bytes.
Request body application/octet-stream
Type: string
Responses
- 200Actual provider upload metadata
Response fields
keystringrequiredbucket_idstringrequiredsize_bytesintegerrequiredmin 0 · max 10485760
etagstringrequiredgenerationstringrequiredcontent_typestring | nullrequired
- 400Invalid encoded key
- 404Owned bucket not found
- 409Operation pending or generation changed
- 413Object exceeds 10 MiB
- 503Provider outcome unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects?key_base64url=$KEY_BASE64URL" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/octet-stream" \
--data-binary @body.binimport { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_upload_object_by_key', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
key_base64url: '<key_base64url>',
body: '<bytes>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_upload_object_by_key",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"key_base64url": "<key_base64url>",
"body": "<bytes>"
}
}
}hives_delete_object_by_key
DELETE/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects
Parameters
project_idpath · stringrequiredbucket_idpath · stringrequiredkey_base64urlquery · stringrequiredUnpadded base64url UTF-8 key, 1..1366 characters and <=1024 decoded bytes.
Responses
- 200Exact empty acknowledgement
- 204Empty compatible acknowledgement
- 400Invalid encoded key
- 404Owned bucket not found
- 409Operation pending or generation changed
- 503Provider outcome unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects?key_base64url=$KEY_BASE64URL" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_object_by_key', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
key_base64url: '<key_base64url>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_object_by_key",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"key_base64url": "<key_base64url>"
}
}
}Upload an object to a bucket via a server-side proxy.
PUT/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects/{key}
Accepts the raw request body and streams it to the S3-compatible backend. For large uploads, clients should prefer presigned URLs via POST .../presigned to avoid routing traffic through the API server.
Request bodies sent through https://os.one.ml/api are limited to 2 MiB.
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
keypath · stringrequiredObject key
Request body application/octet-stream
Type: string
Responses
- 200Object uploaded
Response fields
keystringrequiredbucket_idstringrequiredsize_bytesintegerrequiredmin 0 · max 10485760
etagstringrequiredgenerationstringrequiredcontent_typestring | nullrequired
- 401Unauthorized
- 404Bucket not found
- 413Payload too large
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects/$KEY" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/octet-stream" \
--data-binary @body.binimport { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_upload_object', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
key: '<key>',
body: '<bytes>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_upload_object",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"key": "<key>",
"body": "<bytes>"
}
}
}Delete an object from a bucket
DELETE/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects/{key}
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
keypath · stringrequiredObject key
Responses
- 200Exact empty acknowledgement
- 204Empty compatible acknowledgement
- 401Unauthorized
- 404Object not found
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects/$KEY" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_object', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
key: '<key>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_object",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"key": "<key>"
}
}
}hives_download_object_by_key
GET/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/objects/download
Parameters
project_idpath · stringrequiredbucket_idpath · stringrequiredkey_base64urlquery · stringrequiredUnpadded base64url UTF-8 key, 1..1366 characters and <=1024 decoded bytes.
Responses
- 200Actual raw stored bytes with no-store attachment; at most 10 MiB
Response fields
Type:
string - 400Invalid encoded key
- 404Owned object not found
- 409Bucket operation pending
- 413Object exceeds 10 MiB
- 503Provider unavailable
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/objects/download?key_base64url=$KEY_BASE64URL" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_download_object_by_key', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
key_base64url: '<key_base64url>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_download_object_by_key",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"key_base64url": "<key_base64url>"
}
}
}Generate a presigned URL for object access
POST/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/presigned
Parameters
project_idpath · stringrequiredProject ID
bucket_idpath · stringrequiredBucket ID
Request body application/json
content_lengthinteger | nullmin 0 · max 10485760
content_typestring | nullContent type (for PUT requests)
expires_in_secsinteger (int64)URL expiration in seconds (60-604800) min 60 · max 900
keystringrequiredObject key
method"GET" | "PUT"default "GET"
Responses
- 200Presigned URL generated
Response fields
expires_atstring (date-time)requiredExpiration timestamp
methodstringrequiredMethod
required_headersobjectRequired headers (for PUT requests)
urlstringrequiredPresigned URL
- 400Invalid request
- 401Unauthorized
- 404Bucket not found
- 500Internal server error
- 503Object storage provider is unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/presigned" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"key": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_generate_presigned_url', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
body: {
key: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_generate_presigned_url",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>",
"body": {
"key": "string"
}
}
}
}Explicit recovery observes provider generations. It never replays an unknown
POST/v1/hives/projects/{project_id}/storage/buckets/{bucket_id}/reconcile
Parameters
project_idpath · stringrequiredbucket_idpath · stringrequired
Responses
- 200Observed reconciliation outcome, with actual bucket metadata
Response fields
outcomestringrequiredbucketobjectrequiredActual Cells005 BucketView JSON. Bound inventory counters are null; legacy counts are recorded metadata. Pending provider state is not completed creation.
bucket.idstringrequiredbucket.tenant_idstringrequiredbucket.project_idstringrequiredbucket.namestringrequiredbucket.regionstringrequiredbucket.visibilitystringrequiredbucket.statusstringrequiredbucket.created_atstringrequiredbucket.object_countinteger | nullrequiredmin 0
bucket.size_bytesinteger | nullrequiredmin 0
bucket.statistics_scope"unmeasured_provider_inventory" | "retained_legacy_metadata"requiredbucket.provider_bindingobject | nullrequiredbucket.provider_binding.provider"gcs"requiredbucket.provider_binding.regionstringrequiredbucket.provider_binding.statestringrequiredbucket.provider_binding.requires_reconciliationbooleanrequiredbucket.operation_statestring | nullrequired
- 404Owned bucket not found
- 409Provider outcome remains uncertain
- 503Provider unavailable
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/storage/buckets/$BUCKET_ID/reconcile" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_reconcile', {
project_id: '<project_id>',
bucket_id: '<bucket_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_reconcile",
"arguments": {
"project_id": "<project_id>",
"bucket_id": "<bucket_id>"
}
}
}Topics
hives_list_native_topic
GET/v1/hives/projects/{project_id}/topics
Parameters
project_idpath · stringrequiredOwned Hives project
Responses
- 200Persisted owned pub/sub result
Response fields
A JSON object.
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_native_topic', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_native_topic",
"arguments": {
"project_id": "<project_id>"
}
}
}hives_create_native_topic
POST/v1/hives/projects/{project_id}/topics
Parameters
project_idpath · stringrequiredOwned Hives project
Request body application/json
namestringrequired
Responses
- 201Persisted owned pub/sub result
Response fields
createdAtstring (date-time)requiredidstringrequirednamestringrequiredprojectIdstringrequired
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_native_topic', {
project_id: '<project_id>',
body: {
name: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_native_topic",
"arguments": {
"project_id": "<project_id>",
"body": {
"name": "string"
}
}
}
}hives_inspect_native_topic
GET/v1/hives/projects/{project_id}/topics/{topic_id}
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
Responses
- 200Persisted owned pub/sub result
Response fields
createdAtstring (date-time)requiredidstringrequirednamestringrequiredprojectIdstringrequired
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_inspect_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_inspect_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>"
}
}
}hives_delete_native_topic
DELETE/v1/hives/projects/{project_id}/topics/{topic_id}
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
Responses
- 200Persisted owned pub/sub result
Response fields
A JSON object.
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>"
}
}
}hives_publish_native_topic
POST/v1/hives/projects/{project_id}/topics/{topic_id}/messages
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
Request body application/json
attributesobjectbodyanybody_base64string | null
Responses
- 201Persisted owned pub/sub result
Response fields
deliveriesobject[]requireddeliveries[].[].message_idstringrequireddeliveries[].[].queue_idstringrequireddeliveries[].[].subscription_idstringrequiredpublication_idstringrequired
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID/messages" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_publish_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
body: {},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_publish_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>",
"body": {}
}
}
}hives_subscriptions_native_topic
GET/v1/hives/projects/{project_id}/topics/{topic_id}/subscriptions
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
Responses
- 200Persisted owned pub/sub result
Response fields
A JSON object.
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID/subscriptions" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_subscriptions_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_subscriptions_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>"
}
}
}hives_subscribe_native_topic
POST/v1/hives/projects/{project_id}/topics/{topic_id}/subscriptions
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
Request body application/json
queueIdstringrequired
Responses
- 201Persisted owned pub/sub result
Response fields
createdAtstring (date-time)requiredidstringrequiredprojectIdstringrequiredqueueIdstringrequiredtopicIdstringrequired
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID/subscriptions" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"queueId": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_subscribe_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
body: {
queueId: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_subscribe_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>",
"body": {
"queueId": "string"
}
}
}
}hives_unsubscribe_native_topic
DELETE/v1/hives/projects/{project_id}/topics/{topic_id}/subscriptions/{subscription_id}
Parameters
project_idpath · stringrequiredOwned Hives project
topic_idpath · stringrequiredOwned Buzz topic
subscription_idpath · stringrequiredSubscription of the owned topic
Responses
- 200Persisted owned pub/sub result
Response fields
A JSON object.
- 400Invalid request
- 401Verified identity required
- 403Hives scope required
- 404Owned resource not found
- 409Retained state conflict
- 429Stored queue or topic capacity reached
- 503Persistence unavailable or commit not confirmed
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/topics/$TOPIC_ID/subscriptions/$SUBSCRIPTION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_unsubscribe_native_topic', {
project_id: '<project_id>',
topic_id: '<topic_id>',
subscription_id: '<subscription_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_unsubscribe_native_topic",
"arguments": {
"project_id": "<project_id>",
"topic_id": "<topic_id>",
"subscription_id": "<subscription_id>"
}
}
}Volumes
List persisted local volumes
GET/v1/hives/projects/{project_id}/volumes
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
pagequery · integerper_pagequery · integer
Responses
- 200Actual persisted volume result
Response fields
volumesobject[]requiredvolumes[].[].idstring (uuid)requiredvolumes[].[].project_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
volumes[].[].namestringrequiredmin length 1 · max length 64
volumes[].[].size_gibnumberrequiredmin 0.03125 · max 1
volumes[].[].backing_bytesintegerrequiredmin 33554432 · max 1073741824
volumes[].[].capacity_bytesinteger | nullrequiredmin 0
volumes[].[].used_bytesinteger | nullrequiredmin 0
volumes[].[].used_gibnumber | nullrequiredmin 0
volumes[].[].storage_class"local"requiredvolumes[].[].access_mode"read_write_once"requiredvolumes[].[].state"creating" | "available" | "attaching" | "attached" | "detaching" | "deleting" | "failed"requiredvolumes[].[].operation_pendingbooleanrequiredvolumes[].[].generationintegerrequiredmin 1
volumes[].[].mount_pathstring | nullrequiredmax length 128
volumes[].[].attached_tostring | nullrequiredmax length 128
volumes[].[].read_onlyboolean | nullrequiredvolumes[].[].created_atstring (date-time)requiredvolumes[].[].updated_atstring (date-time)requiredpaginationobjectrequiredpagination.pageintegerrequiredmin 1
pagination.per_pageintegerrequiredmin 1
pagination.totalintegerrequiredmin 0
pagination.total_pagesintegerrequiredmin 0
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_volumes', {
project_id: '<project_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_volumes",
"arguments": {
"project_id": "<project_id>"
}
}
}Create bounded local persistent storage
POST/v1/hives/projects/{project_id}/volumes
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
Request body application/json
namestringrequiredmin length 1 · max length 64
size_mibintegermin 32 · max 1024
size_gib1storage_class"local"default "local"
access_mode"read_write_once"default "read_write_once"
Responses
- 201Actual persisted volume result
Response fields
idstring (uuid)requiredproject_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
namestringrequiredmin length 1 · max length 64
size_gibnumberrequiredmin 0.03125 · max 1
backing_bytesintegerrequiredmin 33554432 · max 1073741824
capacity_bytesinteger | nullrequiredmin 0
used_bytesinteger | nullrequiredmin 0
used_gibnumber | nullrequiredmin 0
storage_class"local"requiredaccess_mode"read_write_once"requiredstate"creating" | "available" | "attaching" | "attached" | "detaching" | "deleting" | "failed"requiredoperation_pendingbooleanrequiredgenerationintegerrequiredmin 1
mount_pathstring | nullrequiredmax length 128
attached_tostring | nullrequiredmax length 128
read_onlyboolean | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '"string"'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_create_volume', {
project_id: '<project_id>',
body: 'string',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_create_volume",
"arguments": {
"project_id": "<project_id>",
"body": "string"
}
}
}Read persisted volume state and measured usage
GET/v1/hives/projects/{project_id}/volumes/{volume_id}
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
volume_idpath · string (uuid)requiredVolume owned by this project
Responses
- 200Actual persisted volume result
Response fields
idstring (uuid)requiredproject_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
namestringrequiredmin length 1 · max length 64
size_gibnumberrequiredmin 0.03125 · max 1
backing_bytesintegerrequiredmin 33554432 · max 1073741824
capacity_bytesinteger | nullrequiredmin 0
used_bytesinteger | nullrequiredmin 0
used_gibnumber | nullrequiredmin 0
storage_class"local"requiredaccess_mode"read_write_once"requiredstate"creating" | "available" | "attaching" | "attached" | "detaching" | "deleting" | "failed"requiredoperation_pendingbooleanrequiredgenerationintegerrequiredmin 1
mount_pathstring | nullrequiredmax length 128
attached_tostring | nullrequiredmax length 128
read_onlyboolean | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes/$VOLUME_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_get_volume', {
project_id: '<project_id>',
volume_id: '<volume_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_get_volume",
"arguments": {
"project_id": "<project_id>",
"volume_id": "<volume_id>"
}
}
}Delete a detached volume and its data
DELETE/v1/hives/projects/{project_id}/volumes/{volume_id}
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
volume_idpath · string (uuid)requiredVolume owned by this project
Responses
- 200Actual persisted volume result
Response fields
successtruerequiredidstring (uuid)requiredmessagestringrequiredmax length 256
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes/$VOLUME_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_delete_volume', {
project_id: '<project_id>',
volume_id: '<volume_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_delete_volume",
"arguments": {
"project_id": "<project_id>",
"volume_id": "<volume_id>"
}
}
}Attach or reconnect the exact existing attachment
POST/v1/hives/projects/{project_id}/volumes/{volume_id}/mount
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
volume_idpath · string (uuid)requiredVolume owned by this project
Request body application/json
target_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
mount_pathstringrequiredmax length 128 · pattern ^/[A-Za-z0-9_-]+(/[A-Za-z0-9_-]+)*$
read_onlybooleanrequired
Responses
- 200Actual persisted volume result
Response fields
idstring (uuid)requiredproject_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
namestringrequiredmin length 1 · max length 64
size_gibnumberrequiredmin 0.03125 · max 1
backing_bytesintegerrequiredmin 33554432 · max 1073741824
capacity_bytesinteger | nullrequiredmin 0
used_bytesinteger | nullrequiredmin 0
used_gibnumber | nullrequiredmin 0
storage_class"local"requiredaccess_mode"read_write_once"requiredstate"creating" | "available" | "attaching" | "attached" | "detaching" | "deleting" | "failed"requiredoperation_pendingbooleanrequiredgenerationintegerrequiredmin 1
mount_pathstring | nullrequiredmax length 128
attached_tostring | nullrequiredmax length 128
read_onlyboolean | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes/$VOLUME_ID/mount" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_id": "string",
"mount_path": "string",
"read_only": true
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_mount_volume', {
project_id: '<project_id>',
volume_id: '<volume_id>',
body: {
target_id: 'string',
mount_path: 'string',
read_only: true,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_mount_volume",
"arguments": {
"project_id": "<project_id>",
"volume_id": "<volume_id>",
"body": {
"target_id": "string",
"mount_path": "string",
"read_only": true
}
}
}
}Detach a volume without a request body
POST/v1/hives/projects/{project_id}/volumes/{volume_id}/unmount
Backend enforces organization and project ownership. Mutation acknowledgements may be uncertain; read persisted state before another write. No automatic replay.
Parameters
project_idpath · stringrequiredProject owned by the verified organization
volume_idpath · string (uuid)requiredVolume owned by this project
Responses
- 200Actual persisted volume result
Response fields
idstring (uuid)requiredproject_idstringrequiredmin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
namestringrequiredmin length 1 · max length 64
size_gibnumberrequiredmin 0.03125 · max 1
backing_bytesintegerrequiredmin 33554432 · max 1073741824
capacity_bytesinteger | nullrequiredmin 0
used_bytesinteger | nullrequiredmin 0
used_gibnumber | nullrequiredmin 0
storage_class"local"requiredaccess_mode"read_write_once"requiredstate"creating" | "available" | "attaching" | "attached" | "detaching" | "deleting" | "failed"requiredoperation_pendingbooleanrequiredgenerationintegerrequiredmin 1
mount_pathstring | nullrequiredmax length 128
attached_tostring | nullrequiredmax length 128
read_onlyboolean | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 400Invalid bounded request
- 401Verified identity required
- 403Required Hives scope missing
- 404Resource not found in authenticated organization and project
- 409Persisted lifecycle conflict
- 503Storage acknowledgement unavailable; read persisted state
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/hives/projects/$PROJECT_ID/volumes/$VOLUME_ID/unmount" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_unmount_volume', {
project_id: '<project_id>',
volume_id: '<volume_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_unmount_volume",
"arguments": {
"project_id": "<project_id>",
"volume_id": "<volume_id>"
}
}
}Regions
List deployment regions available for project creation.
GET/v1/hives/regions
Authentication is required: any valid JWT or API key is accepted. We do not gate by scope because the region list is not sensitive and is needed by every authenticated console user to render the project-create flow.
Responses
- 200Deployment regions
Response fields
regionsobject[]requiredregions[].[].availablebooleanrequiredRecent worker admission capacity; the worker still admits atomically.
regions[].[].codestringrequiredregions[].[].edgeLocationsinteger (int32)requiredActual active, recently healthy workers in this deployed region. min 0
regions[].[].idstringrequiredregions[].[].locationstringrequiredregions[].[].namestringrequiredregions[].[].providerstringrequired
- 401Unauthorized — no valid JWT or API key
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/hives/regions" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('hives_list_regions'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hives_list_regions",
"arguments": {}
}
}One Superintelligence, Inc. · Built from Genesis 0.1.12 and the live gateway on 2026-10-20. Support