| { |
| "openapi": "3.1.0", |
| "info": { |
| "title": "RobotHub Inference Server", |
| "summary": "ACT Model Inference Server for Real-time Robot Control", |
| "version": "1.0.0" |
| }, |
| "paths": { |
| "/": { |
| "get": { |
| "tags": [ |
| "Health" |
| ], |
| "summary": "Root", |
| "description": "Health check endpoint.", |
| "operationId": "root__get", |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/health": { |
| "get": { |
| "tags": [ |
| "Health" |
| ], |
| "summary": "Health Check", |
| "description": "Detailed health check.", |
| "operationId": "health_check_health_get", |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/sessions": { |
| "get": { |
| "tags": [ |
| "Sessions" |
| ], |
| "summary": "List Sessions", |
| "description": "List all sessions.", |
| "operationId": "list_sessions_sessions_get", |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": { |
| "items": { |
| "$ref": "#/components/schemas/SessionStatusResponse" |
| }, |
| "type": "array", |
| "title": "Response List Sessions Sessions Get" |
| } |
| } |
| } |
| } |
| } |
| }, |
| "post": { |
| "tags": [ |
| "Sessions" |
| ], |
| "summary": "Create Session", |
| "description": "Create a new inference session.\n\nIf workspace_id is provided, all rooms will be created in that workspace.\nIf workspace_id is not provided, a new workspace will be generated automatically.\nAll rooms for a session (cameras + joints) are always created in the same workspace.", |
| "operationId": "create_session_sessions_post", |
| "requestBody": { |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/CreateSessionRequest" |
| } |
| } |
| }, |
| "required": true |
| }, |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/CreateSessionResponse" |
| } |
| } |
| } |
| }, |
| "422": { |
| "description": "Validation Error", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/HTTPValidationError" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/sessions/{session_id}/start": { |
| "post": { |
| "tags": [ |
| "Control" |
| ], |
| "summary": "Start Inference", |
| "description": "Start inference for a session.", |
| "operationId": "start_inference_sessions__session_id__start_post", |
| "parameters": [ |
| { |
| "name": "session_id", |
| "in": "path", |
| "required": true, |
| "schema": { |
| "type": "string", |
| "title": "Session Id" |
| } |
| } |
| ], |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| }, |
| "422": { |
| "description": "Validation Error", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/HTTPValidationError" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/sessions/{session_id}/stop": { |
| "post": { |
| "tags": [ |
| "Control" |
| ], |
| "summary": "Stop Inference", |
| "description": "Stop inference for a session.", |
| "operationId": "stop_inference_sessions__session_id__stop_post", |
| "parameters": [ |
| { |
| "name": "session_id", |
| "in": "path", |
| "required": true, |
| "schema": { |
| "type": "string", |
| "title": "Session Id" |
| } |
| } |
| ], |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| }, |
| "422": { |
| "description": "Validation Error", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/HTTPValidationError" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/sessions/{session_id}/restart": { |
| "post": { |
| "tags": [ |
| "Control" |
| ], |
| "summary": "Restart Inference", |
| "description": "Restart inference for a session.", |
| "operationId": "restart_inference_sessions__session_id__restart_post", |
| "parameters": [ |
| { |
| "name": "session_id", |
| "in": "path", |
| "required": true, |
| "schema": { |
| "type": "string", |
| "title": "Session Id" |
| } |
| } |
| ], |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| }, |
| "422": { |
| "description": "Validation Error", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/HTTPValidationError" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "/sessions/{session_id}": { |
| "delete": { |
| "tags": [ |
| "Sessions" |
| ], |
| "summary": "Delete Session", |
| "description": "Delete a session.", |
| "operationId": "delete_session_sessions__session_id__delete", |
| "parameters": [ |
| { |
| "name": "session_id", |
| "in": "path", |
| "required": true, |
| "schema": { |
| "type": "string", |
| "title": "Session Id" |
| } |
| } |
| ], |
| "responses": { |
| "200": { |
| "description": "Successful Response", |
| "content": { |
| "application/json": { |
| "schema": {} |
| } |
| } |
| }, |
| "422": { |
| "description": "Validation Error", |
| "content": { |
| "application/json": { |
| "schema": { |
| "$ref": "#/components/schemas/HTTPValidationError" |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "components": { |
| "schemas": { |
| "CreateSessionRequest": { |
| "properties": { |
| "session_id": { |
| "type": "string", |
| "title": "Session Id" |
| }, |
| "policy_path": { |
| "type": "string", |
| "title": "Policy Path" |
| }, |
| "transport_server_url": { |
| "type": "string", |
| "title": "Transport Server Url" |
| }, |
| "camera_names": { |
| "items": { |
| "type": "string" |
| }, |
| "type": "array", |
| "title": "Camera Names", |
| "default": [ |
| "front" |
| ] |
| }, |
| "workspace_id": { |
| "anyOf": [ |
| { |
| "type": "string" |
| }, |
| { |
| "type": "null" |
| } |
| ], |
| "title": "Workspace Id" |
| }, |
| "policy_type": { |
| "type": "string", |
| "title": "Policy Type", |
| "default": "act" |
| }, |
| "language_instruction": { |
| "anyOf": [ |
| { |
| "type": "string" |
| }, |
| { |
| "type": "null" |
| } |
| ], |
| "title": "Language Instruction" |
| } |
| }, |
| "type": "object", |
| "required": [ |
| "session_id", |
| "policy_path", |
| "transport_server_url" |
| ], |
| "title": "CreateSessionRequest" |
| }, |
| "CreateSessionResponse": { |
| "properties": { |
| "workspace_id": { |
| "type": "string", |
| "title": "Workspace Id" |
| }, |
| "camera_room_ids": { |
| "additionalProperties": { |
| "type": "string" |
| }, |
| "type": "object", |
| "title": "Camera Room Ids" |
| }, |
| "joint_input_room_id": { |
| "type": "string", |
| "title": "Joint Input Room Id" |
| }, |
| "joint_output_room_id": { |
| "type": "string", |
| "title": "Joint Output Room Id" |
| } |
| }, |
| "type": "object", |
| "required": [ |
| "workspace_id", |
| "camera_room_ids", |
| "joint_input_room_id", |
| "joint_output_room_id" |
| ], |
| "title": "CreateSessionResponse" |
| }, |
| "HTTPValidationError": { |
| "properties": { |
| "detail": { |
| "items": { |
| "$ref": "#/components/schemas/ValidationError" |
| }, |
| "type": "array", |
| "title": "Detail" |
| } |
| }, |
| "type": "object", |
| "title": "HTTPValidationError" |
| }, |
| "SessionStatusResponse": { |
| "properties": { |
| "session_id": { |
| "type": "string", |
| "title": "Session Id" |
| }, |
| "status": { |
| "type": "string", |
| "title": "Status" |
| }, |
| "policy_path": { |
| "type": "string", |
| "title": "Policy Path" |
| }, |
| "policy_type": { |
| "type": "string", |
| "title": "Policy Type" |
| }, |
| "camera_names": { |
| "items": { |
| "type": "string" |
| }, |
| "type": "array", |
| "title": "Camera Names" |
| }, |
| "workspace_id": { |
| "type": "string", |
| "title": "Workspace Id" |
| }, |
| "rooms": { |
| "additionalProperties": true, |
| "type": "object", |
| "title": "Rooms" |
| }, |
| "stats": { |
| "additionalProperties": true, |
| "type": "object", |
| "title": "Stats" |
| }, |
| "inference_stats": { |
| "anyOf": [ |
| { |
| "additionalProperties": true, |
| "type": "object" |
| }, |
| { |
| "type": "null" |
| } |
| ], |
| "title": "Inference Stats" |
| }, |
| "error_message": { |
| "anyOf": [ |
| { |
| "type": "string" |
| }, |
| { |
| "type": "null" |
| } |
| ], |
| "title": "Error Message" |
| } |
| }, |
| "type": "object", |
| "required": [ |
| "session_id", |
| "status", |
| "policy_path", |
| "policy_type", |
| "camera_names", |
| "workspace_id", |
| "rooms", |
| "stats" |
| ], |
| "title": "SessionStatusResponse" |
| }, |
| "ValidationError": { |
| "properties": { |
| "loc": { |
| "items": { |
| "anyOf": [ |
| { |
| "type": "string" |
| }, |
| { |
| "type": "integer" |
| } |
| ] |
| }, |
| "type": "array", |
| "title": "Location" |
| }, |
| "msg": { |
| "type": "string", |
| "title": "Message" |
| }, |
| "type": { |
| "type": "string", |
| "title": "Error Type" |
| } |
| }, |
| "type": "object", |
| "required": [ |
| "loc", |
| "msg", |
| "type" |
| ], |
| "title": "ValidationError" |
| } |
| }, |
| "securitySchemes": { |
| "BearerAuth": { |
| "type": "http", |
| "scheme": "bearer", |
| "bearerFormat": "JWT" |
| }, |
| "ApiKeyAuth": { |
| "type": "apiKey", |
| "in": "header", |
| "name": "X-API-Key" |
| } |
| } |
| }, |
| "tags": [ |
| { |
| "name": "Health", |
| "description": "Health check and server status endpoints" |
| }, |
| { |
| "name": "Sessions", |
| "description": "Inference session management - create, control, and monitor AI sessions" |
| }, |
| { |
| "name": "Control", |
| "description": "Session control operations - start, stop, restart inference" |
| }, |
| { |
| "name": "Debug", |
| "description": "Debug and monitoring endpoints for system diagnostics" |
| } |
| ] |
| } |