summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk/openapi.json
diff options
context:
space:
mode:
authorJames Long <[email protected]>2026-04-15 10:18:48 -0400
committerGitHub <[email protected]>2026-04-15 10:18:48 -0400
commitaf20191d1cd60a7f4a421ad81eca5053f7deace1 (patch)
tree4faa83e938c61311f67a189220d427b9f0ed3017 /packages/sdk/openapi.json
parent47af00b2452ef7374cdda8769910799938d1303c (diff)
downloadopencode-af20191d1cd60a7f4a421ad81eca5053f7deace1.tar.gz
opencode-af20191d1cd60a7f4a421ad81eca5053f7deace1.zip
feat(core): sync routes, refactor proxy, session restore, and more syncing (#22518)
Diffstat (limited to 'packages/sdk/openapi.json')
-rw-r--r--packages/sdk/openapi.json320
1 files changed, 320 insertions, 0 deletions
diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json
index 6000e6604..ee3538d55 100644
--- a/packages/sdk/openapi.json
+++ b/packages/sdk/openapi.json
@@ -1805,6 +1805,90 @@
]
}
},
+ "/experimental/workspace/{id}/session-restore": {
+ "post": {
+ "operationId": "experimental.workspace.sessionRestore",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "required": true
+ }
+ ],
+ "summary": "Restore session into workspace",
+ "description": "Replay a session's sync events into the target workspace in batches.",
+ "responses": {
+ "200": {
+ "description": "Session replay started",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": ["total"]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ }
+ },
+ "required": ["sessionID"]
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.experimental.workspace.sessionRestore({\n ...\n})"
+ }
+ ]
+ }
+ },
"/experimental/worktree": {
"post": {
"operationId": "worktree.create",
@@ -5143,6 +5227,202 @@
]
}
},
+ "/sync/replay": {
+ "post": {
+ "operationId": "sync.replay",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "Replay sync events",
+ "description": "Validate and replay a complete sync event history.",
+ "responses": {
+ "200": {
+ "description": "Replayed sync events",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sessionID": {
+ "type": "string"
+ }
+ },
+ "required": ["sessionID"]
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "directory": {
+ "type": "string"
+ },
+ "events": {
+ "minItems": 1,
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "aggregateID": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ },
+ "type": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": ["id", "aggregateID", "seq", "type", "data"]
+ }
+ }
+ },
+ "required": ["directory", "events"]
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.sync.replay({\n ...\n})"
+ }
+ ]
+ }
+ },
+ "/sync/history": {
+ "get": {
+ "operationId": "sync.history.list",
+ "parameters": [
+ {
+ "in": "query",
+ "name": "directory",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "query",
+ "name": "workspace",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "summary": "List sync events",
+ "description": "List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.",
+ "responses": {
+ "200": {
+ "description": "Sync events",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "aggregate_id": {
+ "type": "string"
+ },
+ "seq": {
+ "type": "number"
+ },
+ "type": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "required": ["id", "aggregate_id", "seq", "type", "data"]
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.sync.history.list({\n ...\n})"
+ }
+ ]
+ }
+ },
"/find": {
"get": {
"operationId": "find.text",
@@ -8514,6 +8794,40 @@
},
"required": ["type", "properties"]
},
+ "Event.workspace.restore": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "workspace.restore"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "workspaceID": {
+ "type": "string",
+ "pattern": "^wrk.*"
+ },
+ "sessionID": {
+ "type": "string",
+ "pattern": "^ses.*"
+ },
+ "total": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ },
+ "step": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 9007199254740991
+ }
+ },
+ "required": ["workspaceID", "sessionID", "total", "step"]
+ }
+ },
+ "required": ["type", "properties"]
+ },
"Event.workspace.status": {
"type": "object",
"properties": {
@@ -10524,6 +10838,9 @@
"$ref": "#/components/schemas/Event.workspace.failed"
},
{
+ "$ref": "#/components/schemas/Event.workspace.restore"
+ },
+ {
"$ref": "#/components/schemas/Event.workspace.status"
},
{
@@ -12781,6 +13098,9 @@
"$ref": "#/components/schemas/Event.workspace.failed"
},
{
+ "$ref": "#/components/schemas/Event.workspace.restore"
+ },
+ {
"$ref": "#/components/schemas/Event.workspace.status"
},
{