Skip to main content

Bossanova Orchestrator API (2026-09-24)

Download OpenAPI specification:Download

License: Proprietary

OpenAPI reference for the bossanova.v1 OrchestratorService, the Connect API served by bosso. Callers select a date-based API version with the Bossanova-Version request header; see the API changelog for version history.

bossanova.v1.OrchestratorService

OrchestratorService is the cloud-hosted service that coordinates multiple daemons, provides remote CLI access, and handles webhook routing.

ClearRepoOrganization

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoOriginUrl
string (repo_origin_url)
organizationId
string (organization_id)

Deletes are scoped by organization as an authorization backstop, so the wire carries the organization alongside the key.

Responses

Request samples

Content type
application/json
{
  • "repoOriginUrl": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{ }

CompleteGitHubAppSetup

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
installationId
integer or string <int64> (installation_id)
state
string (state)

Server-issued setup state returned by GetGitHubAppInstallURL.

githubCode
string (github_code)

GitHub OAuth code returned by the GitHub App setup callback. Exchanged once for a user access token to verify the caller can access installation_id.

Responses

Request samples

Content type
application/json
{
  • "installationId": 0,
  • "state": "string",
  • "githubCode": "string"
}

Response samples

Content type
application/json
{
  • "repos": [
    ]
}

CreateBillingPortalSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
returnUrl
string (return_url)
organizationId
string or null (organization_id)

Organization whose billing portal to open, as the internal organization id (the same flavour ListOrganizationMembers and InviteOrganizationMember take), NOT the WorkOS organization id.

Absent or empty keeps the pre-existing behaviour exactly: the portal is minted for the cloud account the caller's own claim resolves to. Set, it targets the named organization instead, which bosso authorizes with a per-organization owner check — so a user who cannot re-scope their session to an organization can still cancel its subscription.

Responses

Request samples

Content type
application/json
{
  • "returnUrl": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "url": "string"
}

CreateCheckoutSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
returnUrl
string (return_url)
cancelUrl
string (cancel_url)

Responses

Request samples

Content type
application/json
{
  • "returnUrl": "string",
  • "cancelUrl": "string"
}

Response samples

Content type
application/json
{
  • "url": "string",
  • "status": {
    }
}

CreateOrganization

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
name
string (name)

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    },
  • "reauthorizeUrl": "string"
}

Organization notes (BOS-1349). Unlike the Proxy*Note RPCs above, which remain the unchanged daemon-local relay, these read and write a note store that bosso itself owns, scoped to one organization, so an organization can see the notes all of its members' daemons recorded. See OrganizationNote.

The six user RPCs authenticate a user. Every call requires membership of the request's organization_id (PermissionDenied otherwise) and the paid-plan entitlement for THAT organization, judged alone: paying through one organization grants nothing in another. An unentitled organization answers the same access-denied error other cloud features return. Any member reads every note in the organization; Update and Delete are allowed for the note's author or an organization owner, and PermissionDenied for anyone else. A note id from another organization, or an expired note, is NotFound.

Writes are bounded by a per-organization hourly quota counted over a fixed UTC clock hour (see OrganizationNoteQuota). One accepted create, or one update that changes the body or tags, consumes one unit; deletes, reads and idempotent replays consume none. An exhausted quota is ResourceExhausted with an OrganizationNoteQuotaExceeded error detail.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Target organization. Required; the caller must be a member.

body
string (body)

Must be non-empty after trimming and within the same 64 KiB cap as the daemon Note, else InvalidArgument. Stored verbatim.

tags
Array of strings (tags)

Normalised like the daemon Note. At most 32 tags of at most 64 bytes each (measured after trimming), else InvalidArgument.

repoOriginUrl
string or null (repo_origin_url)

Optional repository the note is about. Canonicalised the same way as a repository-organization mapping; a malformed URL is InvalidArgument.

sessionId
string or null (session_id)

Optional provenance.

chatId
string or null (chat_id)
idempotencyKey
string or null (idempotency_key)

Optional key for an idempotent create, scoped to (organization_id, caller). A retry with the same key returns the original note unchanged and consumes no quota. The key is remembered for as long as that note exists (until it is deleted or expires). Reusing a key with a different body or tags is AlreadyExists.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "body": "string",
  • "tags": [
    ],
  • "repoOriginUrl": "string",
  • "sessionId": "string",
  • "chatId": "string",
  • "idempotencyKey": "string"
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

CreateSessionWebhook

CreateSessionWebhook registers an endpoint. INVALID_ARGUMENT for a URL the endpoint policy rejects (not https, credentials in the URL, a fragment, or a host that is or resolves to a private, loopback, link-local or metadata address), an empty or unknown event type set, an unknown format, a description over 200 characters, or a caller-supplied secret that is not 16-256 visible ASCII characters. FAILED_PRECONDITION once the organization has 20 endpoints, counting other owners' endpoints the caller cannot see.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
url
string (url)
description
string (description)
eventTypes
Array of strings (event_types)

Required, non-empty; each must be a catalog type. Duplicates collapse.

secret
string or null (secret)

Signing secret to use. Absent generates a random one.

isEnabled
boolean (is_enabled)

False creates the endpoint disabled.

format
string (format)

Payload format (SessionWebhookFormat.id). Empty means "raw"; an unknown format is INVALID_ARGUMENT.

managedBy
string (managed_by)

Config-ownership marker: empty (unmarked) or "boss-project:", where slug matches ^[a-z0-9][a-z0-9-]{0,62}$; anything else is INVALID_ARGUMENT. A second endpoint with the same marker and URL in the organization is ALREADY_EXISTS.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "url": "string",
  • "description": "string",
  • "eventTypes": [
    ],
  • "secret": "string",
  • "isEnabled": true,
  • "format": "string",
  • "managedBy": "string"
}

Response samples

Content type
application/json
{
  • "webhook": {
    },
  • "secret": "string"
}

CreateTrigger

CreateTrigger creates a trigger owned by the caller in organization_id, which the caller must be a member of. For an HTTP trigger the response carries the signing secret; it is returned ONLY in this response and can never be read back, only replaced with RotateTriggerSecret.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
One of
organizationId
string (organization_id)

Required. The caller must be a member.

name
string (name)
isEnabled
boolean (is_enabled)
triggerType
string (trigger_type)

Required authoritative type name and catalog key, e.g. "http" or "github". A string lets older clients show a new type even without recognizing its arm.

repoOriginUrl
string (repo_origin_url)
object (bossanova.v1.TriggerLaunchSettings)

TriggerLaunchSettings is what a trigger launches.

object (bossanova.v1.TriggerPlacement)

TriggerPlacement is where a trigger launches its session.

concurrencyPolicy
string (bossanova.v1.TriggerConcurrencyPolicy)
Enum: "TRIGGER_CONCURRENCY_POLICY_UNSPECIFIED" "TRIGGER_CONCURRENCY_POLICY_SKIP_IF_RUNNING" "TRIGGER_CONCURRENCY_POLICY_ALLOW_PARALLEL" "TRIGGER_CONCURRENCY_POLICY_QUEUE_LATEST" "TRIGGER_CONCURRENCY_POLICY_CANCEL_IN_PROGRESS"

TriggerConcurrencyPolicy decides what happens when an invocation arrives while the trigger's previous launch is still running.

cooldownSeconds
integer <int32> (cooldown_seconds)
Array of objects (filters)
payloadFields
Array of strings (payload_fields)
object (bossanova.v1.TriggerGate)

Optional gate; absent or an empty script_path creates the trigger without one.

managedBy
string (managed_by)

Config-ownership marker: empty (unmarked) or "boss-project:", where slug matches ^[a-z0-9][a-z0-9-]{0,62}$; anything else is INVALID_ARGUMENT. A second managed trigger with the same marker and name in the organization is ALREADY_EXISTS, whoever created the first.

required
object (bossanova.v1.GithubTriggerConfig)

GithubTriggerConfig is config version 1 for trigger_type "github". Events arrive through the Bossanova GitHub App installation on repo_origin_url.

Responses

Request samples

Content type
application/json
Example
{
  • "organizationId": "string",
  • "name": "string",
  • "isEnabled": true,
  • "triggerType": "string",
  • "repoOriginUrl": "string",
  • "launch": {
    },
  • "placement": {
    },
  • "concurrencyPolicy": "TRIGGER_CONCURRENCY_POLICY_UNSPECIFIED",
  • "cooldownSeconds": 0,
  • "filters": [
    ],
  • "payloadFields": [
    ],
  • "gate": {
    },
  • "managedBy": "string",
  • "github": {
    }
}

Response samples

Content type
application/json
{
  • "trigger": {
    },
  • "secret": "string"
}

CreateWebhookConfig

Webhook configuration management

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoOriginUrl
string (repo_origin_url)
provider
string (provider)
secret
string (secret)

Ignored: the server always generates the secret and returns it once, in CreateWebhookConfigResponse.

Responses

Request samples

Content type
application/json
{
  • "repoOriginUrl": "string",
  • "provider": "string",
  • "secret": "string"
}

Response samples

Content type
application/json
{
  • "config": {
    }
}

DeleteOrganization

DeleteOrganization removes an organization the caller owns. Refused unless the organization is empty: no sessions, no entitled cloud account, no other members. The personal organization can never be deleted.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{ }

DeleteOrganizationNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{ }

DeleteSessionWebhook

DeleteSessionWebhook permanently deletes an endpoint with its delivery history. While member session sharing is off: NOT_FOUND for another owner's endpoint; an orphaned one may be deleted.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{ }

DeleteTrigger

DeleteTrigger permanently deletes a trigger the caller created, or, for an owner of its organization, a member's trigger, together with its secret and invocation history. Its endpoint stops accepting requests immediately.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{ }

DeleteWebhookConfig

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{ }

DisconnectGitHubAppRepo

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoOriginUrl
string (repo_origin_url)

Responses

Request samples

Content type
application/json
{
  • "repoOriginUrl": "string"
}

Response samples

Content type
application/json
{ }

GetCloudAccessStatus

Cloud billing and access. User-authenticated.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (GetCloudAccessStatusRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "status": {
    }
}

GetGitHubAppInstallURL

GitHub App repository registration. User-authenticated.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
returnUrl
string (return_url)

Optional absolute URL to return to after GitHub setup. Empty uses bosso default.

Responses

Request samples

Content type
application/json
{
  • "returnUrl": "string"
}

Response samples

Content type
application/json
{
  • "installUrl": "string"
}

GetNewsletterStatus

Weekly newsletter opt-in (BOS-1318). User-authenticated. The subscription goes through the Loops form endpoint, the only path Loops gates with double opt-in; see docs/analytics/newsletter.md.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (GetNewsletterStatusRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "isAvailable": true,
  • "wordingVersion": "string",
  • "wordingText": "string",
  • "consent": {
    }
}

GetOrganization

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    }
}

GetOrganizationNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

GetOrganizationNoteQuota

GetOrganizationNoteQuota reports the organization's current quota window without consuming any of it. Same membership and entitlement rules as the other organization-note RPCs.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "quota": {
    }
}

GetRepoOrganization

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoOriginUrl
string (repo_origin_url)

Responses

Request samples

Content type
application/json
{
  • "repoOriginUrl": "string"
}

Response samples

Content type
application/json
{
  • "mapping": {
    }
}

GetSessionWebhookDelivery

GetSessionWebhookDelivery returns one delivery with its attempts in order, the request body rendered through the endpoint's current format and the request headers. Never returns a secret. While member session sharing is off: NOT_FOUND for a delivery about another member's session or on another owner's endpoint, FAILED_PRECONDITION for one on an orphaned endpoint.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
deliveryId
string (delivery_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "deliveryId": "string"
}

Response samples

Content type
application/json
{
  • "delivery": {
    },
  • "attempts": [
    ],
  • "requestBody": "string",
  • "requestHeaders": [
    ]
}

GetTrigger

GetTrigger returns one trigger the caller created, or, for an owner of its organization, a member's trigger. Never returns a secret.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "trigger": {
    }
}

Inbound triggers (BOS-1348). A trigger launches a configured Boss session when bosso receives an authenticated HTTP request or a GitHub App event. Triggers are bosso-owned, Postgres-backed state served by whichever instance receives the call, not daemon-proxied, so these carry no Proxy prefix. Every RPC below requires user authentication (daemon tokens are refused) and passes the cloud access policy for the trigger's organization (PERMISSION_DENIED when it refuses). A trigger is visible only to its creator and to the owners of its organization: any id-addressed call on a trigger by anyone else -- another member, or a caller outside the organization -- returns NOT_FOUND so the trigger's existence is not disclosed. An owner may get, disable, delete, rotate the secret of and list the invocations of a member's trigger, each recorded in the audit log; enabling, editing and testing a trigger stay with its creator, and an owner attempting them gets PERMISSION_DENIED, because a trigger launches sessions on its creator's machines.

GetTriggerCatalog returns the trigger types, event types, and filter fields bosso accepts. Needs user authentication only; it is static metadata, so no cloud access or organization is required.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (GetTriggerCatalogRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "catalog": {
    }
}

InviteOrganizationMember

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
email
string (email)
role
string (bossanova.v1.MemberRole)
Enum: "MEMBER_ROLE_UNSPECIFIED" "MEMBER_ROLE_OWNER" "MEMBER_ROLE_USER"

MemberRole is a member's role inside an organization. Owners can rename the organization and manage its members and billing; users cannot.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "email": "string",
  • "role": "MEMBER_ROLE_UNSPECIFIED"
}

Response samples

Content type
application/json
{
  • "member": {
    }
}

IssueAttachToken

IssueAttachToken returns a short-lived JWT bound to (user, session, chat, scope) that the browser uses to authenticate the /ws/attach WebSocket handshake. TTL ~5 minutes.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
chatId
string (chat_id)
scope
string (bossanova.v1.AttachScope)
Enum: "ATTACH_SCOPE_UNSPECIFIED" "ATTACH_SCOPE_EDITOR" "ATTACH_SCOPE_VIEWER"

EDITOR or VIEWER. Only EDITOR is used in v1 — VIEWER is accepted and behaves identically for now (see the plan's deferred items).

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "chatId": "string",
  • "scope": "ATTACH_SCOPE_UNSPECIFIED"
}

Response samples

Content type
application/json
{
  • "token": "string",
  • "expiresAt": "2023-01-15T01:30:15.01Z"
}

LeaveOrganization

LeaveOrganization removes the CALLER's own membership. Any member may leave; the last owner of an organization that still has members may not, and nobody may leave their personal organization.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{ }

ListDaemons

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Otherwise a user-scoped caller on V20260905 or newer receives the union across every organization they belong to. Older clients and daemon-authenticated callers retain the legacy single-organization resolution.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "daemons": [
    ],
  • "failedOrganizations": [
    ],
  • "sessionDaemons": [
    ]
}

ListGitHubAppRepos

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (ListGitHubAppReposRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "repos": [
    ]
}

ListOrganizationMembers

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "members": [
    ]
}

ListOrganizationNotes

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Target organization. Required; the caller must be a member.

authorUserId
string or null (author_user_id)
repoOriginUrl
string or null (repo_origin_url)
sessionId
string or null (session_id)
tags
Array of strings (tags)

Matches notes carrying ANY of these tags (OR), normalised like the daemon ListNotesRequest.tags filter.

search
string or null (search)

Substring match on the body. A term that is blank after trimming means no search.

pageSize
integer <int32> (page_size)

Maximum notes per page. Zero or negative means the server default (50); values above 200 are clamped to 200.

pageToken
string (page_token)

Opaque next_page_token from a previous response with the same filters. Empty asks for the first page; a malformed token is InvalidArgument.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "authorUserId": "string",
  • "repoOriginUrl": "string",
  • "sessionId": "string",
  • "tags": [
    ],
  • "search": "string",
  • "pageSize": 0,
  • "pageToken": "string"
}

Response samples

Content type
application/json
{
  • "notes": [
    ],
  • "nextPageToken": "string"
}

ListOrganizations

Organizations. User-authenticated.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (ListOrganizationsRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "organizations": [
    ]
}

ListRepoOrganizations

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "mappings": [
    ]
}

ListSessionWebhookDeliveries

ListSessionWebhookDeliveries pages an endpoint's delivery history, newest first. INVALID_ARGUMENT for a page_token that does not decode, an unknown status, or a negative page_size. While member session sharing is off it lists only test deliveries and deliveries about the caller's own sessions, and answers NOT_FOUND for another owner's endpoint and FAILED_PRECONDITION for an orphaned one.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
webhookId
string (webhook_id)
status
string or null (status)

Only deliveries in this status (see SessionWebhookDelivery.status).

eventType
string or null (event_type)

Only deliveries of this event type.

isTest
boolean or null (is_test)

Only test (true) or only live (false) deliveries.

pageSize
integer <int32> (page_size)

Default 25, at most 100; larger values are clamped and a negative value is INVALID_ARGUMENT.

pageToken
string (page_token)

Opaque next_page_token from a previous response with the same filters.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "webhookId": "string",
  • "status": "string",
  • "eventType": "string",
  • "isTest": true,
  • "pageSize": 0,
  • "pageToken": "string"
}

Response samples

Content type
application/json
{
  • "deliveries": [
    ],
  • "nextPageToken": "string"
}

Session webhooks (BOS-1347): outbound, organization-scoped HTTP callbacks fired on session state changes. Distinct from the inbound GitHub CreateWebhookConfig / ListWebhookConfigs / DeleteWebhookConfig above. Every RPC below requires user authentication, passes the cloud access policy (PERMISSION_DENIED when it refuses), and requires the OWNER role in organization_id, which must be the caller's active organization (empty means the active organization). Reads are owner-only too: endpoint URLs can reveal internal infrastructure. An id that does not belong to organization_id answers NOT_FOUND, never PERMISSION_DENIED, so a webhook's existence is not disclosed. The signing secret is returned ONLY by CreateSessionWebhook and RotateSessionWebhookSecret.

Member session sharing (BOS-1593, Organization.is_member_session_sharing_enabled, false by default) narrows this further. While it is off an endpoint delivers only its creator's sessions, so only its creator may act on it: another owner's endpoint is not listed, and every id-addressed RPC answers NOT_FOUND for it -- GetSessionWebhookDelivery too, even for a delivery about the caller's own session. The exception is an orphaned endpoint, whose creator is no longer an owner of the organization: it is listed to every owner with SessionWebhook.is_retire_only set and an empty url (the URL is often a bearer credential), and any owner may delete it or disable it with an UpdateSessionWebhook that sets nothing but is_enabled=false (whose response is marked and withholds the url the same way). Every other RPC on an orphaned endpoint answers FAILED_PRECONDITION. While sharing is on, every owner may act on every endpoint.

ListSessionWebhookEventTypes returns the event catalog an endpoint can subscribe to, in canonical order.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "eventTypes": [
    ]
}

ListSessionWebhookFormats

ListSessionWebhookFormats returns the built-in payload formats an endpoint can pick (SessionWebhook.format), in canonical order.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "formats": [
    ]
}

ListSessionWebhooks

ListSessionWebhooks returns the organization's endpoints the caller may act on, oldest first: every one while member session sharing is on, otherwise the caller's own plus any orphaned one, marked is_retire_only with its url empty. Never returns a secret.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "webhooks": [
    ]
}

ListTriggerInvocations

ListTriggerInvocations returns the invocation history of a trigger the caller created, or, for an owner of its organization, a member's trigger, newest first.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
triggerId
string (trigger_id)
limit
integer <int32> (limit)

Maximum invocations to return. 0 means 50; values above 200 are capped at 200.

google.protobuf.Timestamp (string) or before_received_at (null) (before_received_at)

Page cursor, paired with before_id: pass the received_at and id of the last invocation of the previous page. Returns only invocations that sort after that one in (received_at DESC, id DESC) order, so invocations that share a received_at are never skipped at a page boundary.

beforeId
string or null (before_id)

Tiebreak for before_received_at: the id of the last invocation of the previous page. Ignored unless before_received_at is set; when it is empty, every invocation received at exactly before_received_at is excluded.

Responses

Request samples

Content type
application/json
{
  • "triggerId": "string",
  • "limit": 0,
  • "beforeReceivedAt": "2023-01-15T01:30:15.01Z",
  • "beforeId": "string"
}

Response samples

Content type
application/json
{
  • "invocations": [
    ]
}

ListTriggers

ListTriggers returns the caller's own triggers, in organization_id when set (the caller must be a member) or across every organization the caller belongs to. With should_include_member_triggers it returns every member's triggers in that organization instead (organization_id, or the caller's active organization when absent), which needs the owner role there (PERMISSION_DENIED otherwise). Never returns a secret.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Restrict to one organization the caller belongs to. Absent lists the caller's triggers across every organization they belong to.

shouldIncludeMemberTriggers
boolean or null (should_include_member_triggers)

List every member's triggers in the organization rather than only the caller's: organization_id when set, otherwise the caller's active organization. Requires the owner role there; PERMISSION_DENIED otherwise. Absent or false lists only the caller's own triggers.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "shouldIncludeMemberTriggers": true
}

Response samples

Content type
application/json
{
  • "triggers": [
    ]
}

ListWebhookConfigs

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (ListWebhookConfigsRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "configs": [
    ]
}

ProxyAddAccount

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
provider
string (provider)

"claude" | "codex"

label
string (label)
priority
integer <int32> (priority)

sort order; lower = preferred

credential
string <byte> (credential)

inbound only; consumed into the keyring, never echoed

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "provider": "string",
  • "label": "string",
  • "priority": 0,
  • "credential": "string"
}

Response samples

Content type
application/json
{
  • "account": {
    }
}

ProxyArchiveSession

Archives a session via the owning daemon's reverse stream.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyCloseSession

Destructive-tier MCP gateway parity (BOS-404). Session-scoped destructive ops route to the owning daemon via FindSessionDaemon (NotFound for a missing/foreign session); empty_trash is daemon-wide and aggregates across the caller's Ready daemons via the shared resolver. ProxyCloseSession closes (abandons) a session, returning the updated Session.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyCreateCronJob

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)
name
string (name)
prompt
string (prompt)
schedule
string (schedule)
timezone
string (timezone)
isEnabled
boolean (is_enabled)
agentName
string (agent_name)
model
string (model)
gateCommand
string (gate_command)
shouldRunSetupCommand
boolean or null (should_run_setup_command)
isZeroOutput
boolean or null (is_zero_output)
CronJobConcurrencyPolicy (string) or concurrency_policy (null) (concurrency_policy)

What a fire does while the job's previous run is still in progress. Omitted or UNSPECIFIED = SKIP.

managedBy
string (managed_by)

Config-ownership marker: empty (unmarked) or "boss-project:" (mirrors CreateCronJobRequest.managed_by in daemon.proto).

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string",
  • "name": "string",
  • "prompt": "string",
  • "schedule": "string",
  • "timezone": "string",
  • "isEnabled": true,
  • "agentName": "string",
  • "model": "string",
  • "gateCommand": "string",
  • "shouldRunSetupCommand": true,
  • "isZeroOutput": true,
  • "concurrencyPolicy": "CRON_JOB_CONCURRENCY_POLICY_UNSPECIFIED",
  • "managedBy": "string"
}

Response samples

Content type
application/json
{
  • "job": {
    }
}

ProxyCreateGithubCallback

GitHub-callback proxies for remote-CLI callback management (BOS-469). All route to the owning daemon by target_chat_id via FindDaemonForChat, reusing the caller's own auth — a foreign chat resolves to NotFound so no cross-user registration can dispatch. Create/Delete require target_chat_id; List routes by target_chat_id when set, else aggregates across the caller's Ready daemons.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
groupId
string or null (group_id)
targetChatId
string (target_chat_id)
repoOwner
string (repo_owner)
repoName
string (repo_name)
prNumber
integer <int32> (pr_number)
trigger
string (trigger)
message
string (message)
google.protobuf.Timestamp (string) or expires_at (null) (expires_at)
shouldRequireTransition
boolean or null (should_require_transition)
isIndependentWatch
boolean or null (is_independent_watch)

Mirrors CreateGithubCallbackRequest.is_independent_watch.

Responses

Request samples

Content type
application/json
{
  • "groupId": "string",
  • "targetChatId": "string",
  • "repoOwner": "string",
  • "repoName": "string",
  • "prNumber": 0,
  • "trigger": "string",
  • "message": "string",
  • "expiresAt": "2023-01-15T01:30:15.01Z",
  • "shouldRequireTransition": true,
  • "isIndependentWatch": true
}

Response samples

Content type
application/json
{
  • "githubCallback": {
    },
  • "noticeText": "string"
}

ProxyCreateNote

Notes proxies for remote-CLI and hosted-gateway note management (BOS-552). A note is repo-scoped, so all five route to the owning daemon by repo_id, reusing the caller's own auth — a foreign repo resolves to NotFound so no cross-user note access can dispatch. Create/Get/Update/Delete require repo_id; List routes by repo_id when set, else aggregates across the caller's Ready daemons.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string (repo_id)

Owning repository (daemon-local repos.id). Required — also the routing key.

sessionId
string or null (session_id)

Optional provenance: which run recorded this note.

chatId
string or null (chat_id)
body
string (body)

Stored verbatim. Must be non-empty after trimming and within the 64 KiB cap, else InvalidArgument.

tags
Array of strings (tags)

Trimmed, lowercased and de-duplicated before storage. At most 32 tags of at most 64 bytes each (measured after trimming), else InvalidArgument.

idempotencyKey
string or null (idempotency_key)

Optional repo-scoped key for an atomic idempotent create. A retry with the same key returns the original note without changing it.

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "sessionId": "string",
  • "chatId": "string",
  • "body": "string",
  • "tags": [
    ],
  • "idempotencyKey": "string"
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

ProxyDeleteChat

Deletes a chat via the owning daemon's reverse stream.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)

for authz scoping (mirror ProxyWakeChat)

agentSessionId
string (agent_session_id)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "agentSessionId": "string"
}

Response samples

Content type
application/json
{ }

ProxyDeleteCronJob

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{ }

ProxyDeleteGithubCallback

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
targetChatId
string (target_chat_id)

routing key (FindDaemonForChat)

id
string (id)
expectTargetChatId
string or null (expect_target_chat_id)

Responses

Request samples

Content type
application/json
{
  • "targetChatId": "string",
  • "id": "string",
  • "expectTargetChatId": "string"
}

Response samples

Content type
application/json
{
  • "outcome": "string"
}

ProxyDeleteNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string (repo_id)

routing key only; the daemon resolves by id alone

id
string (id)

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{ }

ProxyDismissSessionAlert

ProxyDismissSessionAlert forwards DaemonService.DismissSessionAlert to the owning daemon.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)
alertKey
string (alert_key)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "alertKey": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyEmptyTrash

ProxyEmptyTrash permanently deletes archived sessions across the caller's Ready daemons, summing each daemon's deleted_count.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
google.protobuf.Timestamp (string) or older_than (null) (older_than)
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "olderThan": "2023-01-15T01:30:15.01Z",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "deletedCount": 0,
  • "failedOrganizations": [
    ],
  • "deletions": [
    ]
}

ProxyGetChatStatuses

ProxyGetChatStatuses reads one session's per-chat statuses (routes by session_id, exactly as ProxyListChats does). Not interchangeable with ProxyGetSessionStatuses: that aggregates across a session's chats, so it cannot say whether one specific chat has settled.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string"
}

Response samples

Content type
application/json
{
  • "statuses": [
    ]
}

ProxyGetChatTranscript

Reads a chat's transcript via the owning daemon's reverse stream. Routes by session_id (FindSessionDaemon) with a GetChat authz check, like ProxyWakeChat.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)

for authz scoping (mirror ProxyWakeChat)

agentSessionId
string (agent_session_id)
maxMessages
integer <int32> (max_messages)

0 = all; otherwise the most recent N

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "agentSessionId": "string",
  • "maxMessages": 0
}

Response samples

Content type
application/json
{
  • "messages": [
    ],
  • "finalAssistantText": "string",
  • "exists": true,
  • "reason": "string"
}

ProxyGetCronJob

ProxyGetCronJob returns the first Ready daemon that owns the id (NotFound if none).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "cronJob": {
    },
  • "failedOrganizations": [
    ]
}

ProxyGetNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string (repo_id)

routing key only; the daemon resolves by id alone

id
string (id)

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

ProxyGetRepo

Per-repo proxies for web repo management. Route to the daemon named by daemon_id and address the repo by repo_id. Reads/updates are secret-masked (RepoSettings); writes carry tri-state SecretUpdate + expected_updated_at.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string"
}

Response samples

Content type
application/json
{
  • "settings": {
    }
}

ProxyGetSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyGetSessionStatuses

ProxyGetSessionStatuses fans out per session_id (FindSessionDaemon), skipping unknown ids, and unions the returned SessionStatusEntry values.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionIds
Array of strings (session_ids)

Responses

Request samples

Content type
application/json
{
  • "sessionIds": [
    ]
}

Response samples

Content type
application/json
{
  • "statuses": [
    ]
}

ProxyLinkSessionPR

ProxyLinkSessionPR attaches an existing PR to a session (routes by session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)
pr
string (pr)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "pr": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyListAccounts

Lists the rotation accounts on the daemon owning session_id (web account-switch picker). Routes by session_id (FindSessionDaemon) for authz scope, like ProxySwitchSessionAccount. Accounts are metadata only — never credentials. Optional provider filter ("" = all).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
provider
string (provider)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "provider": "string"
}

Response samples

Content type
application/json
{
  • "accounts": [
    ]
}

ProxyListAgents

Lists the installed agents on a single named daemon via its reverse stream.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string"
}

Response samples

Content type
application/json
{
  • "agents": [
    ]
}

ProxyListAgentsAggregated

ProxyListAgentsAggregated aggregates installed agents across the caller's Ready daemons (session-less; distinct from the daemon-scoped ProxyListAgents).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "agents": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListChats

Read-tier MCP gateway parity (BOS-401). Session-scoped reads route to the owning daemon via FindSessionDaemon; session-less reads aggregate across the caller's Ready daemons via the shared resolver. ProxyListChats reads a session's chats (routes by session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string"
}

Response samples

Content type
application/json
{
  • "chats": [
    ]
}

ProxyListCheckSnapshots

ProxyListCheckSnapshots reads a session's recent CI check snapshots (routes by session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
limit
integer <int32> (limit)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "snapshots": [
    ]
}

ProxyListCronJobs

Cron-job proxies for web cron-job management. ProxyListCronJobs aggregates across all of the caller's live daemons; the mutating proxies route to the daemon named by daemon_id and address the job by id.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Otherwise the orchestrator queries every organization the caller belongs to. Set narrows the read after a membership check; an organization outside the caller's membership is denied rather than quietly widened.

Before V20260910 the read resolved one organization from the caller's own claim. A client pinned older keeps that behavior.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "jobs": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListGithubCallbacks

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
targetChatId
string or null (target_chat_id)
repoOwner
string or null (repo_owner)
repoName
string or null (repo_name)
prNumber
integer or null <int32> (pr_number)
trigger
string or null (trigger)
state
string or null (state)
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "targetChatId": "string",
  • "repoOwner": "string",
  • "repoName": "string",
  • "prNumber": 0,
  • "trigger": "string",
  • "state": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "githubCallbacks": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListNotes

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string or null (repo_id)

Applied whenever the field is SET, including when set to the empty string: the value is trimmed and compared with =, and blank provenance is stored as NULL, so a set-but-blank filter matches NOTHING. Leave the field unset to leave that column unconstrained; there is no way to ask for "notes with no session".

sessionId
string or null (session_id)
chatId
string or null (chat_id)
tags
Array of strings (tags)

Matches notes carrying ANY of these tags (OR), not all of them. Entries are trimmed and lowercased to match the normalisation applied on write, and blank entries are dropped. A non-empty list whose entries ALL normalise away matches nothing rather than everything — the filter fails closed, so a stray empty tag can never widen the result set.

search
string or null (search)

Substring match on the body. SQL wildcards are matched literally, not as patterns. Case-insensitivity is ASCII-only. A term that is blank after trimming means NO search, unlike a blank tag entry, which matches nothing.

limit
integer <int32> (limit)

Caps the rows returned; zero or negative means unlimited. On an unfiltered fan-out it is passed through to every daemon AND re-applied to the merged list, so a caller asking for N always receives at most N — never N per daemon. Because each daemon returns its own oldest limit notes, the merged list truncated after the (created_at, id) sort is exactly the oldest limit notes ACROSS THE DAEMONS THAT ANSWERED: the fan-out is fail-soft, so a daemon that is offline or times out contributes nothing and is skipped rather than failing the call.

organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "sessionId": "string",
  • "chatId": "string",
  • "tags": [
    ],
  • "search": "string",
  • "limit": 0,
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "notes": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListPlugins

ProxyListPlugins aggregates configured plugins across the caller's Ready daemons.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "plugins": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListRepoPRs

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string"
}

Response samples

Content type
application/json
{
  • "pullRequests": [
    ]
}

ProxyListReposAggregated

Aggregates repos across the caller's live daemons, deduped by origin URL, with the serving daemon IDs unioned per repo. Spans every organization the caller belongs to unless the request narrows it to one.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Otherwise the orchestrator queries every organization the caller belongs to — the same shape as ProxyListSessionsRequest.daemon_id one axis up.

Absent is a defined answer ("all of them"), not an unresolved scope, so this read never raises the ambiguous-scope FailedPrecondition that ProxyListSessions raises. Set narrows to that organization after a membership check; an organization the caller does not belong to is denied rather than quietly widened.

Before V20260905 there was no field, and the read resolved ONE organization from the caller's own claim. A client pinned older keeps that behavior.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "repos": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListSessions

Proxied daemon RPCs (remote CLI → orchestrator → daemon)

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string or null (repo_id)
states
Array of strings (states)
Items Enum: "SESSION_STATE_UNSPECIFIED" "SESSION_STATE_CREATING_WORKTREE" "SESSION_STATE_STARTING_AGENT" "SESSION_STATE_PUSHING_BRANCH" "SESSION_STATE_OPENING_DRAFT_PR" "SESSION_STATE_IMPLEMENTING_PLAN" "SESSION_STATE_AWAITING_CHECKS" "SESSION_STATE_FIXING_CHECKS" "SESSION_STATE_GREEN_DRAFT" "SESSION_STATE_READY_FOR_REVIEW" "SESSION_STATE_BLOCKED" "SESSION_STATE_MERGED" "SESSION_STATE_CLOSED" "SESSION_STATE_FINALIZING" "SESSION_STATE_ORPHANED"
includeArchived
boolean (include_archived)
daemonId
string or null (daemon_id)

Target daemon, if known. Otherwise orchestrator queries all.

organizationId
string or null (organization_id)

Unset means every organization the caller belongs to. Set narrows to that organization after a membership check. Clients pinned below 2026-09-12 retain the former single-organization behavior when this is unset.

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "states": [
    ],
  • "includeArchived": true,
  • "daemonId": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "sessions": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListSessionsAcrossOrganizations Deprecated

Deprecated: use ProxyListSessions with organization_id unset for the union, or set organization_id to narrow the read.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string or null (repo_id)

Mirrors ProxyListSessionsRequest field-for-field; each filter is applied per organization, exactly as the single-organization read applies it. The archived flag carries the should_ prefix the bool naming rule requires; ProxyListSessionsRequest.include_archived keeps its legacy spelling because renaming a shipped field is an API-version change of its own.

states
Array of strings (states)
Items Enum: "SESSION_STATE_UNSPECIFIED" "SESSION_STATE_CREATING_WORKTREE" "SESSION_STATE_STARTING_AGENT" "SESSION_STATE_PUSHING_BRANCH" "SESSION_STATE_OPENING_DRAFT_PR" "SESSION_STATE_IMPLEMENTING_PLAN" "SESSION_STATE_AWAITING_CHECKS" "SESSION_STATE_FIXING_CHECKS" "SESSION_STATE_GREEN_DRAFT" "SESSION_STATE_READY_FOR_REVIEW" "SESSION_STATE_BLOCKED" "SESSION_STATE_MERGED" "SESSION_STATE_CLOSED" "SESSION_STATE_FINALIZING" "SESSION_STATE_ORPHANED"
shouldIncludeArchived
boolean (should_include_archived)
daemonId
string or null (daemon_id)

Target daemon, if known. Otherwise orchestrator queries all.

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "states": [
    ],
  • "shouldIncludeArchived": true,
  • "daemonId": "string"
}

Response samples

Content type
application/json
{
  • "sessions": [
    ],
  • "organizations": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyListTrackerIssues

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)
query
string (query)
source
string or null (source)

"linear" (default) | "sentry"

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string",
  • "query": "string",
  • "source": "string"
}

Response samples

Content type
application/json
{
  • "issues": [
    ]
}

ProxyManageListAccounts

Daemon-scoped account-management proxies for the web Settings > Accounts section. Unlike ProxyListAccounts (session-scoped, switch picker) these route to the daemon named by daemon_id, since a Settings-level manager is not session-scoped. Accounts stay metadata only on the wire — the add / refresh requests carry an inbound-only credential blob (consumed straight into the daemon keyring, never echoed back). Each proxy forwards 1:1 to the existing daemon account.go handler via a reverse-stream OrchestratorCommand.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
provider
string (provider)
shouldRefresh
boolean (should_refresh)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "provider": "string",
  • "shouldRefresh": true
}

Response samples

Content type
application/json
{
  • "accounts": [
    ],
  • "hasRefreshed": true
}

ProxyMergeSession

Merges a session's PR via the owning daemon's reverse stream.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyMoveSession

ProxyMoveSession moves a session up or down the rendered list (routes by session_id). It is a pure passthrough: the rank arithmetic lives in the daemon, so bosso resolves the owner, forwards the DIRECTION, and returns the daemon's answer unchanged.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

The session to move.

direction
string (bossanova.v1.MoveDirection)
Enum: "MOVE_DIRECTION_UNSPECIFIED" "MOVE_DIRECTION_UP" "MOVE_DIRECTION_DOWN"

Which way to move it. UNSPECIFIED is rejected by the daemon rather than defaulted, so a client that forgets to set it gets an error.

repoId
string or null (repo_id)

Scope the neighbour computation to one repo, exactly as ProxyListSessionsRequest.repo_id does. Absent/empty means the cross-repo list, which is what the web app renders by default.

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "direction": "MOVE_DIRECTION_UNSPECIFIED",
  • "repoId": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    },
  • "isMoved": true
}

ProxyOperatorMergeSession

ProxyOperatorMergeSession forwards DaemonService.OperatorMergeSession to the owning daemon.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)
expectedHeadSha
string (expected_head_sha)
shouldApprove
boolean (should_approve)
waives
Array of strings (waives)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "expectedHeadSha": "string",
  • "shouldApprove": true,
  • "waives": [
    ]
}

Response samples

Content type
application/json
{
  • "isMerged": true,
  • "session": {
    },
  • "mergeDetail": "string",
  • "approval": {
    },
  • "trackerWrites": "string",
  • "trackerWhy": "string",
  • "trackerTicket": "string"
}

ProxyPauseSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyRecordChat

Records or resumes a chat via the owning daemon's reverse stream.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
agentSessionId
string (agent_session_id)
title
string (title)
resume
boolean (resume)
agentName
string (agent_name)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "agentSessionId": "string",
  • "title": "string",
  • "resume": true,
  • "agentName": "string"
}

Response samples

Content type
application/json
{
  • "chat": {
    }
}

ProxyRefreshAccount

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)
credential
string <byte> (credential)

inbound only; never echoed

testAfterSave
boolean (test_after_save)

run the TestAccount validation path after saving

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string",
  • "credential": "string",
  • "testAfterSave": true
}

Response samples

Content type
application/json
{
  • "account": {
    },
  • "liveSmokeRan": true,
  • "detail": "string"
}

ProxyRemoveAccount

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{ }

ProxyRemoveRepo

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string"
}

Response samples

Content type
application/json
{ }

ProxyRemoveSession

ProxyRemoveSession permanently removes a session and its worktree (Ok-only).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{ }

ProxyRepairDoctor

ProxyRepairDoctor merges repair-doctor reports across the caller's Ready daemons.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string or null (organization_id)

Target organization, if the caller needs one. Absent queries every organization the caller belongs to. Set narrows after a membership check; a non-member organization is denied rather than quietly widened. Before V20260910 there was no field and this read resolved one organization.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "checks": [
    ],
  • "recentLogs": [
    ],
  • "failedOrganizations": [
    ]
}

ProxyReportChatStatus

ProxyReportChatStatus forwards chat status heartbeats. All reports must resolve to the caller's own chats on a single daemon.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
Array of objects (reports)
Array
agentSessionId
string (agent_session_id)

Agent session UUID

status
string (bossanova.v1.ChatStatus)
Enum: "CHAT_STATUS_UNSPECIFIED" "CHAT_STATUS_WORKING" "CHAT_STATUS_IDLE" "CHAT_STATUS_STOPPED" "CHAT_STATUS_QUESTION" "CHAT_STATUS_LIMITED" "CHAT_STATUS_WAITING"

Current process status

lastOutputAt
string <date-time> (google.protobuf.Timestamp)

Last PTY output time

Responses

Request samples

Content type
application/json
{
  • "reports": [
    ]
}

Response samples

Content type
application/json
{ }

ProxyResumeSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyResumeSessionRun

ProxyResumeSessionRun forwards DaemonService.ResumeSessionRun to the owning daemon.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyResurrectSession

ProxyResurrectSession restores an archived session, returning the updated Session.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyRetrySession

Mutating MCP gateway parity (BOS-402). Session-scoped mutations route to the owning daemon via FindSessionDaemon; chat-scoped mutations via FindDaemonForChat(agent_session_id). A foreign entity resolves to NotFound, so no cross-user mutation can dispatch. ProxyRetrySession retries a failed session (routes by session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyRunCronJobNow

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    },
  • "skippedReason": "string"
}

ProxySendChatMessage

Sends a user message into a chat via the owning daemon's reverse stream. Routes by agent_session_id (FindDaemonForChat) since the MCP send tool carries no session_id.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
agentSessionId
string (agent_session_id)
message
string (message)
wakeIfAsleep
boolean (wake_if_asleep)
submit
boolean or null (submit)

when true, submit the message (BOS-242); when false, prefill only. optional so an omitting (pre-BOS-242) client is treated as submit=true server-side, preserving the prior always-submit proxy behavior.

Responses

Request samples

Content type
application/json
{
  • "agentSessionId": "string",
  • "message": "string",
  • "wakeIfAsleep": true,
  • "submit": true
}

Response samples

Content type
application/json
{
  • "tmuxSessionName": "string",
  • "delivered": true,
  • "noticeText": "string",
  • "deliveryState": "DELIVERY_STATE_UNSPECIFIED"
}

ProxyStopSession

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxySwitchSessionAccount

Switches a session's live chat to a different account (stop+swap+resume) via the owning daemon's reverse stream. Routes by session_id (FindSessionDaemon) with an optional GetChat authz check, like ProxyWakeChat.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)

for authz scoping (mirror ProxyWakeChat)

agentSessionId
string (agent_session_id)

optional; empty => session's primary live chat

accountId
string (account_id)

"" = system default

force
boolean (force)

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "agentSessionId": "string",
  • "accountId": "string",
  • "force": true
}

Response samples

Content type
application/json
{
  • "resumed": true,
  • "targetLabel": "string",
  • "noticeText": "string"
}

ProxyTestAccount

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "account": {
    },
  • "liveSmokeRan": true,
  • "detail": "string"
}

ProxyUpdateAccount

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)
label
string or null (label)
priority
integer or null <int32> (priority)
status
string or null (status)

"active" | "disabled"

allowedModels
Array of strings (allowed_models)

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string",
  • "label": "string",
  • "priority": 0,
  • "status": "string",
  • "allowedModels": [
    ]
}

Response samples

Content type
application/json
{
  • "account": {
    }
}

ProxyUpdateChatTitle

ProxyUpdateChatTitle renames a chat (routes by agent_session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
agentSessionId
string (agent_session_id)
title
string (title)

Responses

Request samples

Content type
application/json
{
  • "agentSessionId": "string",
  • "title": "string"
}

Response samples

Content type
application/json
{ }

ProxyUpdateCronJob

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
id
string (id)
name
string or null (name)
prompt
string or null (prompt)
schedule
string or null (schedule)
timezone
string or null (timezone)
isEnabled
boolean or null (is_enabled)
agentName
string or null (agent_name)
model
string or null (model)
gateCommand
string or null (gate_command)
shouldRunSetupCommand
boolean or null (should_run_setup_command)
isZeroOutput
boolean or null (is_zero_output)
CronJobConcurrencyPolicy (string) or concurrency_policy (null) (concurrency_policy)

What a fire does while the job's previous run is still in progress. Omitted or UNSPECIFIED = leave unchanged.

managedBy
string or null (managed_by)

Config-ownership marker. Omitted = leave unchanged; "" = clear; otherwise "boss-project:" (mirrors UpdateCronJobRequest.managed_by).

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "id": "string",
  • "name": "string",
  • "prompt": "string",
  • "schedule": "string",
  • "timezone": "string",
  • "isEnabled": true,
  • "agentName": "string",
  • "model": "string",
  • "gateCommand": "string",
  • "shouldRunSetupCommand": true,
  • "isZeroOutput": true,
  • "concurrencyPolicy": "CRON_JOB_CONCURRENCY_POLICY_UNSPECIFIED",
  • "managedBy": "string"
}

Response samples

Content type
application/json
{
  • "job": {
    }
}

ProxyUpdateNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoId
string (repo_id)

routing key only; the daemon resolves by id alone

id
string (id)
body
string or null (body)

Unset = leave the body alone.

NoteTagSet (object) or tags (null) (tags)

Unset = leave the tags alone. SET = REPLACE the entire tag set with this list, including replacing it with nothing when the list is empty.

Responses

Request samples

Content type
application/json
{
  • "repoId": "string",
  • "id": "string",
  • "body": "string",
  • "tags": {
    }
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

ProxyUpdateRepo

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
repoId
string (repo_id)
displayName
string or null (display_name)
setupScript
string or null (setup_script)
MergeStrategy (string) or merge_strategy (null) (merge_strategy)
canAutoMerge
boolean or null (can_auto_merge)
canAutoMergeDependabot
boolean or null (can_auto_merge_dependabot)
canAutoRepair
boolean or null (can_auto_repair)
shouldArchiveSessionsAfterMerge
boolean or null (should_archive_sessions_after_merge)
sentryOrg
string or null (sentry_org)
object (bossanova.v1.SecretUpdate)

SecretUpdate carries a secret mutation. value is required iff action == SET and is ignored otherwise. Never populated on read/aggregate responses.

object (bossanova.v1.SecretUpdate)

SecretUpdate carries a secret mutation. value is required iff action == SET and is ignored otherwise. Never populated on read/aggregate responses.

expectedUpdatedAt
string <date-time> (google.protobuf.Timestamp)

A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.

All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.

The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.

Examples

Example 1: Compute Timestamp from POSIX time().

 Timestamp timestamp;
 timestamp.set_seconds(time(NULL));
 timestamp.set_nanos(0);

Example 2: Compute Timestamp from POSIX gettimeofday().

 struct timeval tv;
 gettimeofday(&tv, NULL);

 Timestamp timestamp;
 timestamp.set_seconds(tv.tv_sec);
 timestamp.set_nanos(tv.tv_usec * 1000);

Example 3: Compute Timestamp from Win32 GetSystemTimeAsFileTime().

 FILETIME ft;
 GetSystemTimeAsFileTime(&ft);
 UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;

 // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
 // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
 Timestamp timestamp;
 timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
 timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

Example 4: Compute Timestamp from Java System.currentTimeMillis().

 long millis = System.currentTimeMillis();

 Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
     .setNanos((int) ((millis % 1000) * 1000000)).build();

Example 5: Compute Timestamp from Java Instant.now().

 Instant now = Instant.now();

 Timestamp timestamp =
     Timestamp.newBuilder().setSeconds(now.getEpochSecond())
         .setNanos(now.getNano()).build();

Example 6: Compute Timestamp from current time in Python.

 timestamp = Timestamp()
 timestamp.GetCurrentTime()

JSON Mapping

In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).

For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.

In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard datetime.datetime object can be converted to this format using strftime with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's ISODateTimeFormat.dateTime() to obtain a formatter capable of generating timestamps in this format.

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "repoId": "string",
  • "displayName": "string",
  • "setupScript": "string",
  • "mergeStrategy": "MERGE_STRATEGY_UNSPECIFIED",
  • "canAutoMerge": true,
  • "canAutoMergeDependabot": true,
  • "canAutoRepair": true,
  • "shouldArchiveSessionsAfterMerge": true,
  • "sentryOrg": "string",
  • "linearKey": {
    },
  • "sentryKey": {
    },
  • "expectedUpdatedAt": "2023-01-15T01:30:15.01Z"
}

Response samples

Content type
application/json
{
  • "settings": {
    }
}

ProxyUpdateSession

ProxyUpdateSession updates a session's title/tracker (routes by session_id).

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)
title
string or null (title)
trackerUrl
string or null (tracker_url)
trackerId
string or null (tracker_id)

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "title": "string",
  • "trackerUrl": "string",
  • "trackerId": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    }
}

ProxyWakeChat

Wakes a stopped chat's tmux+claude. Routes to the owning daemon via the reverse stream and waits for CommandResult{WakeChatResult}.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
agentSessionId
string (agent_session_id)
forceFresh
boolean (force_fresh)

If true, the daemon will skip --resume even when a transcript exists.

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "agentSessionId": "string",
  • "forceFresh": true
}

Response samples

Content type
application/json
{
  • "outcome": "OUTCOME_UNSPECIFIED",
  • "tmuxSessionName": "string",
  • "reason": "string"
}

PublishDaemonSnapshot

PublishDaemonSnapshot is a unary fallback for networks that proxy normal HTTPS but do not support Connect bidirectional streaming end-to-end. Daemons authenticate with their RegisterDaemon session token and publish the same snapshot shape used as the first DaemonStream event.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (bossanova.v1.DaemonSnapshot)

DaemonSnapshot is the required first event on every stream connect. It carries slim metadata only (IDs, state, timestamps, preview strings) — full chat transcripts are fetched on demand via AttachSessionCommand (decision #5).

daemonId
string (daemon_id)
hostname
string (hostname)
repoIds
Array of strings (repo_ids)
Array of objects (sessions)

Slim: no full transcripts, just session state + display fields.

Array of objects (chats)

Metadata only — see ClaudeChatMetadata.

Array of objects (statuses)

Live chat statuses keyed by agent_session_id (reuses ChatStatusEntry from daemon.proto).

Array of objects (callback_interests)

The daemon's GitHub callback interests at connect time (repo + PR). Carried on the snapshot so a (re)connect reconciles interests atomically with the rest of the read model; steady-state changes arrive as CallbackInterestSet deltas (DaemonEvent field 10).

Responses

Request samples

Content type
application/json
{
  • "snapshot": {
    }
}

Response samples

Content type
application/json
{ }

RefreshCloudEntitlements

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
object (RefreshCloudEntitlementsRequest)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "status": {
    }
}

RegisterDaemon

Daemon registry

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
daemonId
string (daemon_id)
hostname
string (hostname)
repoIds
Array of strings (repo_ids)

Repos this daemon manages.

endpoint
string or null (endpoint)

Optional endpoint URL where the daemon's DaemonService is reachable. Required for proxy RPC support. Daemons behind NAT may omit this.

email
string (email)

User email from the WorkOS device code response. Used for JIT user creation when the user doesn't exist in the DB yet.

daemonPublicKey
string <byte> (daemon_public_key)

Proof that the caller holds the machine key pinned to daemon_id (BOS-1580). All three are optional while older daemons still register without them; when daemon_public_key is set, possession_signature and signed_at_unix must be set too. The signature is Ed25519 over the bytes lib/bossalib/daemonproof.Message builds from daemon_id, the SHA-256 of the bearer token this request is sent with, and signed_at_unix.

The 32-byte Ed25519 public key of the daemon's machine key.

possessionSignature
string <byte> (possession_signature)

Ed25519 signature over daemonproof.Message(daemon_id, bearer, signed_at_unix).

signedAtUnix
integer or string <int64> (signed_at_unix)

Unix seconds the signature was made at; must be within 5 minutes of the server's clock.

Responses

Request samples

Content type
application/json
{
  • "daemonId": "string",
  • "hostname": "string",
  • "repoIds": [
    ],
  • "endpoint": "string",
  • "email": "string",
  • "daemonPublicKey": "string",
  • "possessionSignature": "string",
  • "signedAtUnix": 0
}

Response samples

Content type
application/json
{
  • "daemonId": "string",
  • "sessionToken": "string"
}

RemoveOrganizationMember

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
userId
string (user_id)

Exactly one member identifier or invitation_id must be set. invitation_id revokes a pending invitation instead of removing an active membership.

workosMembershipId
string (workos_membership_id)
invitationId
string (invitation_id)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "userId": "string",
  • "workosMembershipId": "string",
  • "invitationId": "string"
}

Response samples

Content type
application/json
{ }

RenameOrganization

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
name
string (name)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    }
}

ReportBug

Bug reporting (ctrl+g in TUI; ctrl+b is a deprecated alias). Unauthenticated; optionally resolves the caller's identity when a bearer token is present.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
comment
string (comment)
object (bossanova.v1.ReportContext)

ReportContext bundles everything the TUI attaches to a bug report. All fields are optional; the server tolerates empty values.

Responses

Request samples

Content type
application/json
{
  • "comment": "string",
  • "context": {
    }
}

Response samples

Content type
application/json
{
  • "reportId": "string"
}

RotateSessionWebhookSecret

RotateSessionWebhookSecret replaces the signing secret; undelivered events are signed with the new one. The new secret is returned ONLY here. While member session sharing is off: NOT_FOUND for another owner's endpoint, FAILED_PRECONDITION for an orphaned one.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)
secret
string or null (secret)

New signing secret to use. Absent generates a random one.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string",
  • "secret": "string"
}

Response samples

Content type
application/json
{
  • "webhook": {
    },
  • "secret": "string"
}

RotateTriggerSecret

RotateTriggerSecret replaces the signing secret of an HTTP trigger the caller created, or, for an owner of its organization, a member's HTTP trigger; the old secret stops validating immediately. The new secret is returned ONLY in this response. FAILED_PRECONDITION for a trigger type with no secret.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
id
string (id)

Responses

Request samples

Content type
application/json
{
  • "id": "string"
}

Response samples

Content type
application/json
{
  • "trigger": {
    },
  • "secret": "string"
}

SendSessionWebhookTestEvent

SendSessionWebhookTestEvent sends one test delivery of event_type to the endpoint synchronously and returns it with its single attempt, or cancelled without one when the endpoint is disabled or changed while the attempt is in flight. The endpoint need not be subscribed to event_type, and a disabled endpoint may still be tested. An absent payload_json sends the catalog sample; a supplied one must be a JSON object of at most 64 KiB (INVALID_ARGUMENT otherwise), and the server overwrites its id, type, organization_id and created_at and forces is_test to true. The body is then rendered through the endpoint's format, exactly as a live delivery is; a payload the format cannot render is INVALID_ARGUMENT. Test deliveries are never retried. RESOURCE_EXHAUSTED past 10 test sends per minute per organization. While member session sharing is off: NOT_FOUND for another owner's endpoint, FAILED_PRECONDITION for an orphaned one.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
webhookId
string (webhook_id)
eventType
string (event_type)

A catalog event type; the endpoint need not be subscribed to it.

payloadJson
string or null (payload_json)

The body to send, a JSON object of at most 64 KiB. Absent or empty sends the catalog sample for event_type.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "webhookId": "string",
  • "eventType": "string",
  • "payloadJson": "string"
}

Response samples

Content type
application/json
{
  • "delivery": {
    },
  • "attempt": {
    }
}

SetOrganizationMemberRole

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
userId
string (user_id)
workosMembershipId
string (workos_membership_id)
role
string (bossanova.v1.MemberRole)
Enum: "MEMBER_ROLE_UNSPECIFIED" "MEMBER_ROLE_OWNER" "MEMBER_ROLE_USER"

MemberRole is a member's role inside an organization. Owners can rename the organization and manage its members and billing; users cannot.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "userId": "string",
  • "workosMembershipId": "string",
  • "role": "MEMBER_ROLE_UNSPECIFIED"
}

Response samples

Content type
application/json
{
  • "member": {
    }
}

SetRepoOrganization

Repo-to-organization ownership mapping, keyed by canonical repo origin URL. User-authenticated; the caller must be a member of the target organization.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
repoOriginUrl
string (repo_origin_url)
organizationId
string (organization_id)

Responses

Request samples

Content type
application/json
{
  • "repoOriginUrl": "string",
  • "organizationId": "string"
}

Response samples

Content type
application/json
{
  • "mapping": {
    }
}

SubscribeToNewsletter

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
wordingVersion
string (wording_version)

The wording version the user was shown. bosso rejects a version that is not current with INVALID_ARGUMENT so the client re-reads the status.

sourcePage
string (source_page)

The app path the opt-in was shown on. Must start with "/"; any query or fragment is dropped, and it is at most 256 characters.

Responses

Request samples

Content type
application/json
{
  • "wordingVersion": "string",
  • "sourcePage": "string"
}

Response samples

Content type
application/json
{
  • "consent": {
    }
}

SwitchActiveOrganization Deprecated

Deprecated: use AuthKit switchToOrganization instead. This RPC is deprecated rather than deleted because buf breaking: use: FILE blocks deleting it from bossanova.v1; true removal requires bossanova.v2.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
returnUrl
string (return_url)

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "returnUrl": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    },
  • "reauthorizeUrl": "string"
}

SyncDaemonNotes

SyncDaemonNotes mirrors a batch of a daemon's local notes into bosso. It authenticates the daemon session, the same principal as PublishDaemonSnapshot; a user token is Unauthenticated. The daemon owner is the author of every synced note, and each item is routed to an organization by its repo_origin_url. The mirror is one-way and daemon-authoritative: a newer source_version wins, and the cloud copy of a synced note cannot be edited through UpdateOrganizationNote. See SyncDaemonNotesRequest for the batch bounds and NoteSyncOutcome for the per-item results.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
Array of objects (items)
Array
sourceNoteId
string (source_note_id)

The note's id in the daemon's store. Together with the authenticated daemon it identifies the cloud copy.

sourceVersion
integer or string <int64> (source_version)

Monotonic per source note; the cloud keeps the highest version it has applied and answers STALE for anything not newer.

repoOriginUrl
string (repo_origin_url)

Canonical origin URL of the note's repository. Picks the organization: an unmapped repository routes to the daemon owner's personal organization; a mapped one routes to its mapped organization when the owner is a member of it, and is ORGANIZATION_REFUSED otherwise.

sessionId
string (session_id)
chatId
string (chat_id)
body
string (body)
tags
Array of strings (tags)
sourceCreatedAt
string <date-time> (google.protobuf.Timestamp)

A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.

All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.

The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.

Examples

Example 1: Compute Timestamp from POSIX time().

 Timestamp timestamp;
 timestamp.set_seconds(time(NULL));
 timestamp.set_nanos(0);

Example 2: Compute Timestamp from POSIX gettimeofday().

 struct timeval tv;
 gettimeofday(&tv, NULL);

 Timestamp timestamp;
 timestamp.set_seconds(tv.tv_sec);
 timestamp.set_nanos(tv.tv_usec * 1000);

Example 3: Compute Timestamp from Win32 GetSystemTimeAsFileTime().

 FILETIME ft;
 GetSystemTimeAsFileTime(&ft);
 UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;

 // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
 // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
 Timestamp timestamp;
 timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
 timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

Example 4: Compute Timestamp from Java System.currentTimeMillis().

 long millis = System.currentTimeMillis();

 Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
     .setNanos((int) ((millis % 1000) * 1000000)).build();

Example 5: Compute Timestamp from Java Instant.now().

 Instant now = Instant.now();

 Timestamp timestamp =
     Timestamp.newBuilder().setSeconds(now.getEpochSecond())
         .setNanos(now.getNano()).build();

Example 6: Compute Timestamp from current time in Python.

 timestamp = Timestamp()
 timestamp.GetCurrentTime()

JSON Mapping

In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).

For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.

In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard datetime.datetime object can be converted to this format using strftime with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's ISODateTimeFormat.dateTime() to obtain a formatter capable of generating timestamps in this format.

sourceUpdatedAt
string <date-time> (google.protobuf.Timestamp)

A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.

All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.

The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.

Examples

Example 1: Compute Timestamp from POSIX time().

 Timestamp timestamp;
 timestamp.set_seconds(time(NULL));
 timestamp.set_nanos(0);

Example 2: Compute Timestamp from POSIX gettimeofday().

 struct timeval tv;
 gettimeofday(&tv, NULL);

 Timestamp timestamp;
 timestamp.set_seconds(tv.tv_sec);
 timestamp.set_nanos(tv.tv_usec * 1000);

Example 3: Compute Timestamp from Win32 GetSystemTimeAsFileTime().

 FILETIME ft;
 GetSystemTimeAsFileTime(&ft);
 UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;

 // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
 // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
 Timestamp timestamp;
 timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
 timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

Example 4: Compute Timestamp from Java System.currentTimeMillis().

 long millis = System.currentTimeMillis();

 Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
     .setNanos((int) ((millis % 1000) * 1000000)).build();

Example 5: Compute Timestamp from Java Instant.now().

 Instant now = Instant.now();

 Timestamp timestamp =
     Timestamp.newBuilder().setSeconds(now.getEpochSecond())
         .setNanos(now.getNano()).build();

Example 6: Compute Timestamp from current time in Python.

 timestamp = Timestamp()
 timestamp.GetCurrentTime()

JSON Mapping

In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).

For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.

In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard datetime.datetime object can be converted to this format using strftime with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's ISODateTimeFormat.dateTime() to obtain a formatter capable of generating timestamps in this format.

isDeleted
boolean (is_deleted)

True when the note was deleted on the daemon. The cloud copy is tombstoned, no quota is consumed, and the result is SYNCED even when no cloud copy existed.

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ]
}

TestTrigger

TestTrigger runs a sample payload through a trigger the caller created, applying the same filters and policies as a real invocation, and records the result as a TriggerInvocation with source "test". It launches a session only when should_launch is set; otherwise the invocation stops at its decision. Only the creator may test a trigger; an owner of its organization gets PERMISSION_DENIED.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
triggerId
string (trigger_id)
samplePayloadJson
string (sample_payload_json)

Sample payload as a JSON object, evaluated as the request body (HTTP) or event payload (GitHub).

sampleEventType
string (sample_event_type)

Catalog event id the sample is treated as; required for GitHub triggers, ignored for HTTP.

shouldLaunch
boolean (should_launch)

Launch a real session when the sample passes every filter and policy. False evaluates and records the decision only.

Responses

Request samples

Content type
application/json
{
  • "triggerId": "string",
  • "samplePayloadJson": "string",
  • "sampleEventType": "string",
  • "shouldLaunch": true
}

Response samples

Content type
application/json
{
  • "invocation": {
    }
}

TransferSession

Session transfer between daemons

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
sessionId
string (session_id)
sourceDaemonId
string (source_daemon_id)

Daemon to transfer FROM.

targetDaemonId
string (target_daemon_id)

Daemon to transfer TO.

Responses

Request samples

Content type
application/json
{
  • "sessionId": "string",
  • "sourceDaemonId": "string",
  • "targetDaemonId": "string"
}

Response samples

Content type
application/json
{
  • "session": {
    },
  • "targetDaemonId": "string"
}

UpdateOrganizationNote

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)
body
string or null (body)

Unset = leave the body alone.

NoteTagSet (object) or tags (null) (tags)

Unset = leave the tags alone. SET = REPLACE the entire tag set with this list, including replacing it with nothing when the list is empty.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string",
  • "body": "string",
  • "tags": {
    }
}

Response samples

Content type
application/json
{
  • "note": {
    }
}

UpdateSessionWebhook

UpdateSessionWebhook changes only the fields that are present and returns the endpoint without its secret. Disabling an endpoint or changing its URL cancels its undelivered deliveries. Validation matches CreateSessionWebhook. While member session sharing is off: NOT_FOUND for another owner's endpoint, and FAILED_PRECONDITION for an orphaned one unless the update sets nothing but is_enabled=false.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
organizationId
string (organization_id)
id
string (id)
url
string or null (url)
description
string or null (description)
eventTypes
Array of strings (event_types)
shouldReplaceEventTypes
boolean (should_replace_event_types)
isEnabled
boolean or null (is_enabled)
format
string or null (format)

New payload format (SessionWebhookFormat.id); absent leaves it unchanged. Undelivered deliveries are sent in the new format.

managedBy
string or null (managed_by)

Config-ownership marker. Omitted leaves it unchanged; "" clears it; otherwise "boss-project:" as on CreateSessionWebhookRequest.

Responses

Request samples

Content type
application/json
{
  • "organizationId": "string",
  • "id": "string",
  • "url": "string",
  • "description": "string",
  • "eventTypes": [
    ],
  • "shouldReplaceEventTypes": true,
  • "isEnabled": true,
  • "format": "string",
  • "managedBy": "string"
}

Response samples

Content type
application/json
{
  • "webhook": {
    }
}

UpdateTrigger

UpdateTrigger changes fields of a trigger the caller created; absent fields are left unchanged. trigger_type is immutable. Never returns or changes the secret. An owner of the trigger's organization may disable a member's trigger (is_enabled false and nothing else); enabling it or any other change is PERMISSION_DENIED for anyone but the creator.

header Parameters
Connect-Protocol-Version
required
number (Connect-Protocol-Version)
Value: 1

Define the version of the Connect protocol

Value: 1
Connect-Timeout-Ms
number (Connect-Timeout-Ms)

Define the timeout, in ms

Request Body schema: application/json
required
One of
id
string (id)
name
string or null (name)
isEnabled
boolean or null (is_enabled)

Enable or disable the trigger.

repoOriginUrl
string or null (repo_origin_url)
object (bossanova.v1.TriggerLaunchSettings)

Replaces the launch settings when set, except that its optional should_run_setup_command and is_zero_output keep their stored values when absent.

object (bossanova.v1.TriggerPlacement)

TriggerPlacement is where a trigger launches its session.

TriggerConcurrencyPolicy (string) or concurrency_policy (null) (concurrency_policy)
cooldownSeconds
integer or null <int32> (cooldown_seconds)
Array of objects (filters)
shouldClearFilters
boolean (should_clear_filters)
payloadFields
Array of strings (payload_fields)
shouldClearPayloadFields
boolean (should_clear_payload_fields)
object (bossanova.v1.TriggerGate)

Replaces the whole gate when set; set with an empty script_path it removes the gate. Absent leaves the gate unchanged.

managedBy
string or null (managed_by)

Config-ownership marker. Omitted leaves it unchanged; "" clears it; otherwise "boss-project:" as on CreateTriggerRequest, including ALREADY_EXISTS when the organization already has that marker and name.

required
object (bossanova.v1.GithubTriggerConfig)

GithubTriggerConfig is config version 1 for trigger_type "github". Events arrive through the Bossanova GitHub App installation on repo_origin_url.

Responses

Request samples

Content type
application/json
Example
{
  • "id": "string",
  • "name": "string",
  • "isEnabled": true,
  • "repoOriginUrl": "string",
  • "launch": {
    },
  • "placement": {
    },
  • "concurrencyPolicy": "TRIGGER_CONCURRENCY_POLICY_UNSPECIFIED",
  • "cooldownSeconds": 0,
  • "filters": [
    ],
  • "shouldClearFilters": true,
  • "payloadFields": [
    ],
  • "shouldClearPayloadFields": true,
  • "gate": {
    },
  • "managedBy": "string",
  • "github": {
    }
}

Response samples

Content type
application/json
{
  • "trigger": {
    }
}