Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

215 changes: 214 additions & 1 deletion client-sdks/manager/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -929,11 +929,52 @@
]
}
},
"/v1/rejoin": {
"post": {
"tags": [
"sync"
],
"summary": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nexisting deployment by name. The OSS handler is intentionally lean:\nthe dg-token caller specifies the name, the store looks up the row,\nand a fresh `Deployment` token is minted and returned. Returns\n`404 Deployment not found` when no row matches — agents should fall\nback to `/v1/initialize` in that case.",
"description": "Distinct from `/v1/initialize`'s idempotency branch because the agent\nwants an explicit, distinguishable code path for \"I lost local state,\nplease re-attach me\" vs \"I'm a brand-new pod claiming a name\". The\nplatform-mode override forwards this to the SaaS rejoin endpoint\nwhere audit / event semantics differ.",
"operationId": "rejoin",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RejoinRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Existing deployment rejoined; fresh token returned",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RejoinResponse"
}
}
}
},
"404": {
"description": "No deployment with that name in caller's deployment group"
}
},
"security": [
{
"bearer": []
}
]
}
},
"/v1/releases": {
"get": {
"tags": [
"releases"
],
"summary": "`GET /v1/releases` — Inbound: workspace / project bearer (or authenticated\nuser). Outbound: caller bearer (passthrough). Returns only releases the\ncaller may read.",
"operationId": "list_releases",
"responses": {
"200": {
Expand Down Expand Up @@ -1386,17 +1427,55 @@
"deploymentId"
],
"properties": {
"agentArch": {
"type": [
"string",
"null"
],
"description": "Agent host arch — `x86_64` / `aarch64`."
},
"agentImageRepository": {
"type": [
"string",
"null"
],
"description": "Image repository the agent was pulled from (no tag), injected by\nthe chart at install time. Surfaced in the dashboard so admins see\nthe registry a pinned tag will be pulled from. Optional and\nKubernetes-only."
},
"agentOs": {
"type": [
"string",
"null"
],
"description": "Agent host OS — `linux` / `macos` / `windows`."
},
"agentVersion": {
"type": [
"string",
"null"
],
"description": "Agent binary version (from `env!(\"CARGO_PKG_VERSION\")` at build time).\nLets the manager build fleet inventory and decide whether to send an\n`agent_target` in the response."
},
"currentState": {
"description": "Current deployment state as reported by the agent.\nWhen present, the manager updates the deployment record to reflect\nthe agent's progress (status, stack_state, etc.)."
},
"deploymentId": {
"type": "string"
},
"regime": {
"type": [
"string",
"null"
],
"description": "Supervisor regime — `os-service` / `kubernetes`."
}
}
},
"AgentSyncResponse": {
"type": "object",
"properties": {
"agentTarget": {
"description": "Desired agent self-update target. The payload carries either `binary`\n(OS-service flow) or `helm` (Kubernetes flow); the agent picks the\none matching its regime."
},
"commandsUrl": {
"type": [
"string",
Expand Down Expand Up @@ -3516,6 +3595,12 @@
"properties": {
"keyVaultCertificateId": {
"type": "string"
},
"keyVaultResourceId": {
"type": [
"string",
"null"
]
}
}
},
Expand Down Expand Up @@ -4594,6 +4679,12 @@
"isByoVnet"
],
"properties": {
"applicationGatewaySubnetName": {
"type": [
"string",
"null"
]
},
"cidrBlock": {
"type": [
"string",
Expand Down Expand Up @@ -5041,6 +5132,47 @@
}
}
},
"ComputeCapacityBlocker": {
"type": "object",
"required": [
"category",
"message",
"observedAt"
],
"properties": {
"category": {
"$ref": "#/components/schemas/ComputeCapacityBlockerCategory"
},
"message": {
"type": "string"
},
"observedAt": {
"type": "string",
"format": "date-time"
},
"providerCode": {
"type": [
"string",
"null"
]
},
"providerReference": {
"type": [
"string",
"null"
]
}
}
},
"ComputeCapacityBlockerCategory": {
"type": "string",
"enum": [
"quota",
"capacity",
"allocation",
"other"
]
},
"ComputeCapacityGroupStatus": {
"type": "object",
"required": [
Expand All @@ -5049,6 +5181,16 @@
"desiredMachines"
],
"properties": {
"capacityBlocker": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/ComputeCapacityBlocker"
}
]
},
"currentMachines": {
"type": "integer",
"format": "int32",
Expand Down Expand Up @@ -5802,6 +5944,30 @@
"createdAt"
],
"properties": {
"agentArch": {
"type": [
"string",
"null"
]
},
"agentImageRepository": {
"type": [
"string",
"null"
]
},
"agentOs": {
"type": [
"string",
"null"
]
},
"agentVersion": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
},
Expand Down Expand Up @@ -5851,6 +6017,12 @@
"platform": {
"$ref": "#/components/schemas/Platform"
},
"regime": {
"type": [
"string",
"null"
]
},
"retryRequested": {
"type": "boolean"
},
Expand All @@ -5860,6 +6032,12 @@
"status": {
"type": "string"
},
"targetAgentVersion": {
"type": [
"string",
"null"
]
},
"updatedAt": {
"type": [
"string",
Expand Down Expand Up @@ -9209,7 +9387,8 @@
"type": "array",
"items": {
"$ref": "#/components/schemas/ReleaseResponse"
}
},
"description": "Releases the caller may read, newest first."
}
}
},
Expand Down Expand Up @@ -10486,6 +10665,13 @@
"type"
],
"properties": {
"application_gateway_subnet_name": {
"type": [
"string",
"null"
],
"description": "Name of the dedicated classic Application Gateway subnet within the VNet."
},
"private_subnet_name": {
"type": "string",
"description": "Name of the private subnet within the VNet"
Expand Down Expand Up @@ -10921,6 +11107,33 @@
}
}
},
"RejoinRequest": {
"type": "object",
"description": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nagent whose persistent state was wiped (e.g. emptyDir on pod restart).\n\nThe agent calls this when `/v1/initialize` returns a name-conflict\nerror: the deployment row already exists, so creating it would 409,\nbut the agent legitimately needs a new sync token to keep operating\nagainst it. Auth is the same dg bearer the chart originally mounted.\n\n`name` is required — without it the server can't disambiguate which\nrow to reattach to.",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
},
"RejoinResponse": {
"type": "object",
"required": [
"deploymentId",
"token"
],
"properties": {
"deploymentId": {
"type": "string"
},
"token": {
"type": "string"
}
}
},
"ReleaseRequest": {
"type": "object",
"required": [
Expand Down
Loading
Loading