On this page

Documentation

Canonical Reference

Private local M1 candidate. Hosting and external acceptance remain open.

Versioned canonical source. An update timestamp is not supplied by this content registry.

PDF uses your browser’s print dialog. It is not a hosted export service.

Public API reference

Read-only canonical contract projection. Availability follows the contract status below; this page does not execute requests.

1. Description

Draft getCurrentUser

Contract status: owner-approved/runtime-not-implemented

2. Address

GET /me

Relative to your configured Control API base. No hosted endpoint is contacted by this page.

3. Request parameters

No property table is declared at this schema level.

4. Response parameters

200

Locally implemented safe current User response.

NameTypeLocationRequiredDescription
dataobjectresponseRequired#/components/schemas/CurrentUserResource

Required is relative to this object when it is present.

response.data

Required is relative to this object when it is present.

NameTypeLocationRequiredDescription
idstringresponseRequiredNo additional description in the canonical contract.
statusstringresponseRequiredNo additional description in the canonical contract.
display_namestringresponseRequiredNo additional description in the canonical contract.
created_atstringresponseRequiredNo additional description in the canonical contract.
membershipsarray<object>responseRequiredNo additional description in the canonical contract.
memberships_truncatedbooleanresponseRequiredNo additional description in the canonical contract.
projectsarray<object>responseRequiredNo additional description in the canonical contract.
projects_truncatedbooleanresponseRequiredNo additional description in the canonical contract.
response.data.memberships[]

Required is relative to this object when it is present.

NameTypeLocationRequiredDescription
organization_idstringresponseRequiredNo additional description in the canonical contract.
user_idstringresponseRequiredNo additional description in the canonical contract.
rolestringresponseRequiredNo additional description in the canonical contract.
statusstringresponseRequiredNo additional description in the canonical contract.
created_atstringresponseRequiredNo additional description in the canonical contract.
response.data.projects[]

Required is relative to this object when it is present.

NameTypeLocationRequiredDescription
idstringresponseRequiredNo additional description in the canonical contract.
organization_idstringresponseRequiredNo additional description in the canonical contract.
namestringresponseRequiredNo additional description in the canonical contract.
statusstringresponseRequiredNo additional description in the canonical contract.
default_regionstringresponseRequiredNo additional description in the canonical contract.
created_atstringresponseRequiredNo additional description in the canonical contract.
environmentsarray<object>responseRequiredNo additional description in the canonical contract.
response.data.projects[].environments[]

Required is relative to this object when it is present.

NameTypeLocationRequiredDescription
idstringresponseRequiredNo additional description in the canonical contract.
kindstringresponseRequiredNo additional description in the canonical contract.
statusstringresponseRequiredNo additional description in the canonical contract.
enabledbooleanresponseRequiredNo additional description in the canonical contract.

5. Request example

The canonical contract does not provide a request-body example. No sample credential or request body has been invented.

6. Response example

The canonical contract does not provide a response example. Use the response parameter definition above.

7. Errors

  • default: Canonical OneSay error response.

<!-- Generated from OneSay canonical specs. Source SHA-256: b4b9c06106eeaacd9b3d12592b48d82b4247853bea70c203aa8fe5e76500d37f. DO NOT EDIT. -->

Canonical Registry Catalog#

Spec digest: b4b9c06106eeaacd9b3d12592b48d82b4247853bea70c203aa8fe5e76500d37f

Capabilities#

IDStatusClients
speech.transcription.streaming.v1plannedjavascript, esp32
capability.platform.discoveryplannedjavascript, mcp

Actions#

IDStatusRiskGrantsMCP
room.createplannedR2room.createonesay.rooms.create
room.closeplannedR2room.closeonesay.rooms.close
task.cancelplannedR2task.cancelonesay.tasks.cancel
application.requirements.readplannedR1application.requirements.readonesay.application.requirements.read
application.requirements.replaceplannedR2application.manageonesay.application.requirements.replace
application.compatibility.readplannedR1application.compatibility.readonesay.application.compatibility.read
app.session.createplannedR2app.session.createonesay.app.session.create
app.session.readplannedR1app.session.readonesay.app.session.read
app.session.closeplannedR2app.session.closeonesay.app.session.close
app.session.revokeplannedR3app.session.revokeonesay.app.session.revoke
app.session.capabilities.readplannedR1app.session.capabilities.readonesay.app.session.capabilities.read
signal.openplannedR2source.use, signal.audio.publishnot-applicable
delegation.createplannedR3delegation.createnot-applicable
delegation.readplannedR1delegation.readnot-applicable
delegation.revokeplannedR3delegation.revokenot-applicable
data.sync.scope.enableplannedR3data.sync.controlnot-applicable
data.sync.scope.disableplannedR3data.sync.controlnot-applicable
rtc.connection.createplannedR2room.joinnot-applicable
rtc.connection.readplannedR1room.joinnot-applicable
rtc.connection.revokeplannedR2room.joinnot-applicable
rtc.media_key.readplannedR1room.joinnot-applicable
rtc.publication.createplannedR2room.join, source.usenot-applicable
rtc.publication.endplannedR2room.joinnot-applicable
rtc.subscription.updateplannedR2room.join, rtc.subscription.configurenot-applicable
rtc.packet.policy.updateplannedR2room.join, rtc.packet.configurenot-applicable
agent.execution.createplannedR2room.join, source.use, signal.audio.subscribe, agent.execution.createnot-applicable
agent.execution.readplannedR1agent.execution.readnot-applicable
agent.execution.stopplannedR2agent.execution.stopnot-applicable

Public API operations#

OperationMethodPathGrantsStatus
getCurrentUserGET/meauthentication policyowner-approved/runtime-not-implemented
createOrganizationPOST/organizationsauthentication policyowner-approved/runtime-not-implemented
listOrganizationsGET/organizationsorganization.readowner-approved/runtime-not-implemented
getOrganizationGET/organizations/{organization_id}organization.readowner-approved/runtime-not-implemented
updateOrganizationPATCH/organizations/{organization_id}organization.manageowner-approved/runtime-not-implemented
listOrganizationMembershipsGET/organizations/{organization_id}/membershipsorganization.readowner-approved/runtime-not-implemented
createOrganizationMembershipPOST/organizations/{organization_id}/membershipsorganization.manageowner-approved/runtime-not-implemented
createProjectPOST/projectsproject.manageowner-approved/runtime-not-implemented
listProjectsGET/projectsproject.readowner-approved/runtime-not-implemented
getProjectGET/projects/{project_id}project.readowner-approved/runtime-not-implemented
updateProjectPATCH/projects/{project_id}project.manageowner-approved/runtime-not-implemented
archiveProjectPOST/projects/{project_id}/archiveproject.manageowner-approved/runtime-not-implemented
listProjectEnvironmentsGET/projects/{project_id}/environmentsproject.readowner-approved/runtime-not-implemented
createApplicationPOST/applicationsapplication.manageowner-approved/runtime-not-implemented
listApplicationsGET/applicationsapplication.readowner-approved/runtime-not-implemented
getApplicationGET/applications/{application_id}application.readowner-approved/runtime-not-implemented
updateApplicationPATCH/applications/{application_id}application.manageowner-approved/runtime-not-implemented
revokeApplicationPOST/applications/{application_id}/revokeapplication.manageowner-approved/runtime-not-implemented
createCredentialPOST/credentialscredential.createowner-approved/runtime-not-implemented
listCredentialsGET/credentialscredential.readowner-approved/runtime-not-implemented
getCredentialGET/credentials/{credential_id}credential.readowner-approved/runtime-not-implemented
rotateCredentialPOST/credentials/{credential_id}/rotatecredential.createowner-approved/runtime-not-implemented
revokeCredentialPOST/credentials/{credential_id}/revokecredential.revokeowner-approved/runtime-not-implemented
createDevicePOST/devicesdevice.createowner-approved/runtime-not-implemented
listDevicesGET/devicesdevice.readowner-approved/runtime-not-implemented
getDeviceGET/devices/{device_id}device.readowner-approved/runtime-not-implemented
updateDevicePATCH/devices/{device_id}device.updateowner-approved/runtime-not-implemented
publishDeviceCapabilitiesPUT/devices/{device_id}/capabilitiesdevice.capabilities.publishowner-approved/runtime-not-implemented
createDeviceProvisioningSessionPOST/devices/{device_id}/provisioning-sessionsdevice.updateowner-approved/runtime-not-implemented
exchangeDeviceAccessTokenPOST/device-access-tokensauthentication policyowner-approved/runtime-not-implemented
exchangeDeviceProvisioningCodePOST/device-provisioning/exchangeauthentication policyowner-approved/runtime-not-implemented
rotateDeviceCredentialPOST/devices/{device_id}/credentials/rotatedevice.updateowner-approved/runtime-not-implemented
revokeDevicePOST/devices/{device_id}/revokedevice.revokeowner-approved/runtime-not-implemented
createSourcePOST/sourcessource.createowner-approved/runtime-not-implemented
listSourcesGET/sourcessource.readowner-approved/runtime-not-implemented
getSourceGET/sources/{source_id}source.readowner-approved/runtime-not-implemented
createContextSnapshotPOST/context-snapshotscontext_snapshot.createowner-approved/runtime-not-implemented
getContextSnapshotGET/context-snapshots/{context_snapshot_id}context_snapshot.readowner-approved/runtime-not-implemented
createRoomPOST/roomsroom.createowner-approved/runtime-not-implemented
listRoomsGET/roomsroom.readowner-approved/runtime-not-implemented
getRoomGET/rooms/{room_id}room.readowner-approved/runtime-not-implemented
closeRoomPOST/rooms/{room_id}/closeroom.closeowner-approved/runtime-not-implemented
listRoomParticipantsGET/rooms/{room_id}/participantsparticipant.readowner-approved/runtime-not-implemented
listRoomSignalsGET/rooms/{room_id}/signalsroom.readowner-approved/runtime-not-implemented
createRealtimeConnectionPOST/realtime/connectionsroom.joinowner-approved/runtime-not-implemented
resumeRealtimeConnectionPOST/realtime/connections/resumeroom.joinowner-approved/runtime-not-implemented
getRealtimeCapabilitiesGET/realtime/capabilitiescapability.readowner-approved/runtime-not-implemented
createTaskPOST/taskstask.dictation.createowner-approved/runtime-not-implemented
listTasksGET/taskstask.readowner-approved/runtime-not-implemented
getTaskGET/tasks/{task_id}task.readowner-approved/runtime-not-implemented
cancelTaskPOST/tasks/{task_id}/canceltask.cancelowner-approved/runtime-not-implemented
getUsageSummaryGET/usage/summaryusage.readowner-approved/runtime-not-implemented
listUsageEventsGET/usage/eventsusage.readowner-approved/runtime-not-implemented
listDeveloperLogsGET/logslogs.readowner-approved/runtime-not-implemented
getDeveloperLogTimelineGET/logs/{request_id}logs.readowner-approved/runtime-not-implemented
listCapabilitiesGET/capabilitiescapability.readowner-approved/runtime-not-implemented
getCapabilityGET/capabilities/{capability_id}capability.readowner-approved/runtime-not-implemented
listActionsGET/actionscapability.readowner-approved/runtime-not-implemented
getActionGET/actions/{action_id}capability.readowner-approved/runtime-not-implemented
getApplicationRequirementsGET/applications/{application_id}/requirementsapplication.requirements.readowner-approved/runtime-not-implemented
replaceApplicationRequirementsPUT/applications/{application_id}/requirementsapplication.manageowner-approved/runtime-not-implemented
evaluateApplicationCompatibilityGET/applications/{application_id}/compatibilityapplication.compatibility.readowner-approved/runtime-not-implemented
createAppSessionPOST/app-sessionsapp.session.createowner-approved/runtime-not-implemented
getAppSessionGET/app-sessions/{app_session_id}app.session.readowner-approved/runtime-not-implemented
closeAppSessionPOST/app-sessions/{app_session_id}/closeapp.session.closeowner-approved/runtime-not-implemented
revokeAppSessionPOST/app-sessions/{app_session_id}/revokeapp.session.revokeowner-approved/runtime-not-implemented
getAppSessionCapabilitiesGET/app-sessions/{app_session_id}/capabilitiesapp.session.capabilities.readowner-approved/runtime-not-implemented
createConsentRequestPOST/consent-requestsauthentication policycontract-ready/runtime-not-implemented
getConsentRequestGET/consent-requests/{consent_request_id}authentication policycontract-ready/runtime-not-implemented
decideConsentRequestPOST/consent-requests/{consent_request_id}/decisionauthentication policycontract-ready/runtime-not-implemented
createDelegationPOST/delegationsdelegation.createcontract-ready/runtime-not-implemented
listDelegationsGET/delegationsdelegation.readcontract-ready/runtime-not-implemented
getDelegationGET/delegations/{delegation_id}delegation.readcontract-ready/runtime-not-implemented
revokeDelegationPOST/delegations/{delegation_id}/revokedelegation.revokecontract-ready/runtime-not-implemented
enableDataSyncScopePOST/data-sync/scopes/enabledata.sync.controlowner-approved/runtime-not-implemented
disableDataSyncScopeRetainingDataPOST/data-sync/scopes/disable-retaindata.sync.controlowner-approved/runtime-not-implemented
readDataSyncChangesGET/data-sync/changesdata.sync.readowner-approved/runtime-not-implemented
createDataSyncSnapshotPOST/data-sync/snapshotsdata.sync.readowner-approved/runtime-not-implemented
readDataSyncSnapshotGET/data-sync/snapshots/{snapshot_id}data.sync.readowner-approved/runtime-not-implemented
completeDataSyncSnapshotPOST/data-sync/snapshots/{snapshot_id}/completedata.sync.readowner-approved/runtime-not-implemented
createRTCConnectionPOST/rtc/connectionsroom.joincontract-ready/runtime-not-implemented
getRTCConnectionGET/rtc/connections/{connection_id}room.joincontract-ready/runtime-not-implemented
revokeRTCConnectionPOST/rtc/connections/{connection_id}/revokeroom.joincontract-ready/runtime-not-implemented
getRTCMediaKeysGET/rtc/connections/{connection_id}/media-keysroom.joincontract-ready/runtime-not-implemented
createRTCPublicationPOST/rooms/{room_id}/rtc/publicationsroom.join, source.usecontract-ready/runtime-not-implemented
endRTCPublicationPOST/rooms/{room_id}/rtc/publications/{publication_id}/endroom.joincontract-ready/runtime-not-implemented
updateRTCSubscriptionsPUT/rooms/{room_id}/rtc/subscriptionsroom.join, rtc.subscription.configurecontract-ready/runtime-not-implemented
createAgentExecutionPOST/rooms/{room_id}/agent-executionsroom.join, source.use, signal.audio.subscribe, agent.execution.createcontract-ready/runtime-not-implemented
getAgentExecutionGET/rooms/{room_id}/agent-executions/{agent_execution_id}agent.execution.readcontract-ready/runtime-not-implemented
stopAgentExecutionPOST/rooms/{room_id}/agent-executions/{agent_execution_id}/stopagent.execution.stopcontract-ready/runtime-not-implemented
updateRTCPacketPolicyPUT/rooms/{room_id}/rtc/packet-policyroom.join, rtc.packet.configurecontract-ready/runtime-not-implemented

Grants#

  • organization.read
  • organization.manage
  • capability.read
  • project.read
  • project.manage
  • application.read
  • application.manage
  • credential.create
  • credential.read
  • credential.revoke
  • device.create
  • device.read
  • device.update
  • device.capabilities.publish
  • device.revoke
  • room.read
  • room.create
  • room.join
  • room.close
  • participant.read
  • source.create
  • source.read
  • source.use
  • signal.audio.publish
  • signal.audio.end
  • task.dictation.create
  • task.rtc.transcription.create
  • task.read
  • task.cancel
  • context_snapshot.create
  • context_snapshot.read
  • artifact.read
  • artifact.use
  • artifact.subscribe
  • logs.read
  • usage.read
  • delegation.create
  • delegation.read
  • delegation.revoke
  • application.requirements.read
  • application.compatibility.read
  • app.session.create
  • app.session.read
  • app.session.close
  • app.session.revoke
  • app.session.capabilities.read
  • data.sync.read
  • data.sync.write
  • data.sync.control
  • data.sync.delete
  • rtc.subscription.configure
  • rtc.packet.configure
  • rtc.packet.send
  • rtc.packet.receive
  • signal.audio.subscribe
  • agent.execution.create
  • agent.execution.read
  • agent.execution.stop
  • rtc.stream.configure
  • rtc.stream.send
  • rtc.stream.receive
  • rtc.rpc.configure
  • rtc.rpc.call
  • rtc.rpc.handle
  • signal.data.publish
  • signal.data.end
  • signal.data.subscribe

Device grant ceiling#

  • device.capabilities.publish
  • capability.read
  • room.read
  • room.join
  • participant.read
  • source.read
  • source.use
  • signal.audio.publish
  • signal.audio.end
  • task.dictation.create
  • task.read
  • task.cancel
  • context_snapshot.read
  • artifact.read
  • artifact.subscribe
  • application.requirements.read
  • application.compatibility.read
  • app.session.create
  • app.session.read
  • app.session.close
  • app.session.capabilities.read

Realtime events#

  • connection.welcome
  • connection.resumed
  • connection.resume_rejected
  • connection.closing
  • room.joined
  • room.left
  • participant.joined
  • participant.left
  • signal.opened
  • audio.ack
  • signal.ended
  • signal.failed
  • task.created
  • task.started
  • artifact.delta
  • artifact.finalized
  • task.completed
  • task.failed
  • task.cancelled
  • pong
  • error

Error codes#

  • authentication_required
  • token_invalid
  • token_expired
  • token_audience_invalid
  • credential_revoked
  • credential_expired
  • ticket_invalid
  • ticket_expired
  • ticket_consumed
  • grant_missing
  • resource_owner_mismatch
  • project_environment_mismatch
  • principal_suspended
  • device_revoked
  • resource_not_found
  • resource_state_invalid
  • room_closed
  • participant_limit_reached
  • source_not_found
  • signal_not_found
  • artifact_not_found
  • artifact_unavailable
  • task_input_invalid
  • task_profile_input_unsupported
  • task_not_found
  • idempotency_conflict
  • protocol_version_unsupported
  • message_invalid
  • message_id_conflict
  • frame_invalid
  • frame_too_large
  • audio_format_unsupported
  • sequence_gap
  • protocol_sequence_conflict
  • resume_state_expired
  • heartbeat_timeout
  • task_cancelled
  • task_timeout
  • no_speech
  • provider_unavailable
  • provider_timeout
  • provider_authentication_failed
  • provider_rate_limited
  • provider_invalid_response
  • quota_exceeded
  • rate_limited
  • budget_exceeded
  • reservation_failed
  • usage_pipeline_unavailable
  • mcp_protocol_version_unsupported
  • mcp_client_capability_missing
  • mcp_extension_required
  • mcp_tool_not_found
  • mcp_tool_not_exposed
  • mcp_tool_input_invalid
  • mcp_tool_output_invalid
  • mcp_resource_not_found
  • mcp_resource_forbidden
  • mcp_confirmation_required
  • mcp_consent_expired
  • mcp_request_state_invalid
  • mcp_operation_handle_expired
  • mcp_audio_transport_unsupported
  • oauth_resource_invalid
  • oauth_client_not_allowed
  • delegation_required
  • delegation_expired
  • delegation_revoked
  • delegation_scope_exceeded
  • consent_required
  • consent_denied
  • consent_request_mismatch
  • skill_version_incompatible
  • skill_package_revoked
  • client_buffer_overflow
  • client_audio_capture_failed
  • client_network_unavailable
  • client_no_memory
  • resource_busy
  • application_requirements_missing
  • application_incompatible
  • capability_revision_conflict
  • capability_registry_mismatch
  • capability_evidence_invalid
  • capability_authority_unavailable
  • authority_revision_exhausted
  • app_session_expired
  • app_session_revoked
  • app_session_closed

MCP tools#

  • onesay.capabilities.list — R0; grants: capability.read
  • onesay.capabilities.get — R0; grants: capability.read
  • onesay.projects.list — R1; grants: project.read
  • onesay.projects.get — R1; grants: project.read
  • onesay.applications.list — R1; grants: application.read
  • onesay.devices.list — R1; grants: device.read
  • onesay.devices.get — R1; grants: device.read
  • onesay.devices.diagnose — R1; grants: device.read, logs.read
  • onesay.rooms.create — R2; grants: room.create
  • onesay.rooms.get — R1; grants: room.read
  • onesay.rooms.close — R2; grants: room.close
  • onesay.tasks.get — R1; grants: task.read
  • onesay.tasks.cancel — R2; grants: task.cancel
  • onesay.logs.search — R1; grants: logs.read
  • onesay.logs.timeline — R1; grants: logs.read
  • onesay.usage.summary — R1; grants: usage.read
  • onesay.quickstarts.get — R0; grants: public
Source and provenance
View original Markdown
<!-- Generated from OneSay canonical specs. Source SHA-256: b4b9c06106eeaacd9b3d12592b48d82b4247853bea70c203aa8fe5e76500d37f. DO NOT EDIT. -->
# Canonical Registry Catalog

Spec digest: `b4b9c06106eeaacd9b3d12592b48d82b4247853bea70c203aa8fe5e76500d37f`

## Capabilities

| ID | Status | Clients |
|---|---|---|
| `speech.transcription.streaming.v1` | planned | javascript, esp32 |
| `capability.platform.discovery` | planned | javascript, mcp |

## Actions

| ID | Status | Risk | Grants | MCP |
|---|---|---|---|---|
| `room.create` | planned | R2 | room.create | `onesay.rooms.create` |
| `room.close` | planned | R2 | room.close | `onesay.rooms.close` |
| `task.cancel` | planned | R2 | task.cancel | `onesay.tasks.cancel` |
| `application.requirements.read` | planned | R1 | application.requirements.read | `onesay.application.requirements.read` |
| `application.requirements.replace` | planned | R2 | application.manage | `onesay.application.requirements.replace` |
| `application.compatibility.read` | planned | R1 | application.compatibility.read | `onesay.application.compatibility.read` |
| `app.session.create` | planned | R2 | app.session.create | `onesay.app.session.create` |
| `app.session.read` | planned | R1 | app.session.read | `onesay.app.session.read` |
| `app.session.close` | planned | R2 | app.session.close | `onesay.app.session.close` |
| `app.session.revoke` | planned | R3 | app.session.revoke | `onesay.app.session.revoke` |
| `app.session.capabilities.read` | planned | R1 | app.session.capabilities.read | `onesay.app.session.capabilities.read` |
| `signal.open` | planned | R2 | source.use, signal.audio.publish | `not-applicable` |
| `delegation.create` | planned | R3 | delegation.create | `not-applicable` |
| `delegation.read` | planned | R1 | delegation.read | `not-applicable` |
| `delegation.revoke` | planned | R3 | delegation.revoke | `not-applicable` |
| `data.sync.scope.enable` | planned | R3 | data.sync.control | `not-applicable` |
| `data.sync.scope.disable` | planned | R3 | data.sync.control | `not-applicable` |
| `rtc.connection.create` | planned | R2 | room.join | `not-applicable` |
| `rtc.connection.read` | planned | R1 | room.join | `not-applicable` |
| `rtc.connection.revoke` | planned | R2 | room.join | `not-applicable` |
| `rtc.media_key.read` | planned | R1 | room.join | `not-applicable` |
| `rtc.publication.create` | planned | R2 | room.join, source.use | `not-applicable` |
| `rtc.publication.end` | planned | R2 | room.join | `not-applicable` |
| `rtc.subscription.update` | planned | R2 | room.join, rtc.subscription.configure | `not-applicable` |
| `rtc.packet.policy.update` | planned | R2 | room.join, rtc.packet.configure | `not-applicable` |
| `agent.execution.create` | planned | R2 | room.join, source.use, signal.audio.subscribe, agent.execution.create | `not-applicable` |
| `agent.execution.read` | planned | R1 | agent.execution.read | `not-applicable` |
| `agent.execution.stop` | planned | R2 | agent.execution.stop | `not-applicable` |

## Public API operations

| Operation | Method | Path | Grants | Status |
|---|---|---|---|---|
| `getCurrentUser` | GET | `/me` | authentication policy | owner-approved/runtime-not-implemented |
| `createOrganization` | POST | `/organizations` | authentication policy | owner-approved/runtime-not-implemented |
| `listOrganizations` | GET | `/organizations` | organization.read | owner-approved/runtime-not-implemented |
| `getOrganization` | GET | `/organizations/{organization_id}` | organization.read | owner-approved/runtime-not-implemented |
| `updateOrganization` | PATCH | `/organizations/{organization_id}` | organization.manage | owner-approved/runtime-not-implemented |
| `listOrganizationMemberships` | GET | `/organizations/{organization_id}/memberships` | organization.read | owner-approved/runtime-not-implemented |
| `createOrganizationMembership` | POST | `/organizations/{organization_id}/memberships` | organization.manage | owner-approved/runtime-not-implemented |
| `createProject` | POST | `/projects` | project.manage | owner-approved/runtime-not-implemented |
| `listProjects` | GET | `/projects` | project.read | owner-approved/runtime-not-implemented |
| `getProject` | GET | `/projects/{project_id}` | project.read | owner-approved/runtime-not-implemented |
| `updateProject` | PATCH | `/projects/{project_id}` | project.manage | owner-approved/runtime-not-implemented |
| `archiveProject` | POST | `/projects/{project_id}/archive` | project.manage | owner-approved/runtime-not-implemented |
| `listProjectEnvironments` | GET | `/projects/{project_id}/environments` | project.read | owner-approved/runtime-not-implemented |
| `createApplication` | POST | `/applications` | application.manage | owner-approved/runtime-not-implemented |
| `listApplications` | GET | `/applications` | application.read | owner-approved/runtime-not-implemented |
| `getApplication` | GET | `/applications/{application_id}` | application.read | owner-approved/runtime-not-implemented |
| `updateApplication` | PATCH | `/applications/{application_id}` | application.manage | owner-approved/runtime-not-implemented |
| `revokeApplication` | POST | `/applications/{application_id}/revoke` | application.manage | owner-approved/runtime-not-implemented |
| `createCredential` | POST | `/credentials` | credential.create | owner-approved/runtime-not-implemented |
| `listCredentials` | GET | `/credentials` | credential.read | owner-approved/runtime-not-implemented |
| `getCredential` | GET | `/credentials/{credential_id}` | credential.read | owner-approved/runtime-not-implemented |
| `rotateCredential` | POST | `/credentials/{credential_id}/rotate` | credential.create | owner-approved/runtime-not-implemented |
| `revokeCredential` | POST | `/credentials/{credential_id}/revoke` | credential.revoke | owner-approved/runtime-not-implemented |
| `createDevice` | POST | `/devices` | device.create | owner-approved/runtime-not-implemented |
| `listDevices` | GET | `/devices` | device.read | owner-approved/runtime-not-implemented |
| `getDevice` | GET | `/devices/{device_id}` | device.read | owner-approved/runtime-not-implemented |
| `updateDevice` | PATCH | `/devices/{device_id}` | device.update | owner-approved/runtime-not-implemented |
| `publishDeviceCapabilities` | PUT | `/devices/{device_id}/capabilities` | device.capabilities.publish | owner-approved/runtime-not-implemented |
| `createDeviceProvisioningSession` | POST | `/devices/{device_id}/provisioning-sessions` | device.update | owner-approved/runtime-not-implemented |
| `exchangeDeviceAccessToken` | POST | `/device-access-tokens` | authentication policy | owner-approved/runtime-not-implemented |
| `exchangeDeviceProvisioningCode` | POST | `/device-provisioning/exchange` | authentication policy | owner-approved/runtime-not-implemented |
| `rotateDeviceCredential` | POST | `/devices/{device_id}/credentials/rotate` | device.update | owner-approved/runtime-not-implemented |
| `revokeDevice` | POST | `/devices/{device_id}/revoke` | device.revoke | owner-approved/runtime-not-implemented |
| `createSource` | POST | `/sources` | source.create | owner-approved/runtime-not-implemented |
| `listSources` | GET | `/sources` | source.read | owner-approved/runtime-not-implemented |
| `getSource` | GET | `/sources/{source_id}` | source.read | owner-approved/runtime-not-implemented |
| `createContextSnapshot` | POST | `/context-snapshots` | context_snapshot.create | owner-approved/runtime-not-implemented |
| `getContextSnapshot` | GET | `/context-snapshots/{context_snapshot_id}` | context_snapshot.read | owner-approved/runtime-not-implemented |
| `createRoom` | POST | `/rooms` | room.create | owner-approved/runtime-not-implemented |
| `listRooms` | GET | `/rooms` | room.read | owner-approved/runtime-not-implemented |
| `getRoom` | GET | `/rooms/{room_id}` | room.read | owner-approved/runtime-not-implemented |
| `closeRoom` | POST | `/rooms/{room_id}/close` | room.close | owner-approved/runtime-not-implemented |
| `listRoomParticipants` | GET | `/rooms/{room_id}/participants` | participant.read | owner-approved/runtime-not-implemented |
| `listRoomSignals` | GET | `/rooms/{room_id}/signals` | room.read | owner-approved/runtime-not-implemented |
| `createRealtimeConnection` | POST | `/realtime/connections` | room.join | owner-approved/runtime-not-implemented |
| `resumeRealtimeConnection` | POST | `/realtime/connections/resume` | room.join | owner-approved/runtime-not-implemented |
| `getRealtimeCapabilities` | GET | `/realtime/capabilities` | capability.read | owner-approved/runtime-not-implemented |
| `createTask` | POST | `/tasks` | task.dictation.create | owner-approved/runtime-not-implemented |
| `listTasks` | GET | `/tasks` | task.read | owner-approved/runtime-not-implemented |
| `getTask` | GET | `/tasks/{task_id}` | task.read | owner-approved/runtime-not-implemented |
| `cancelTask` | POST | `/tasks/{task_id}/cancel` | task.cancel | owner-approved/runtime-not-implemented |
| `getUsageSummary` | GET | `/usage/summary` | usage.read | owner-approved/runtime-not-implemented |
| `listUsageEvents` | GET | `/usage/events` | usage.read | owner-approved/runtime-not-implemented |
| `listDeveloperLogs` | GET | `/logs` | logs.read | owner-approved/runtime-not-implemented |
| `getDeveloperLogTimeline` | GET | `/logs/{request_id}` | logs.read | owner-approved/runtime-not-implemented |
| `listCapabilities` | GET | `/capabilities` | capability.read | owner-approved/runtime-not-implemented |
| `getCapability` | GET | `/capabilities/{capability_id}` | capability.read | owner-approved/runtime-not-implemented |
| `listActions` | GET | `/actions` | capability.read | owner-approved/runtime-not-implemented |
| `getAction` | GET | `/actions/{action_id}` | capability.read | owner-approved/runtime-not-implemented |
| `getApplicationRequirements` | GET | `/applications/{application_id}/requirements` | application.requirements.read | owner-approved/runtime-not-implemented |
| `replaceApplicationRequirements` | PUT | `/applications/{application_id}/requirements` | application.manage | owner-approved/runtime-not-implemented |
| `evaluateApplicationCompatibility` | GET | `/applications/{application_id}/compatibility` | application.compatibility.read | owner-approved/runtime-not-implemented |
| `createAppSession` | POST | `/app-sessions` | app.session.create | owner-approved/runtime-not-implemented |
| `getAppSession` | GET | `/app-sessions/{app_session_id}` | app.session.read | owner-approved/runtime-not-implemented |
| `closeAppSession` | POST | `/app-sessions/{app_session_id}/close` | app.session.close | owner-approved/runtime-not-implemented |
| `revokeAppSession` | POST | `/app-sessions/{app_session_id}/revoke` | app.session.revoke | owner-approved/runtime-not-implemented |
| `getAppSessionCapabilities` | GET | `/app-sessions/{app_session_id}/capabilities` | app.session.capabilities.read | owner-approved/runtime-not-implemented |
| `createConsentRequest` | POST | `/consent-requests` | authentication policy | contract-ready/runtime-not-implemented |
| `getConsentRequest` | GET | `/consent-requests/{consent_request_id}` | authentication policy | contract-ready/runtime-not-implemented |
| `decideConsentRequest` | POST | `/consent-requests/{consent_request_id}/decision` | authentication policy | contract-ready/runtime-not-implemented |
| `createDelegation` | POST | `/delegations` | delegation.create | contract-ready/runtime-not-implemented |
| `listDelegations` | GET | `/delegations` | delegation.read | contract-ready/runtime-not-implemented |
| `getDelegation` | GET | `/delegations/{delegation_id}` | delegation.read | contract-ready/runtime-not-implemented |
| `revokeDelegation` | POST | `/delegations/{delegation_id}/revoke` | delegation.revoke | contract-ready/runtime-not-implemented |
| `enableDataSyncScope` | POST | `/data-sync/scopes/enable` | data.sync.control | owner-approved/runtime-not-implemented |
| `disableDataSyncScopeRetainingData` | POST | `/data-sync/scopes/disable-retain` | data.sync.control | owner-approved/runtime-not-implemented |
| `readDataSyncChanges` | GET | `/data-sync/changes` | data.sync.read | owner-approved/runtime-not-implemented |
| `createDataSyncSnapshot` | POST | `/data-sync/snapshots` | data.sync.read | owner-approved/runtime-not-implemented |
| `readDataSyncSnapshot` | GET | `/data-sync/snapshots/{snapshot_id}` | data.sync.read | owner-approved/runtime-not-implemented |
| `completeDataSyncSnapshot` | POST | `/data-sync/snapshots/{snapshot_id}/complete` | data.sync.read | owner-approved/runtime-not-implemented |
| `createRTCConnection` | POST | `/rtc/connections` | room.join | contract-ready/runtime-not-implemented |
| `getRTCConnection` | GET | `/rtc/connections/{connection_id}` | room.join | contract-ready/runtime-not-implemented |
| `revokeRTCConnection` | POST | `/rtc/connections/{connection_id}/revoke` | room.join | contract-ready/runtime-not-implemented |
| `getRTCMediaKeys` | GET | `/rtc/connections/{connection_id}/media-keys` | room.join | contract-ready/runtime-not-implemented |
| `createRTCPublication` | POST | `/rooms/{room_id}/rtc/publications` | room.join, source.use | contract-ready/runtime-not-implemented |
| `endRTCPublication` | POST | `/rooms/{room_id}/rtc/publications/{publication_id}/end` | room.join | contract-ready/runtime-not-implemented |
| `updateRTCSubscriptions` | PUT | `/rooms/{room_id}/rtc/subscriptions` | room.join, rtc.subscription.configure | contract-ready/runtime-not-implemented |
| `createAgentExecution` | POST | `/rooms/{room_id}/agent-executions` | room.join, source.use, signal.audio.subscribe, agent.execution.create | contract-ready/runtime-not-implemented |
| `getAgentExecution` | GET | `/rooms/{room_id}/agent-executions/{agent_execution_id}` | agent.execution.read | contract-ready/runtime-not-implemented |
| `stopAgentExecution` | POST | `/rooms/{room_id}/agent-executions/{agent_execution_id}/stop` | agent.execution.stop | contract-ready/runtime-not-implemented |
| `updateRTCPacketPolicy` | PUT | `/rooms/{room_id}/rtc/packet-policy` | room.join, rtc.packet.configure | contract-ready/runtime-not-implemented |

## Grants

- `organization.read`
- `organization.manage`
- `capability.read`
- `project.read`
- `project.manage`
- `application.read`
- `application.manage`
- `credential.create`
- `credential.read`
- `credential.revoke`
- `device.create`
- `device.read`
- `device.update`
- `device.capabilities.publish`
- `device.revoke`
- `room.read`
- `room.create`
- `room.join`
- `room.close`
- `participant.read`
- `source.create`
- `source.read`
- `source.use`
- `signal.audio.publish`
- `signal.audio.end`
- `task.dictation.create`
- `task.rtc.transcription.create`
- `task.read`
- `task.cancel`
- `context_snapshot.create`
- `context_snapshot.read`
- `artifact.read`
- `artifact.use`
- `artifact.subscribe`
- `logs.read`
- `usage.read`
- `delegation.create`
- `delegation.read`
- `delegation.revoke`
- `application.requirements.read`
- `application.compatibility.read`
- `app.session.create`
- `app.session.read`
- `app.session.close`
- `app.session.revoke`
- `app.session.capabilities.read`
- `data.sync.read`
- `data.sync.write`
- `data.sync.control`
- `data.sync.delete`
- `rtc.subscription.configure`
- `rtc.packet.configure`
- `rtc.packet.send`
- `rtc.packet.receive`
- `signal.audio.subscribe`
- `agent.execution.create`
- `agent.execution.read`
- `agent.execution.stop`
- `rtc.stream.configure`
- `rtc.stream.send`
- `rtc.stream.receive`
- `rtc.rpc.configure`
- `rtc.rpc.call`
- `rtc.rpc.handle`
- `signal.data.publish`
- `signal.data.end`
- `signal.data.subscribe`

## Device grant ceiling

- `device.capabilities.publish`
- `capability.read`
- `room.read`
- `room.join`
- `participant.read`
- `source.read`
- `source.use`
- `signal.audio.publish`
- `signal.audio.end`
- `task.dictation.create`
- `task.read`
- `task.cancel`
- `context_snapshot.read`
- `artifact.read`
- `artifact.subscribe`
- `application.requirements.read`
- `application.compatibility.read`
- `app.session.create`
- `app.session.read`
- `app.session.close`
- `app.session.capabilities.read`

## Realtime events

- `connection.welcome`
- `connection.resumed`
- `connection.resume_rejected`
- `connection.closing`
- `room.joined`
- `room.left`
- `participant.joined`
- `participant.left`
- `signal.opened`
- `audio.ack`
- `signal.ended`
- `signal.failed`
- `task.created`
- `task.started`
- `artifact.delta`
- `artifact.finalized`
- `task.completed`
- `task.failed`
- `task.cancelled`
- `pong`
- `error`

## Error codes

- `authentication_required`
- `token_invalid`
- `token_expired`
- `token_audience_invalid`
- `credential_revoked`
- `credential_expired`
- `ticket_invalid`
- `ticket_expired`
- `ticket_consumed`
- `grant_missing`
- `resource_owner_mismatch`
- `project_environment_mismatch`
- `principal_suspended`
- `device_revoked`
- `resource_not_found`
- `resource_state_invalid`
- `room_closed`
- `participant_limit_reached`
- `source_not_found`
- `signal_not_found`
- `artifact_not_found`
- `artifact_unavailable`
- `task_input_invalid`
- `task_profile_input_unsupported`
- `task_not_found`
- `idempotency_conflict`
- `protocol_version_unsupported`
- `message_invalid`
- `message_id_conflict`
- `frame_invalid`
- `frame_too_large`
- `audio_format_unsupported`
- `sequence_gap`
- `protocol_sequence_conflict`
- `resume_state_expired`
- `heartbeat_timeout`
- `task_cancelled`
- `task_timeout`
- `no_speech`
- `provider_unavailable`
- `provider_timeout`
- `provider_authentication_failed`
- `provider_rate_limited`
- `provider_invalid_response`
- `quota_exceeded`
- `rate_limited`
- `budget_exceeded`
- `reservation_failed`
- `usage_pipeline_unavailable`
- `mcp_protocol_version_unsupported`
- `mcp_client_capability_missing`
- `mcp_extension_required`
- `mcp_tool_not_found`
- `mcp_tool_not_exposed`
- `mcp_tool_input_invalid`
- `mcp_tool_output_invalid`
- `mcp_resource_not_found`
- `mcp_resource_forbidden`
- `mcp_confirmation_required`
- `mcp_consent_expired`
- `mcp_request_state_invalid`
- `mcp_operation_handle_expired`
- `mcp_audio_transport_unsupported`
- `oauth_resource_invalid`
- `oauth_client_not_allowed`
- `delegation_required`
- `delegation_expired`
- `delegation_revoked`
- `delegation_scope_exceeded`
- `consent_required`
- `consent_denied`
- `consent_request_mismatch`
- `skill_version_incompatible`
- `skill_package_revoked`
- `client_buffer_overflow`
- `client_audio_capture_failed`
- `client_network_unavailable`
- `client_no_memory`
- `resource_busy`
- `application_requirements_missing`
- `application_incompatible`
- `capability_revision_conflict`
- `capability_registry_mismatch`
- `capability_evidence_invalid`
- `capability_authority_unavailable`
- `authority_revision_exhausted`
- `app_session_expired`
- `app_session_revoked`
- `app_session_closed`

## MCP tools

- `onesay.capabilities.list` — R0; grants: capability.read
- `onesay.capabilities.get` — R0; grants: capability.read
- `onesay.projects.list` — R1; grants: project.read
- `onesay.projects.get` — R1; grants: project.read
- `onesay.applications.list` — R1; grants: application.read
- `onesay.devices.list` — R1; grants: device.read
- `onesay.devices.get` — R1; grants: device.read
- `onesay.devices.diagnose` — R1; grants: device.read, logs.read
- `onesay.rooms.create` — R2; grants: room.create
- `onesay.rooms.get` — R1; grants: room.read
- `onesay.rooms.close` — R2; grants: room.close
- `onesay.tasks.get` — R1; grants: task.read
- `onesay.tasks.cancel` — R2; grants: task.cancel
- `onesay.logs.search` — R1; grants: logs.read
- `onesay.logs.timeline` — R1; grants: logs.read
- `onesay.usage.summary` — R1; grants: usage.read
- `onesay.quickstarts.get` — R0; grants: public