openapi: 3.1.0 info: title: textql.rpc.platform version: "1.0" paths: /v1/sandbox/start: post: tags: - textql.rpc.platform.SandboxService summary: StartSandbox description: Start a new Python sandbox environment operationId: textql.rpc.platform.SandboxService.StartSandbox parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.StartSandboxRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.StartSandboxResponse' /v1/sandbox/execute: post: tags: - textql.rpc.platform.SandboxService summary: ExecuteCode description: Execute Python code in a running sandbox operationId: textql.rpc.platform.SandboxService.ExecuteCode parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.ExecuteCodeRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.ExecuteCodeResponse' /v1/sandbox/status: post: tags: - textql.rpc.platform.SandboxService summary: GetSandboxStatus description: Get the current status of a sandbox, including loaded dataframes and memory usage operationId: textql.rpc.platform.SandboxService.GetSandboxStatus parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.GetSandboxStatusRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.GetSandboxStatusResponse' /v1/sandbox/stop: post: tags: - textql.rpc.platform.SandboxService summary: StopSandbox description: Stop and destroy a running sandbox operationId: textql.rpc.platform.SandboxService.StopSandbox parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.StopSandboxRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.StopSandboxResponse' /v1/sandbox/query: post: tags: - textql.rpc.platform.SandboxService summary: LoadConnectorData description: Execute a SQL query against a connector and load the results into the sandbox as a pandas DataFrame operationId: textql.rpc.platform.SandboxService.LoadConnectorData parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.LoadConnectorDataRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.LoadConnectorDataResponse' /v1/sandbox/upload: post: tags: - textql.rpc.platform.SandboxService summary: UploadFile description: Upload a file into the sandbox filesystem operationId: textql.rpc.platform.SandboxService.UploadFile parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.UploadFileRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.platform.UploadFileResponse' components: schemas: connect-protocol-version: type: number title: Connect-Protocol-Version enum: - 1 description: Define the version of the Connect protocol const: 1 connect-timeout-header: type: number title: Connect-Timeout-Ms description: Define the timeout, in ms connect.error: type: object properties: code: type: string examples: - not_found enum: - canceled - unknown - invalid_argument - deadline_exceeded - not_found - already_exists - permission_denied - resource_exhausted - failed_precondition - aborted - out_of_range - unimplemented - internal - unavailable - data_loss - unauthenticated description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. message: type: string description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. details: type: array items: $ref: '#/components/schemas/connect.error_details.Any' description: A list of messages that carry the error details. There is no limit on the number of messages. title: Connect Error additionalProperties: true description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation' connect.error_details.Any: type: object properties: type: type: string description: 'A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.' value: type: string format: binary description: The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field. debug: oneOf: - type: object title: Any additionalProperties: true description: Detailed error information. discriminator: propertyName: type title: Debug description: Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic. additionalProperties: true description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details. google.protobuf.Timestamp: type: string examples: - "2023-01-15T01:30:15.01Z" - "2024-12-25T12:00:00Z" format: date-time description: 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. In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. textql.rpc.platform.StartSandboxRequest: type: object properties: name: type: string title: name description: Optional human-readable name for the sandbox nullable: true title: StartSandboxRequest additionalProperties: false textql.rpc.platform.StartSandboxResponse: type: object properties: sandboxId: type: string title: sandbox_id createdAt: title: created_at $ref: '#/components/schemas/google.protobuf.Timestamp' title: StartSandboxResponse additionalProperties: false textql.rpc.platform.ExecuteCodeRequest: type: object properties: sandboxId: type: string title: sandbox_id code: type: string title: code description: Python code to execute required: - sandboxId - code title: ExecuteCodeRequest additionalProperties: false textql.rpc.platform.ExecuteCodeResponse: type: object properties: output: type: array items: type: string title: output description: Lines of stdout output error: type: string title: error description: Error message if execution failed nullable: true files: type: array items: $ref: '#/components/schemas/textql.rpc.platform.FileOutput' title: files description: Files generated during execution dataframes: type: array items: $ref: '#/components/schemas/textql.rpc.platform.DataFrameOutput' title: dataframes description: DataFrames created or modified during execution executionTimeMs: type: integer title: execution_time_ms format: int64 title: ExecuteCodeResponse additionalProperties: false textql.rpc.platform.GetSandboxStatusRequest: type: object properties: sandboxId: type: string title: sandbox_id required: - sandboxId title: GetSandboxStatusRequest additionalProperties: false textql.rpc.platform.GetSandboxStatusResponse: type: object properties: status: type: string title: status memoryUsage: type: string title: memory_usage dataframes: type: array items: $ref: '#/components/schemas/textql.rpc.platform.DataFrameInfo' title: dataframes title: GetSandboxStatusResponse additionalProperties: false textql.rpc.platform.StopSandboxRequest: type: object properties: sandboxId: type: string title: sandbox_id required: - sandboxId title: StopSandboxRequest additionalProperties: false textql.rpc.platform.StopSandboxResponse: type: object properties: success: type: boolean title: success title: StopSandboxResponse additionalProperties: false textql.rpc.platform.LoadConnectorDataRequest: type: object properties: sandboxId: type: string title: sandbox_id connectorId: type: integer title: connector_id format: int32 query: type: string title: query description: SQL query to execute against the connector dataframeName: type: string title: dataframe_name description: Optional name for the resulting DataFrame. Auto-generated if not provided. nullable: true required: - sandboxId - connectorId - query title: LoadConnectorDataRequest additionalProperties: false textql.rpc.platform.LoadConnectorDataResponse: type: object properties: dataframeName: type: string title: dataframe_name numRows: type: integer title: num_rows format: int64 numCols: type: integer title: num_cols format: int64 preview: type: string title: preview description: Text preview of the loaded data title: LoadConnectorDataResponse additionalProperties: false textql.rpc.platform.UploadFileRequest: type: object properties: sandboxId: type: string title: sandbox_id filename: type: string title: filename content: type: string title: content format: byte description: File content, base64-encoded required: - sandboxId - filename - content title: UploadFileRequest additionalProperties: false textql.rpc.platform.UploadFileResponse: type: object properties: filename: type: string title: filename sizeBytes: type: integer title: size_bytes format: int64 title: UploadFileResponse additionalProperties: false textql.rpc.platform.FileOutput: type: object properties: name: type: string title: name url: type: string title: url mimeType: type: string title: mime_type title: FileOutput additionalProperties: false textql.rpc.platform.DataFrameOutput: type: object properties: name: type: string title: name numRows: type: integer title: num_rows format: int32 numCols: type: integer title: num_cols format: int32 title: DataFrameOutput additionalProperties: false textql.rpc.platform.DataFrameInfo: type: object properties: name: type: string title: name numRows: type: integer title: num_rows format: int32 numCols: type: integer title: num_cols format: int32 memoryUsageBytes: type: integer title: memory_usage_bytes format: int64 title: DataFrameInfo additionalProperties: false security: [] tags: - name: textql.rpc.platform.SandboxService description: Platform Sandbox Service - External API for creating and managing Python sandbox environments