{ "openapi": "3.1.0", "info": { "title": "OpenZeppelin Relayer API", "description": "OpenZeppelin Relayer API", "termsOfService": "https://www.openzeppelin.com/tos", "contact": { "name": "OpenZeppelin", "url": "https://www.openzeppelin.com" }, "license": { "name": "AGPL-3.0 license", "url": "https://github.com/OpenZeppelin/openzeppelin-relayer/blob/main/LICENSE" }, "version": "1.1.0" }, "paths": { "/api/v1/notifications": { "get": { "tags": [ "Notifications" ], "summary": "Notification routes implementation", "description": "Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs` file\n\nLists all notifications with pagination support.", "operationId": "listNotifications", "parameters": [ { "name": "page", "in": "query", "description": "Page number for pagination (starts at 1)", "required": false, "schema": { "type": "integer", "minimum": 0 } }, { "name": "per_page", "in": "query", "description": "Number of items per page (default: 10)", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "Notification list retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Vec_NotificationResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "post": { "tags": [ "Notifications" ], "summary": "Creates a new notification.", "operationId": "createNotification", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationCreateRequest" } } }, "required": true }, "responses": { "201": { "description": "Notification created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_NotificationResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "409": { "description": "Notification with this ID already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Notification with this ID already exists", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/notifications/{notification_id}": { "get": { "tags": [ "Notifications" ], "summary": "Retrieves details of a specific notification by ID.", "operationId": "getNotification", "parameters": [ { "name": "notification_id", "in": "path", "description": "Notification ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Notification retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_NotificationResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Notification not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Notification not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "delete": { "tags": [ "Notifications" ], "summary": "Deletes a notification by ID.", "operationId": "deleteNotification", "parameters": [ { "name": "notification_id", "in": "path", "description": "Notification ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Notification deleted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": "Notification deleted successfully", "message": "Notification deleted successfully", "success": true } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Notification not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Notification not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "patch": { "tags": [ "Notifications" ], "summary": "Updates an existing notification.", "operationId": "updateNotification", "parameters": [ { "name": "notification_id", "in": "path", "description": "Notification ID", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationUpdateRequest" } } }, "required": true }, "responses": { "200": { "description": "Notification updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_NotificationResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Notification not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Notification not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/plugins/{plugin_id}/call": { "post": { "tags": [ "Plugins" ], "summary": "Execute a plugin and receive the sanitized result", "description": "Logs and traces are only returned when the plugin is configured with `emit_logs` / `emit_traces`.\nPlugin-provided errors are normalized into a consistent payload (`code`, `details`) and a derived\nmessage so downstream clients receive a stable shape regardless of how the handler threw.", "operationId": "callPlugin", "parameters": [ { "name": "plugin_id", "in": "path", "description": "The unique identifier of the plugin", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginCallRequest" } } }, "required": true }, "responses": { "200": { "description": "Plugin call successful", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Value" }, "example": { "data": "done!", "error": null, "metadata": { "logs": [ { "level": "info", "message": "Plugin started..." } ], "traces": [ { "method": "sendTransaction", "relayerId": "sepolia-example", "requestId": "6c1f336f-3030-4f90-bd99-ada190a1235b" } ] }, "success": true } } } }, "400": { "description": "BadRequest (plugin-provided)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_PluginHandlerError" }, "example": { "data": { "code": "VALIDATION_FAILED", "details": { "field": "email" } }, "error": "Validation failed", "metadata": { "logs": [ { "level": "error", "message": "Validation failed for field: email" } ] }, "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "error": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "error": "Plugin with ID plugin_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "error": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "error": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers": { "get": { "tags": [ "Relayers" ], "summary": "Relayer routes implementation", "description": "Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs` file\n\nLists all relayers with pagination support.", "operationId": "listRelayers", "parameters": [ { "name": "page", "in": "query", "description": "Page number for pagination (starts at 1)", "required": false, "schema": { "type": "integer", "minimum": 0 } }, { "name": "per_page", "in": "query", "description": "Number of items per page (default: 10)", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "Relayer list retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Vec_RelayerResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "post": { "tags": [ "Relayers" ], "summary": "Creates a new relayer.", "operationId": "createRelayer", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRelayerRequest" } } }, "required": true }, "responses": { "201": { "description": "Relayer created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_RelayerResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "409": { "description": "Relayer with this ID already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with this ID already exists", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}": { "get": { "tags": [ "Relayers" ], "summary": "Retrieves details of a specific relayer by ID.", "operationId": "getRelayer", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer details retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_RelayerResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "delete": { "tags": [ "Relayers" ], "summary": "Deletes a relayer by ID.", "operationId": "deleteRelayer", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer deleted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" } } } }, "400": { "description": "Bad Request - Cannot delete relayer with active transactions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Cannot delete relayer 'relayer_id' because it has N transaction(s). Please wait for all transactions to complete or cancel them before deleting the relayer.", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "patch": { "tags": [ "Relayers" ], "summary": "Updates a relayer's information based on the provided update request.", "operationId": "updateRelayer", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRelayerRequest" } } }, "required": true }, "responses": { "200": { "description": "Relayer updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_RelayerResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/balance": { "get": { "tags": [ "Relayers" ], "summary": "Retrieves the balance of a specific relayer.", "operationId": "getRelayerBalance", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer balance retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_BalanceResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/rpc": { "post": { "tags": [ "Relayers" ], "summary": "Performs a JSON-RPC call using the specified relayer.", "operationId": "rpc", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "JSON-RPC request with method and parameters", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JsonRpcRequest_NetworkRpcRequest" }, "example": { "id": 1, "jsonrpc": "2.0", "method": "feeEstimate", "params": { "fee_token": "SOL", "network": "solana", "transaction": "base64_encoded_transaction" } } } }, "required": true }, "responses": { "200": { "description": "RPC method executed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JsonRpcResponse_NetworkRpcResult" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/sign": { "post": { "tags": [ "Relayers" ], "summary": "Signs data using the specified relayer.", "operationId": "sign", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignDataRequest" } } }, "required": true }, "responses": { "200": { "description": "Relayer signed data successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignDataResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/sign-transaction": { "post": { "tags": [ "Relayers" ], "summary": "Signs a transaction using the specified relayer (Stellar only).", "operationId": "signTransaction", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignTransactionRequest" } } }, "required": true }, "responses": { "200": { "description": "Transaction signed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignTransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/sign-typed-data": { "post": { "tags": [ "Relayers" ], "summary": "Signs typed data using the specified relayer.", "operationId": "signTypedData", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignTypedDataRequest" } } }, "required": true }, "responses": { "200": { "description": "Relayer signed typed data successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignDataResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/status": { "get": { "tags": [ "Relayers" ], "summary": "Fetches the current status of a specific relayer.", "operationId": "getRelayerStatus", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer status retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_RelayerStatus" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/transactions": { "post": { "tags": [ "Relayers" ], "summary": "Sends a transaction through the specified relayer.", "operationId": "sendTransaction", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkTransactionRequest" } } }, "required": true }, "responses": { "200": { "description": "Relayer transactions sent successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/transactions/": { "get": { "tags": [ "Relayers" ], "summary": "Lists all transactions for a specific relayer with pagination.", "operationId": "listTransactions", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "Page number for pagination (starts at 1)", "required": false, "schema": { "type": "integer", "minimum": 0 } }, { "name": "per_page", "in": "query", "description": "Number of items per page (default: 10)", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "Relayer transactions retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Vec_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/transactions/by-nonce/{nonce}": { "get": { "tags": [ "Relayers" ], "summary": "Retrieves a transaction by its nonce value.", "operationId": "getTransactionByNonce", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } }, { "name": "nonce", "in": "path", "description": "The nonce of the transaction", "required": true, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "Relayer transaction retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/transactions/pending": { "delete": { "tags": [ "Relayers" ], "summary": "Deletes all pending transactions for a specific relayer.", "operationId": "deletePendingTransactions", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer pending transactions successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_DeletePendingTransactionsResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Relayer with ID relayer_id not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/relayers/{relayer_id}/transactions/{transaction_id}": { "get": { "tags": [ "Relayers" ], "summary": "Retrieves a specific transaction by its ID.", "operationId": "getTransactionById", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } }, { "name": "transaction_id", "in": "path", "description": "The unique identifier of the transaction", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer transaction retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Not Found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "put": { "tags": [ "Relayers" ], "summary": "Replaces a specific transaction with a new one.", "operationId": "replaceTransaction", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } }, { "name": "transaction_id", "in": "path", "description": "The unique identifier of the transaction", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkTransactionRequest" } } }, "required": true }, "responses": { "200": { "description": "Relayer transaction replaced successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "delete": { "tags": [ "Relayers" ], "summary": "Cancels a specific transaction by its ID.", "operationId": "cancelTransaction", "parameters": [ { "name": "relayer_id", "in": "path", "description": "The unique identifier of the relayer", "required": true, "schema": { "type": "string" } }, { "name": "transaction_id", "in": "path", "description": "The unique identifier of the transaction", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Relayer transaction canceled successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_TransactionResponse" } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Not found", "success": false } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Too Many Requests", "success": false } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/signers": { "get": { "tags": [ "Signers" ], "summary": "Signer routes implementation", "description": "Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs` file\n\nLists all signers with pagination support.", "operationId": "listSigners", "parameters": [ { "name": "page", "in": "query", "description": "Page number for pagination (starts at 1)", "required": false, "schema": { "type": "integer", "minimum": 0 } }, { "name": "per_page", "in": "query", "description": "Number of items per page (default: 10)", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "Signer list retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_Vec_SignerResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "post": { "tags": [ "Signers" ], "summary": "Creates a new signer.", "operationId": "createSigner", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignerCreateRequest" } } }, "required": true }, "responses": { "201": { "description": "Signer created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignerResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "409": { "description": "Signer with this ID already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Signer with this ID already exists", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/api/v1/signers/{signer_id}": { "get": { "tags": [ "Signers" ], "summary": "Retrieves details of a specific signer by ID.", "operationId": "getSigner", "parameters": [ { "name": "signer_id", "in": "path", "description": "Signer ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Signer retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignerResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Signer not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "delete": { "tags": [ "Signers" ], "summary": "Deletes a signer by ID.", "operationId": "deleteSigner", "parameters": [ { "name": "signer_id", "in": "path", "description": "Signer ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Signer deleted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": "Signer deleted successfully", "message": "Signer deleted successfully", "success": true } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Signer not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] }, "patch": { "tags": [ "Signers" ], "summary": "Updates an existing signer.", "operationId": "updateSigner", "parameters": [ { "name": "signer_id", "in": "path", "description": "Signer ID", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignerUpdateRequest" } } }, "required": true }, "responses": { "200": { "description": "Signer updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_SignerResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Bad Request", "success": false } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Unauthorized", "success": false } } } }, "404": { "description": "Signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Signer not found", "success": false } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponse_String" }, "example": { "data": null, "message": "Internal Server Error", "success": false } } } } }, "security": [ { "bearer_auth": [] } ] } }, "/debug/metrics/scrape": { "get": { "tags": [ "Metrics" ], "summary": "Triggers an update of system metrics and returns the result in plain text format.", "description": "# Returns\n\nAn `HttpResponse` containing the updated metrics in plain text, or an error message if the\nupdate fails.", "operationId": "scrape_metrics", "responses": { "200": { "description": "Complete metrics in Prometheus exposition format", "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized" } } } }, "/metrics": { "get": { "tags": [ "Metrics" ], "summary": "Metrics routes implementation", "description": "Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs` file\nReturns a list of all available metric names in JSON format.\n\n# Returns\n\nAn `HttpResponse` containing a JSON array of metric names.", "operationId": "list_metrics", "responses": { "200": { "description": "Metric names list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "401": { "description": "Unauthorized" } } } }, "/metrics/{metric_name}": { "get": { "tags": [ "Metrics" ], "summary": "Returns the details of a specific metric in plain text format.", "description": "# Parameters\n\n- `path`: The name of the metric to retrieve details for.\n\n# Returns\n\nAn `HttpResponse` containing the metric details in plain text, or a 404 error if the metric is\nnot found.", "operationId": "metric_detail", "parameters": [ { "name": "metric_name", "in": "path", "description": "Name of the metric to retrieve, e.g. utopia_transactions_total", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Metric details in Prometheus text format", "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized - missing or invalid API key" }, "403": { "description": "Forbidden - insufficient permissions to access this metric" }, "404": { "description": "Metric not found" }, "429": { "description": "Too many requests - rate limit for metrics access exceeded" } }, "security": [ { "bearer_auth": [ "metrics:read" ] } ] } }, "/v1/health": { "get": { "tags": [ "Health" ], "summary": "Health routes implementation", "description": "Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs` file\nHandles the `/health` endpoint.\n\nReturns an `HttpResponse` with a status of `200 OK` and a body of `\"OK\"`.", "operationId": "health", "responses": { "200": { "description": "Service is healthy", "content": { "text/plain": { "schema": { "type": "string" } } } }, "500": { "description": "Internal server error", "content": { "text/plain": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "ApiResponse_BalanceResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "required": [ "balance", "unit" ], "properties": { "balance": { "type": "integer", "minimum": 0 }, "unit": { "type": "string", "example": "wei" } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_DeletePendingTransactionsResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "description": "Response for delete pending transactions operation", "required": [ "queued_for_cancellation_transaction_ids", "failed_to_queue_transaction_ids", "total_processed" ], "properties": { "failed_to_queue_transaction_ids": { "type": "array", "items": { "type": "string" } }, "queued_for_cancellation_transaction_ids": { "type": "array", "items": { "type": "string" } }, "total_processed": { "type": "integer", "format": "int32", "minimum": 0 } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_NotificationResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "description": "Response structure for notification API endpoints", "required": [ "id", "type", "url", "has_signing_key" ], "properties": { "has_signing_key": { "type": "boolean", "description": "Signing key is hidden in responses for security" }, "id": { "type": "string" }, "type": { "$ref": "#/components/schemas/NotificationType" }, "url": { "type": "string" } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_PluginHandlerError": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "properties": { "code": { "type": [ "string", "null" ] }, "details": {} } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_RelayerResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "description": "Relayer response model for API endpoints", "required": [ "id", "name", "network", "network_type", "paused", "signer_id" ], "properties": { "address": { "type": "string" }, "custom_rpc_urls": { "type": "array", "items": { "$ref": "#/components/schemas/RpcConfig" } }, "disabled_reason": { "$ref": "#/components/schemas/DisabledReason" }, "id": { "type": "string" }, "name": { "type": "string" }, "network": { "type": "string" }, "network_type": { "$ref": "#/components/schemas/RelayerNetworkType" }, "notification_id": { "type": "string" }, "paused": { "type": "boolean" }, "policies": { "$ref": "#/components/schemas/RelayerNetworkPolicyResponse", "description": "Policies without redundant network_type tag - network type is available at top level\nOnly included if user explicitly provided policies (not shown for empty/default policies)" }, "signer_id": { "type": "string" }, "system_disabled": { "type": "boolean" } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_RelayerStatus": { "type": "object", "required": [ "success" ], "properties": { "data": { "oneOf": [ { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "nonce", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "evm" ] }, "nonce": { "type": "string" }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "system_disabled": { "type": "boolean" } } }, { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "sequence_number", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "stellar" ] }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "sequence_number": { "type": "string" }, "system_disabled": { "type": "boolean" } } }, { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "solana" ] }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "system_disabled": { "type": "boolean" } } } ], "description": "Relayer status with runtime information" }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_SignDataResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "oneOf": [ { "$ref": "#/components/schemas/SignDataResponseEvm" }, { "$ref": "#/components/schemas/SignDataResponseSolana" } ] }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_SignTransactionResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "oneOf": [ { "$ref": "#/components/schemas/SignTransactionResponseStellar" }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } } ] }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_SignerResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "object", "required": [ "id", "type", "config" ], "properties": { "config": { "$ref": "#/components/schemas/SignerConfigResponse", "description": "Non-secret configuration details" }, "id": { "type": "string", "description": "The unique identifier of the signer" }, "type": { "$ref": "#/components/schemas/SignerType", "description": "The type of signer (local, aws_kms, google_cloud_kms, vault, etc.)" } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_String": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "string" }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_TransactionResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "oneOf": [ { "$ref": "#/components/schemas/EvmTransactionResponse" }, { "$ref": "#/components/schemas/SolanaTransactionResponse" }, { "$ref": "#/components/schemas/StellarTransactionResponse" } ] }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_Value": { "type": "object", "required": [ "success" ], "properties": { "data": {}, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_Vec_NotificationResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "array", "items": { "type": "object", "description": "Response structure for notification API endpoints", "required": [ "id", "type", "url", "has_signing_key" ], "properties": { "has_signing_key": { "type": "boolean", "description": "Signing key is hidden in responses for security" }, "id": { "type": "string" }, "type": { "$ref": "#/components/schemas/NotificationType" }, "url": { "type": "string" } } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_Vec_RelayerResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "array", "items": { "type": "object", "description": "Relayer response model for API endpoints", "required": [ "id", "name", "network", "network_type", "paused", "signer_id" ], "properties": { "address": { "type": "string" }, "custom_rpc_urls": { "type": "array", "items": { "$ref": "#/components/schemas/RpcConfig" } }, "disabled_reason": { "$ref": "#/components/schemas/DisabledReason" }, "id": { "type": "string" }, "name": { "type": "string" }, "network": { "type": "string" }, "network_type": { "$ref": "#/components/schemas/RelayerNetworkType" }, "notification_id": { "type": "string" }, "paused": { "type": "boolean" }, "policies": { "$ref": "#/components/schemas/RelayerNetworkPolicyResponse", "description": "Policies without redundant network_type tag - network type is available at top level\nOnly included if user explicitly provided policies (not shown for empty/default policies)" }, "signer_id": { "type": "string" }, "system_disabled": { "type": "boolean" } } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_Vec_SignerResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "array", "items": { "type": "object", "required": [ "id", "type", "config" ], "properties": { "config": { "$ref": "#/components/schemas/SignerConfigResponse", "description": "Non-secret configuration details" }, "id": { "type": "string", "description": "The unique identifier of the signer" }, "type": { "$ref": "#/components/schemas/SignerType", "description": "The type of signer (local, aws_kms, google_cloud_kms, vault, etc.)" } } } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "ApiResponse_Vec_TransactionResponse": { "type": "object", "required": [ "success" ], "properties": { "data": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/EvmTransactionResponse" }, { "$ref": "#/components/schemas/SolanaTransactionResponse" }, { "$ref": "#/components/schemas/StellarTransactionResponse" } ] } }, "error": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/PluginMetadata" }, "pagination": { "$ref": "#/components/schemas/PaginationMeta" }, "success": { "type": "boolean" } } }, "AssetSpec": { "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "native" ] } } }, { "type": "object", "required": [ "code", "issuer", "type" ], "properties": { "code": { "type": "string" }, "issuer": { "type": "string" }, "type": { "type": "string", "enum": [ "credit4" ] } } }, { "type": "object", "required": [ "code", "issuer", "type" ], "properties": { "code": { "type": "string" }, "issuer": { "type": "string" }, "type": { "type": "string", "enum": [ "credit12" ] } } } ] }, "AuthSpec": { "oneOf": [ { "type": "object", "description": "No authorization required", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "none" ] } } }, { "type": "object", "description": "Use the transaction source account for authorization", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "source_account" ] } } }, { "type": "object", "description": "Use specific addresses for authorization", "required": [ "signers", "type" ], "properties": { "signers": { "type": "array", "items": { "type": "string" } }, "type": { "type": "string", "enum": [ "addresses" ] } } }, { "type": "object", "description": "Advanced format - provide complete XDR auth entries as base64-encoded strings", "required": [ "entries", "type" ], "properties": { "entries": { "type": "array", "items": { "type": "string" } }, "type": { "type": "string", "enum": [ "xdr" ] } } } ], "description": "Authorization specification for Soroban operations" }, "AwsKmsSignerRequestConfig": { "type": "object", "description": "AWS KMS signer configuration for API requests", "required": [ "region", "key_id" ], "properties": { "key_id": { "type": "string" }, "region": { "type": "string" } }, "additionalProperties": false }, "BalanceResponse": { "type": "object", "required": [ "balance", "unit" ], "properties": { "balance": { "type": "integer", "minimum": 0 }, "unit": { "type": "string", "example": "wei" } } }, "CdpSignerRequestConfig": { "type": "object", "description": "CDP signer configuration for API requests", "required": [ "api_key_id", "api_key_secret", "wallet_secret", "account_address" ], "properties": { "account_address": { "type": "string" }, "api_key_id": { "type": "string" }, "api_key_secret": { "type": "string" }, "wallet_secret": { "type": "string" } }, "additionalProperties": false }, "ContractSource": { "oneOf": [ { "type": "object", "required": [ "address", "from" ], "properties": { "address": { "type": "string" }, "from": { "type": "string", "enum": [ "address" ] } } }, { "type": "object", "required": [ "contract", "from" ], "properties": { "contract": { "type": "string" }, "from": { "type": "string", "enum": [ "contract" ] } } } ], "description": "Represents the source for contract creation" }, "CreateRelayerPolicyRequest": { "oneOf": [ { "type": "object", "required": [ "Evm" ], "properties": { "Evm": { "$ref": "#/components/schemas/RelayerEvmPolicy" } } }, { "type": "object", "required": [ "Solana" ], "properties": { "Solana": { "$ref": "#/components/schemas/RelayerSolanaPolicy" } } }, { "type": "object", "required": [ "Stellar" ], "properties": { "Stellar": { "$ref": "#/components/schemas/RelayerStellarPolicy" } } } ], "description": "Policy types for create requests - deserialized based on network_type from parent request" }, "CreateRelayerRequest": { "type": "object", "description": "Request model for creating a new relayer", "required": [ "name", "network", "paused", "network_type", "signer_id" ], "properties": { "custom_rpc_urls": { "type": "array", "items": { "$ref": "#/components/schemas/RpcConfig" } }, "id": { "type": "string" }, "name": { "type": "string" }, "network": { "type": "string" }, "network_type": { "$ref": "#/components/schemas/RelayerNetworkType" }, "notification_id": { "type": "string" }, "paused": { "type": "boolean" }, "policies": { "$ref": "#/components/schemas/CreateRelayerPolicyRequest", "description": "Policies - will be deserialized based on the network_type field" }, "signer_id": { "type": "string" } }, "additionalProperties": false }, "DeletePendingTransactionsResponse": { "type": "object", "description": "Response for delete pending transactions operation", "required": [ "queued_for_cancellation_transaction_ids", "failed_to_queue_transaction_ids", "total_processed" ], "properties": { "failed_to_queue_transaction_ids": { "type": "array", "items": { "type": "string" } }, "queued_for_cancellation_transaction_ids": { "type": "array", "items": { "type": "string" } }, "total_processed": { "type": "integer", "format": "int32", "minimum": 0 } } }, "DisabledReason": { "oneOf": [ { "type": "object", "description": "Nonce synchronization failed during initialization", "required": [ "details", "type" ], "properties": { "details": { "type": "string", "description": "Nonce synchronization failed during initialization" }, "type": { "type": "string", "enum": [ "NonceSyncFailed" ] } } }, { "type": "object", "description": "RPC endpoint validation failed", "required": [ "details", "type" ], "properties": { "details": { "type": "string", "description": "RPC endpoint validation failed" }, "type": { "type": "string", "enum": [ "RpcValidationFailed" ] } } }, { "type": "object", "description": "Balance check failed (below minimum threshold)", "required": [ "details", "type" ], "properties": { "details": { "type": "string", "description": "Balance check failed (below minimum threshold)" }, "type": { "type": "string", "enum": [ "BalanceCheckFailed" ] } } }, { "type": "object", "description": "Sequence number synchronization failed (Stellar)", "required": [ "details", "type" ], "properties": { "details": { "type": "string", "description": "Sequence number synchronization failed (Stellar)" }, "type": { "type": "string", "enum": [ "SequenceSyncFailed" ] } } }, { "type": "object", "description": "Multiple failures occurred simultaneously", "required": [ "details", "type" ], "properties": { "details": { "type": "array", "items": { "type": "string" }, "description": "Multiple failures occurred simultaneously" }, "type": { "type": "string", "enum": [ "Multiple" ] } } } ], "description": "Reason for a relayer being disabled by the system\nThis represents persistent state, converted from HealthCheckFailure when disabling" }, "EncodedSerializedTransaction": { "type": "string" }, "EvmPolicyResponse": { "type": "object", "description": "EVM policy response model for OpenAPI documentation", "properties": { "eip1559_pricing": { "type": "boolean" }, "gas_limit_estimation": { "type": "boolean" }, "gas_price_cap": { "type": "integer", "minimum": 0 }, "min_balance": { "type": "integer", "minimum": 0 }, "private_transactions": { "type": "boolean" }, "whitelist_receivers": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "EvmRpcRequest": { "oneOf": [ { "type": "object", "required": [ "method", "params" ], "properties": { "method": { "type": "string" }, "params": { "type": "string" } } }, { "type": "object", "required": [ "method", "params" ], "properties": { "method": { "type": "string" }, "params": {} } } ] }, "EvmRpcResult": { "oneOf": [ { "type": "string" }, {} ] }, "EvmTransactionDataSignature": { "type": "object", "required": [ "r", "s", "v", "sig" ], "properties": { "r": { "type": "string" }, "s": { "type": "string" }, "sig": { "type": "string" }, "v": { "type": "integer", "format": "int32", "minimum": 0 } } }, "EvmTransactionRequest": { "type": "object", "required": [ "value" ], "properties": { "data": { "type": "string" }, "gas_limit": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 }, "gas_price": { "type": "integer", "minimum": 0 }, "max_fee_per_gas": { "type": "integer", "minimum": 0 }, "max_priority_fee_per_gas": { "type": "integer", "minimum": 0 }, "speed": { "$ref": "#/components/schemas/Speed" }, "to": { "type": "string" }, "valid_until": { "type": "string" }, "value": { "type": "integer", "format": "u128", "minimum": 0 } } }, "EvmTransactionResponse": { "type": "object", "required": [ "id", "status", "created_at", "value", "from", "relayer_id" ], "properties": { "confirmed_at": { "type": "string" }, "created_at": { "type": "string" }, "data": { "type": "string" }, "from": { "type": "string" }, "gas_limit": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 }, "gas_price": { "type": "string" }, "hash": { "type": "string" }, "id": { "type": "string" }, "max_fee_per_gas": { "type": "string" }, "max_priority_fee_per_gas": { "type": "string" }, "nonce": { "type": "integer", "format": "int64", "minimum": 0 }, "relayer_id": { "type": "string" }, "sent_at": { "type": "string" }, "signature": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/EvmTransactionDataSignature" } ] }, "speed": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/Speed" } ] }, "status": { "$ref": "#/components/schemas/TransactionStatus" }, "status_reason": { "type": [ "string", "null" ] }, "to": { "type": "string" }, "value": { "type": "string" } } }, "FeeEstimateRequestParams": { "type": "object", "required": [ "transaction", "fee_token" ], "properties": { "fee_token": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } }, "additionalProperties": false }, "FeeEstimateResult": { "type": "object", "required": [ "estimated_fee", "conversion_rate" ], "properties": { "conversion_rate": { "type": "string" }, "estimated_fee": { "type": "string" } } }, "GetFeaturesEnabledRequestParams": { "type": "object", "additionalProperties": false }, "GetFeaturesEnabledResult": { "type": "object", "required": [ "features" ], "properties": { "features": { "type": "array", "items": { "type": "string" } } } }, "GetSupportedTokensItem": { "type": "object", "required": [ "mint", "symbol", "decimals" ], "properties": { "conversion_slippage_percentage": { "type": "number", "format": "float" }, "decimals": { "type": "integer", "format": "int32", "minimum": 0 }, "max_allowed_fee": { "type": "integer", "format": "int64", "minimum": 0 }, "mint": { "type": "string" }, "symbol": { "type": "string" } } }, "GetSupportedTokensRequestParams": { "type": "object", "additionalProperties": false }, "GetSupportedTokensResult": { "type": "object", "required": [ "tokens" ], "properties": { "tokens": { "type": "array", "items": { "$ref": "#/components/schemas/GetSupportedTokensItem" } } } }, "GoogleCloudKmsSignerKeyRequestConfig": { "type": "object", "description": "Google Cloud KMS key configuration for API requests", "required": [ "location", "key_ring_id", "key_id", "key_version" ], "properties": { "key_id": { "type": "string" }, "key_ring_id": { "type": "string" }, "key_version": { "type": "integer", "format": "int32", "minimum": 0 }, "location": { "type": "string" } }, "additionalProperties": false }, "GoogleCloudKmsSignerKeyResponseConfig": { "type": "object", "required": [ "location", "key_ring_id", "key_id", "key_version" ], "properties": { "key_id": { "type": "string" }, "key_ring_id": { "type": "string" }, "key_version": { "type": "integer", "format": "int32", "minimum": 0 }, "location": { "type": "string" } } }, "GoogleCloudKmsSignerRequestConfig": { "type": "object", "description": "Google Cloud KMS signer configuration for API requests", "required": [ "service_account", "key" ], "properties": { "key": { "$ref": "#/components/schemas/GoogleCloudKmsSignerKeyRequestConfig" }, "service_account": { "$ref": "#/components/schemas/GoogleCloudKmsSignerServiceAccountRequestConfig" } }, "additionalProperties": false }, "GoogleCloudKmsSignerServiceAccountRequestConfig": { "type": "object", "description": "Google Cloud KMS service account configuration for API requests", "required": [ "private_key", "private_key_id", "project_id", "client_email", "client_id", "auth_uri", "token_uri", "auth_provider_x509_cert_url", "client_x509_cert_url", "universe_domain" ], "properties": { "auth_provider_x509_cert_url": { "type": "string" }, "auth_uri": { "type": "string" }, "client_email": { "type": "string" }, "client_id": { "type": "string" }, "client_x509_cert_url": { "type": "string" }, "private_key": { "type": "string" }, "private_key_id": { "type": "string" }, "project_id": { "type": "string" }, "token_uri": { "type": "string" }, "universe_domain": { "type": "string" } }, "additionalProperties": false }, "GoogleCloudKmsSignerServiceAccountResponseConfig": { "type": "object", "required": [ "project_id", "client_id", "auth_uri", "token_uri", "auth_provider_x509_cert_url", "client_x509_cert_url", "universe_domain" ], "properties": { "auth_provider_x509_cert_url": { "type": "string" }, "auth_uri": { "type": "string" }, "client_id": { "type": "string" }, "client_x509_cert_url": { "type": "string" }, "project_id": { "type": "string" }, "token_uri": { "type": "string" }, "universe_domain": { "type": "string" } } }, "JsonRpcError": { "type": "object", "description": "JSON-RPC 2.0 Error structure.\n\nRepresents an error in a JSON-RPC response.", "required": [ "code", "message", "description" ], "properties": { "code": { "type": "integer", "format": "int32" }, "description": { "type": "string" }, "message": { "type": "string" } } }, "JsonRpcId": { "oneOf": [ { "type": "string", "description": "String identifier" }, { "type": "integer", "format": "int64", "description": "Numeric identifier (should not contain fractional parts per spec)" } ], "description": "Represents a JSON-RPC 2.0 ID value.\nAccording to the spec, the ID can be a String or Number.\nWhen used in `Option`: Some(id) = actual ID, None = explicit null." }, "JsonRpcRequest_NetworkRpcRequest": { "allOf": [ { "oneOf": [ { "$ref": "#/components/schemas/SolanaRpcRequest" }, { "$ref": "#/components/schemas/StellarRpcRequest" }, { "$ref": "#/components/schemas/EvmRpcRequest" } ] }, { "type": "object", "required": [ "jsonrpc" ], "properties": { "id": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/JsonRpcId" } ] }, "jsonrpc": { "type": "string" } } } ], "description": "JSON-RPC 2.0 Request structure.\n\nRepresents a JSON-RPC request with proper ID handling:\n- `Some(JsonRpcId)` = request with ID\n- `None` = explicit null ID or notification" }, "JsonRpcResponse_NetworkRpcResult": { "type": "object", "description": "JSON-RPC 2.0 Response structure.\n\nRepresents a JSON-RPC response that can contain either a result or an error.", "required": [ "jsonrpc" ], "properties": { "error": { "$ref": "#/components/schemas/JsonRpcError" }, "id": { "$ref": "#/components/schemas/JsonRpcId" }, "jsonrpc": { "type": "string" }, "result": { "oneOf": [ { "$ref": "#/components/schemas/SolanaRpcResult" }, { "$ref": "#/components/schemas/StellarRpcResult" }, { "$ref": "#/components/schemas/EvmRpcResult" } ] } } }, "JupiterSwapOptions": { "type": "object", "description": "Jupiter swap options", "properties": { "dynamic_compute_unit_limit": { "type": "boolean" }, "priority_fee_max_lamports": { "type": "integer", "format": "int64", "description": "Maximum priority fee (in lamports) for a transaction. Optional.", "minimum": 0 }, "priority_level": { "type": "string", "description": "Priority. Optional." } }, "additionalProperties": false }, "LocalSignerRequestConfig": { "type": "object", "description": "Local signer configuration for API requests", "required": [ "key" ], "properties": { "key": { "type": "string" } }, "additionalProperties": false }, "LogEntry": { "type": "object", "required": [ "level", "message" ], "properties": { "level": { "$ref": "#/components/schemas/LogLevel" }, "message": { "type": "string" } } }, "LogLevel": { "type": "string", "enum": [ "log", "info", "error", "warn", "debug", "result" ] }, "MemoSpec": { "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "none" ] } } }, { "type": "object", "required": [ "value", "type" ], "properties": { "type": { "type": "string", "enum": [ "text" ] }, "value": { "type": "string" } } }, { "type": "object", "required": [ "value", "type" ], "properties": { "type": { "type": "string", "enum": [ "id" ] }, "value": { "type": "integer", "format": "int64", "minimum": 0 } } }, { "type": "object", "required": [ "value", "type" ], "properties": { "type": { "type": "string", "enum": [ "hash" ] }, "value": { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } } } }, { "type": "object", "required": [ "value", "type" ], "properties": { "type": { "type": "string", "enum": [ "return" ] }, "value": { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } } } } ] }, "NetworkPolicyResponse": { "allOf": [ { "$ref": "#/components/schemas/RelayerNetworkPolicy" } ], "description": "Network policy response models for OpenAPI documentation" }, "NetworkRpcRequest": { "oneOf": [ { "$ref": "#/components/schemas/SolanaRpcRequest" }, { "$ref": "#/components/schemas/StellarRpcRequest" }, { "$ref": "#/components/schemas/EvmRpcRequest" } ] }, "NetworkRpcResult": { "oneOf": [ { "$ref": "#/components/schemas/SolanaRpcResult" }, { "$ref": "#/components/schemas/StellarRpcResult" }, { "$ref": "#/components/schemas/EvmRpcResult" } ] }, "NetworkTransactionRequest": { "oneOf": [ { "$ref": "#/components/schemas/EvmTransactionRequest" }, { "$ref": "#/components/schemas/SolanaTransactionRequest" }, { "$ref": "#/components/schemas/StellarTransactionRequest" } ] }, "NotificationCreateRequest": { "type": "object", "description": "Request structure for creating a new notification", "required": [ "url" ], "properties": { "id": { "type": "string" }, "signing_key": { "type": "string", "description": "Optional signing key for securing webhook notifications" }, "type": { "$ref": "#/components/schemas/NotificationType" }, "url": { "type": "string" } }, "additionalProperties": false }, "NotificationResponse": { "type": "object", "description": "Response structure for notification API endpoints", "required": [ "id", "type", "url", "has_signing_key" ], "properties": { "has_signing_key": { "type": "boolean", "description": "Signing key is hidden in responses for security" }, "id": { "type": "string" }, "type": { "$ref": "#/components/schemas/NotificationType" }, "url": { "type": "string" } } }, "NotificationType": { "type": "string", "description": "Notification type enum used by both config file and API", "enum": [ "webhook" ] }, "NotificationUpdateRequest": { "type": "object", "description": "Request structure for updating an existing notification", "properties": { "signing_key": { "type": [ "string", "null" ], "description": "Optional signing key for securing webhook notifications.\n- None: don't change the existing signing key\n- Some(\"\"): remove the signing key\n- Some(\"key\"): set the signing key to the provided value" }, "type": { "$ref": "#/components/schemas/NotificationType" }, "url": { "type": "string" } }, "additionalProperties": false }, "OperationSpec": { "oneOf": [ { "type": "object", "required": [ "destination", "amount", "asset", "type" ], "properties": { "amount": { "type": "integer", "format": "int64" }, "asset": { "$ref": "#/components/schemas/AssetSpec" }, "destination": { "type": "string" }, "type": { "type": "string", "enum": [ "payment" ] } } }, { "type": "object", "required": [ "contract_address", "function_name", "args", "type" ], "properties": { "args": { "type": "array", "items": {} }, "auth": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AuthSpec" } ] }, "contract_address": { "type": "string" }, "function_name": { "type": "string" }, "type": { "type": "string", "enum": [ "invoke_contract" ] } } }, { "type": "object", "required": [ "source", "wasm_hash", "type" ], "properties": { "auth": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AuthSpec" } ] }, "constructor_args": { "type": [ "array", "null" ], "items": {} }, "salt": { "type": [ "string", "null" ] }, "source": { "$ref": "#/components/schemas/ContractSource" }, "type": { "type": "string", "enum": [ "create_contract" ] }, "wasm_hash": { "type": "string" } } }, { "type": "object", "required": [ "wasm", "type" ], "properties": { "auth": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AuthSpec" } ] }, "type": { "type": "string", "enum": [ "upload_wasm" ] }, "wasm": { "$ref": "#/components/schemas/WasmSource" } } } ] }, "PaginationMeta": { "type": "object", "required": [ "current_page", "per_page", "total_items" ], "properties": { "current_page": { "type": "integer", "format": "int32", "minimum": 0 }, "per_page": { "type": "integer", "format": "int32", "minimum": 0 }, "total_items": { "type": "integer", "format": "int64", "minimum": 0 } } }, "PluginCallRequest": { "type": "object", "required": [ "params" ], "properties": { "params": { "description": "Plugin parameters" } } }, "PluginHandlerError": { "type": "object", "properties": { "code": { "type": [ "string", "null" ] }, "details": {} } }, "PluginMetadata": { "type": "object", "properties": { "logs": { "type": [ "array", "null" ], "items": { "$ref": "#/components/schemas/LogEntry" } }, "traces": { "type": [ "array", "null" ], "items": {} } } }, "PrepareTransactionRequestParams": { "type": "object", "required": [ "transaction", "fee_token" ], "properties": { "fee_token": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } }, "additionalProperties": false }, "PrepareTransactionResult": { "type": "object", "required": [ "transaction", "fee_in_spl", "fee_in_lamports", "fee_token", "valid_until_blockheight" ], "properties": { "fee_in_lamports": { "type": "string" }, "fee_in_spl": { "type": "string" }, "fee_token": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" }, "valid_until_blockheight": { "type": "integer", "format": "int64", "minimum": 0 } } }, "RelayerEvmPolicy": { "type": "object", "description": "EVM-specific relayer policy configuration", "properties": { "eip1559_pricing": { "type": [ "boolean", "null" ] }, "gas_limit_estimation": { "type": [ "boolean", "null" ] }, "gas_price_cap": { "type": [ "integer", "null" ], "minimum": 0 }, "min_balance": { "type": [ "integer", "null" ], "minimum": 0 }, "private_transactions": { "type": [ "boolean", "null" ] }, "whitelist_receivers": { "type": [ "array", "null" ], "items": { "type": "string" } } }, "additionalProperties": false }, "RelayerNetworkPolicy": { "oneOf": [ { "allOf": [ { "$ref": "#/components/schemas/RelayerEvmPolicy" }, { "type": "object", "required": [ "network_type" ], "properties": { "network_type": { "type": "string", "enum": [ "evm" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/RelayerSolanaPolicy" }, { "type": "object", "required": [ "network_type" ], "properties": { "network_type": { "type": "string", "enum": [ "solana" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/RelayerStellarPolicy" }, { "type": "object", "required": [ "network_type" ], "properties": { "network_type": { "type": "string", "enum": [ "stellar" ] } } } ] } ], "description": "Network-specific policy for relayers" }, "RelayerNetworkPolicyResponse": { "oneOf": [ { "$ref": "#/components/schemas/EvmPolicyResponse" }, { "$ref": "#/components/schemas/StellarPolicyResponse" }, { "$ref": "#/components/schemas/SolanaPolicyResponse" } ], "description": "Policy types for responses - these don't include network_type tags\nsince the network_type is already available at the top level of RelayerResponse" }, "RelayerNetworkType": { "type": "string", "description": "Network type enum for relayers", "enum": [ "evm", "solana", "stellar" ] }, "RelayerResponse": { "type": "object", "description": "Relayer response model for API endpoints", "required": [ "id", "name", "network", "network_type", "paused", "signer_id" ], "properties": { "address": { "type": "string" }, "custom_rpc_urls": { "type": "array", "items": { "$ref": "#/components/schemas/RpcConfig" } }, "disabled_reason": { "$ref": "#/components/schemas/DisabledReason" }, "id": { "type": "string" }, "name": { "type": "string" }, "network": { "type": "string" }, "network_type": { "$ref": "#/components/schemas/RelayerNetworkType" }, "notification_id": { "type": "string" }, "paused": { "type": "boolean" }, "policies": { "$ref": "#/components/schemas/RelayerNetworkPolicyResponse", "description": "Policies without redundant network_type tag - network type is available at top level\nOnly included if user explicitly provided policies (not shown for empty/default policies)" }, "signer_id": { "type": "string" }, "system_disabled": { "type": "boolean" } } }, "RelayerSolanaPolicy": { "type": "object", "description": "Solana-specific relayer policy configuration", "properties": { "allowed_accounts": { "type": [ "array", "null" ], "items": { "type": "string" } }, "allowed_programs": { "type": [ "array", "null" ], "items": { "type": "string" } }, "allowed_tokens": { "type": [ "array", "null" ], "items": { "$ref": "#/components/schemas/SolanaAllowedTokensPolicy" } }, "disallowed_accounts": { "type": [ "array", "null" ], "items": { "type": "string" } }, "fee_margin_percentage": { "type": [ "number", "null" ], "format": "float" }, "fee_payment_strategy": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/SolanaFeePaymentStrategy" } ] }, "max_allowed_fee_lamports": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 }, "max_signatures": { "type": [ "integer", "null" ], "format": "int32", "minimum": 0 }, "max_tx_data_size": { "type": [ "integer", "null" ], "format": "int32", "minimum": 0 }, "min_balance": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 }, "swap_config": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/RelayerSolanaSwapConfig" } ] } }, "additionalProperties": false }, "RelayerSolanaSwapConfig": { "type": "object", "description": "Solana swap policy configuration", "properties": { "cron_schedule": { "type": "string", "description": "Cron schedule for executing token swap logic to keep relayer funded. Optional." }, "jupiter_swap_options": { "$ref": "#/components/schemas/JupiterSwapOptions", "description": "Swap options for JupiterSwap strategy. Optional." }, "min_balance_threshold": { "type": "integer", "format": "int64", "description": "Min sol balance to execute token swap logic to keep relayer funded. Optional.", "minimum": 0 }, "strategy": { "$ref": "#/components/schemas/SolanaSwapStrategy", "description": "DEX strategy to use for token swaps." } }, "additionalProperties": false }, "RelayerStatus": { "oneOf": [ { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "nonce", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "evm" ] }, "nonce": { "type": "string" }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "system_disabled": { "type": "boolean" } } }, { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "sequence_number", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "stellar" ] }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "sequence_number": { "type": "string" }, "system_disabled": { "type": "boolean" } } }, { "type": "object", "required": [ "balance", "pending_transactions_count", "system_disabled", "paused", "network_type" ], "properties": { "balance": { "type": "string" }, "last_confirmed_transaction_timestamp": { "type": [ "string", "null" ] }, "network_type": { "type": "string", "enum": [ "solana" ] }, "paused": { "type": "boolean" }, "pending_transactions_count": { "type": "integer", "format": "int64", "minimum": 0 }, "system_disabled": { "type": "boolean" } } } ], "description": "Relayer status with runtime information" }, "RelayerStellarPolicy": { "type": "object", "description": "Stellar-specific relayer policy configuration", "properties": { "concurrent_transactions": { "type": [ "boolean", "null" ] }, "max_fee": { "type": [ "integer", "null" ], "format": "int32", "minimum": 0 }, "min_balance": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 }, "timeout_seconds": { "type": [ "integer", "null" ], "format": "int64", "minimum": 0 } }, "additionalProperties": false }, "RpcConfig": { "type": "object", "description": "Configuration for an RPC endpoint.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The RPC endpoint URL." }, "weight": { "type": "integer", "format": "int32", "description": "The weight of this endpoint in the weighted round-robin selection.\nDefaults to DEFAULT_RPC_WEIGHT (100). Should be between 0 and 100.", "minimum": 0 } } }, "SignAndSendTransactionRequestParams": { "type": "object", "required": [ "transaction" ], "properties": { "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } }, "additionalProperties": false }, "SignAndSendTransactionResult": { "type": "object", "required": [ "transaction", "signature", "id" ], "properties": { "id": { "type": "string" }, "signature": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } } }, "SignDataRequest": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } }, "SignDataResponse": { "oneOf": [ { "$ref": "#/components/schemas/SignDataResponseEvm" }, { "$ref": "#/components/schemas/SignDataResponseSolana" } ] }, "SignDataResponseEvm": { "type": "object", "required": [ "r", "s", "v", "sig" ], "properties": { "r": { "type": "string" }, "s": { "type": "string" }, "sig": { "type": "string" }, "v": { "type": "integer", "format": "int32", "minimum": 0 } } }, "SignDataResponseSolana": { "type": "object", "required": [ "signature", "public_key" ], "properties": { "public_key": { "type": "string" }, "signature": { "type": "string" } } }, "SignTransactionRequest": { "oneOf": [ { "$ref": "#/components/schemas/SignTransactionRequestStellar" }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } } ] }, "SignTransactionRequestParams": { "type": "object", "required": [ "transaction" ], "properties": { "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } }, "additionalProperties": false }, "SignTransactionRequestStellar": { "type": "object", "required": [ "unsigned_xdr" ], "properties": { "unsigned_xdr": { "type": "string" } } }, "SignTransactionResponse": { "oneOf": [ { "$ref": "#/components/schemas/SignTransactionResponseStellar" }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } }, { "type": "array", "items": { "type": "integer", "format": "int32", "minimum": 0 } } ] }, "SignTransactionResponseStellar": { "type": "object", "required": [ "signedXdr", "signature" ], "properties": { "signature": { "type": "string" }, "signedXdr": { "type": "string" } } }, "SignTransactionResult": { "type": "object", "required": [ "transaction", "signature" ], "properties": { "signature": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } } }, "SignTypedDataRequest": { "type": "object", "required": [ "domain_separator", "hash_struct_message" ], "properties": { "domain_separator": { "type": "string" }, "hash_struct_message": { "type": "string" } } }, "SignerConfigRequest": { "oneOf": [ { "$ref": "#/components/schemas/LocalSignerRequestConfig" }, { "$ref": "#/components/schemas/AwsKmsSignerRequestConfig" }, { "$ref": "#/components/schemas/VaultSignerRequestConfig" }, { "$ref": "#/components/schemas/VaultTransitSignerRequestConfig" }, { "$ref": "#/components/schemas/TurnkeySignerRequestConfig" }, { "$ref": "#/components/schemas/CdpSignerRequestConfig" }, { "$ref": "#/components/schemas/GoogleCloudKmsSignerRequestConfig" } ], "description": "Signer configuration enum for API requests (without type discriminator)" }, "SignerConfigResponse": { "oneOf": [ { "type": "object", "required": [ "address", "key_name" ], "properties": { "address": { "type": "string" }, "key_name": { "type": "string" }, "mount_point": { "type": [ "string", "null" ] }, "namespace": { "type": [ "string", "null" ] } } }, { "type": "object", "required": [ "key_name", "address", "pubkey" ], "properties": { "address": { "type": "string" }, "key_name": { "type": "string" }, "mount_point": { "type": [ "string", "null" ] }, "namespace": { "type": [ "string", "null" ] }, "pubkey": { "type": "string" } } }, { "type": "object", "required": [ "key_id" ], "properties": { "key_id": { "type": "string" }, "region": { "type": [ "string", "null" ] } } }, { "type": "object", "required": [ "api_public_key", "organization_id", "private_key_id", "public_key" ], "properties": { "api_public_key": { "type": "string" }, "organization_id": { "type": "string" }, "private_key_id": { "type": "string" }, "public_key": { "type": "string" } } }, { "type": "object", "required": [ "api_key_id", "account_address" ], "properties": { "account_address": { "type": "string" }, "api_key_id": { "type": "string" } } }, { "type": "object", "required": [ "service_account", "key" ], "properties": { "key": { "$ref": "#/components/schemas/GoogleCloudKmsSignerKeyResponseConfig" }, "service_account": { "$ref": "#/components/schemas/GoogleCloudKmsSignerServiceAccountResponseConfig" } } }, { "type": "object" } ], "description": "Signer configuration response\nDoes not include sensitive information like private keys" }, "SignerCreateRequest": { "type": "object", "description": "Request model for creating a new signer", "required": [ "type", "config" ], "properties": { "config": { "$ref": "#/components/schemas/SignerConfigRequest", "description": "The signer configuration" }, "id": { "type": "string", "description": "Optional ID - if not provided, a UUID will be generated" }, "type": { "$ref": "#/components/schemas/SignerTypeRequest", "description": "The type of signer" } }, "additionalProperties": false }, "SignerResponse": { "type": "object", "required": [ "id", "type", "config" ], "properties": { "config": { "$ref": "#/components/schemas/SignerConfigResponse", "description": "Non-secret configuration details" }, "id": { "type": "string", "description": "The unique identifier of the signer" }, "type": { "$ref": "#/components/schemas/SignerType", "description": "The type of signer (local, aws_kms, google_cloud_kms, vault, etc.)" } } }, "SignerType": { "type": "string", "description": "Signer type enum used for validation and API responses", "enum": [ "local", "aws_kms", "google_cloud_kms", "vault", "vault_transit", "turnkey", "cdp" ] }, "SignerTypeRequest": { "type": "string", "description": "Signer type enum for API requests", "enum": [ "plain", "aws_kms", "vault", "vault_transit", "turnkey", "cdp", "google_cloud_kms" ] }, "SignerUpdateRequest": { "type": "object", "description": "Request model for updating an existing signer\nAt the moment, we don't allow updating signers", "additionalProperties": false }, "SolanaAllowedTokensPolicy": { "type": "object", "description": "Configuration for allowed token handling on Solana", "required": [ "mint" ], "properties": { "decimals": { "type": "integer", "format": "int32", "minimum": 0 }, "max_allowed_fee": { "type": "integer", "format": "int64", "minimum": 0 }, "mint": { "type": "string" }, "swap_config": { "$ref": "#/components/schemas/SolanaAllowedTokensSwapConfig" }, "symbol": { "type": "string" } }, "additionalProperties": false }, "SolanaAllowedTokensSwapConfig": { "type": "object", "description": "Solana token swap configuration", "properties": { "max_amount": { "type": "integer", "format": "int64", "description": "Maximum amount of tokens to swap. Optional.", "minimum": 0 }, "min_amount": { "type": "integer", "format": "int64", "description": "Minimum amount of tokens to swap. Optional.", "minimum": 0 }, "retain_min_amount": { "type": "integer", "format": "int64", "description": "Minimum amount of tokens to retain after swap. Optional.", "minimum": 0 }, "slippage_percentage": { "type": "number", "format": "float", "description": "Conversion slippage percentage for token. Optional." } }, "additionalProperties": false }, "SolanaFeePaymentStrategy": { "type": "string", "description": "Solana fee payment strategy", "enum": [ "user", "relayer" ] }, "SolanaPolicyResponse": { "type": "object", "description": "Solana policy response model for OpenAPI documentation", "properties": { "allowed_accounts": { "type": "array", "items": { "type": "string" } }, "allowed_programs": { "type": "array", "items": { "type": "string" } }, "allowed_tokens": { "type": "array", "items": { "$ref": "#/components/schemas/SolanaAllowedTokensPolicy" } }, "disallowed_accounts": { "type": "array", "items": { "type": "string" } }, "fee_margin_percentage": { "type": "number", "format": "float" }, "fee_payment_strategy": { "$ref": "#/components/schemas/SolanaFeePaymentStrategy" }, "max_allowed_fee_lamports": { "type": "integer", "format": "int64", "minimum": 0 }, "max_signatures": { "type": "integer", "format": "int32", "minimum": 0 }, "max_tx_data_size": { "type": "integer", "format": "int32", "minimum": 0 }, "min_balance": { "type": "integer", "format": "int64", "minimum": 0 }, "swap_config": { "$ref": "#/components/schemas/RelayerSolanaSwapConfig" } }, "additionalProperties": false }, "SolanaRpcRequest": { "oneOf": [ { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "feeEstimate" ] }, "params": { "$ref": "#/components/schemas/FeeEstimateRequestParams" } }, "example": "feeEstimate" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "transferTransaction" ] }, "params": { "$ref": "#/components/schemas/TransferTransactionRequestParams" } }, "example": "transferTransaction" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "prepareTransaction" ] }, "params": { "$ref": "#/components/schemas/PrepareTransactionRequestParams" } }, "example": "prepareTransaction" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "signTransaction" ] }, "params": { "$ref": "#/components/schemas/SignTransactionRequestParams" } }, "example": "signTransaction" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "signAndSendTransaction" ] }, "params": { "$ref": "#/components/schemas/SignAndSendTransactionRequestParams" } }, "example": "signAndSendTransaction" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "getSupportedTokens" ] }, "params": { "$ref": "#/components/schemas/GetSupportedTokensRequestParams" } }, "example": "getSupportedTokens" }, { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "getFeaturesEnabled" ] }, "params": { "$ref": "#/components/schemas/GetFeaturesEnabledRequestParams" } }, "example": "getFeaturesEnabled" } ] }, "SolanaRpcResult": { "oneOf": [ { "allOf": [ { "$ref": "#/components/schemas/FeeEstimateResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "feeEstimate" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/TransferTransactionResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "transferTransaction" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/PrepareTransactionResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "prepareTransaction" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/SignTransactionResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "signTransaction" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/SignAndSendTransactionResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "signAndSendTransaction" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/GetSupportedTokensResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "getSupportedTokens" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/GetFeaturesEnabledResult" }, { "type": "object", "required": [ "method" ], "properties": { "method": { "type": "string", "enum": [ "getFeaturesEnabled" ] } } } ] } ] }, "SolanaSwapStrategy": { "type": "string", "description": "Solana swap strategy", "enum": [ "jupiter-swap", "jupiter-ultra", "noop" ] }, "SolanaTransactionRequest": { "type": "object", "required": [ "transaction" ], "properties": { "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" } } }, "SolanaTransactionResponse": { "type": "object", "required": [ "id", "status", "created_at", "transaction" ], "properties": { "confirmed_at": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "string" }, "sent_at": { "type": "string" }, "signature": { "type": "string" }, "status": { "$ref": "#/components/schemas/TransactionStatus" }, "status_reason": { "type": [ "string", "null" ] }, "transaction": { "type": "string" } } }, "Speed": { "type": "string", "enum": [ "fastest", "fast", "average", "safeLow" ] }, "StellarPolicyResponse": { "type": "object", "description": "Stellar policy response model for OpenAPI documentation", "properties": { "concurrent_transactions": { "type": "boolean" }, "max_fee": { "type": "integer", "format": "int32", "minimum": 0 }, "min_balance": { "type": "integer", "format": "int64", "minimum": 0 }, "timeout_seconds": { "type": "integer", "format": "int64", "minimum": 0 } }, "additionalProperties": false }, "StellarRpcRequest": { "oneOf": [ { "type": "object", "required": [ "params", "method" ], "properties": { "method": { "type": "string", "enum": [ "GenericRpcRequest" ] }, "params": { "type": "string" } } } ] }, "StellarRpcResult": { "oneOf": [ { "type": "string" } ] }, "StellarTransactionRequest": { "type": "object", "required": [ "network" ], "properties": { "fee_bump": { "type": [ "boolean", "null" ], "description": "Explicitly request fee-bump wrapper\nOnly valid when transaction_xdr contains a signed transaction" }, "max_fee": { "type": [ "integer", "null" ], "format": "int64", "description": "Maximum fee in stroops (defaults to 0.1 XLM = 1,000,000 stroops)" }, "memo": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/MemoSpec" } ] }, "network": { "type": "string" }, "operations": { "type": [ "array", "null" ], "items": { "$ref": "#/components/schemas/OperationSpec" } }, "source_account": { "type": [ "string", "null" ] }, "transaction_xdr": { "type": [ "string", "null" ], "description": "Pre-built transaction XDR (base64 encoded, signed or unsigned)\nMutually exclusive with operations field" }, "valid_until": { "type": [ "string", "null" ] } } }, "StellarTransactionResponse": { "type": "object", "required": [ "id", "status", "created_at", "source_account", "fee", "sequence_number", "relayer_id" ], "properties": { "confirmed_at": { "type": "string" }, "created_at": { "type": "string" }, "fee": { "type": "integer", "format": "int32", "minimum": 0 }, "hash": { "type": "string" }, "id": { "type": "string" }, "relayer_id": { "type": "string" }, "sent_at": { "type": "string" }, "sequence_number": { "type": "integer", "format": "int64" }, "source_account": { "type": "string" }, "status": { "$ref": "#/components/schemas/TransactionStatus" }, "status_reason": { "type": [ "string", "null" ] } } }, "TransactionResponse": { "oneOf": [ { "$ref": "#/components/schemas/EvmTransactionResponse" }, { "$ref": "#/components/schemas/SolanaTransactionResponse" }, { "$ref": "#/components/schemas/StellarTransactionResponse" } ] }, "TransactionStatus": { "type": "string", "enum": [ "canceled", "pending", "sent", "submitted", "mined", "confirmed", "failed", "expired" ] }, "TransferTransactionRequestParams": { "type": "object", "required": [ "amount", "token", "source", "destination" ], "properties": { "amount": { "type": "integer", "format": "int64", "minimum": 0 }, "destination": { "type": "string" }, "source": { "type": "string" }, "token": { "type": "string" } }, "additionalProperties": false }, "TransferTransactionResult": { "type": "object", "required": [ "transaction", "fee_in_spl", "fee_in_lamports", "fee_token", "valid_until_blockheight" ], "properties": { "fee_in_lamports": { "type": "string" }, "fee_in_spl": { "type": "string" }, "fee_token": { "type": "string" }, "transaction": { "$ref": "#/components/schemas/EncodedSerializedTransaction" }, "valid_until_blockheight": { "type": "integer", "format": "int64", "minimum": 0 } } }, "TurnkeySignerRequestConfig": { "type": "object", "description": "Turnkey signer configuration for API requests", "required": [ "api_public_key", "api_private_key", "organization_id", "private_key_id", "public_key" ], "properties": { "api_private_key": { "type": "string" }, "api_public_key": { "type": "string" }, "organization_id": { "type": "string" }, "private_key_id": { "type": "string" }, "public_key": { "type": "string" } }, "additionalProperties": false }, "UpdateRelayerRequest": { "type": "object", "properties": { "custom_rpc_urls": { "type": [ "array", "null" ], "items": { "$ref": "#/components/schemas/RpcConfig" } }, "name": { "type": [ "string", "null" ] }, "notification_id": { "type": [ "string", "null" ] }, "paused": { "type": "boolean" }, "policies": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CreateRelayerPolicyRequest", "description": "Raw policy JSON - will be validated against relayer's network type during application" } ] } }, "additionalProperties": false }, "VaultSignerRequestConfig": { "type": "object", "description": "Vault signer configuration for API requests", "required": [ "address", "role_id", "secret_id", "key_name" ], "properties": { "address": { "type": "string" }, "key_name": { "type": "string" }, "mount_point": { "type": "string" }, "namespace": { "type": "string" }, "role_id": { "type": "string" }, "secret_id": { "type": "string" } }, "additionalProperties": false }, "VaultTransitSignerRequestConfig": { "type": "object", "description": "Vault Transit signer configuration for API requests", "required": [ "key_name", "address", "role_id", "secret_id", "pubkey" ], "properties": { "address": { "type": "string" }, "key_name": { "type": "string" }, "mount_point": { "type": "string" }, "namespace": { "type": "string" }, "pubkey": { "type": "string" }, "role_id": { "type": "string" }, "secret_id": { "type": "string" } }, "additionalProperties": false }, "WasmSource": { "oneOf": [ { "type": "object", "required": [ "hex" ], "properties": { "hex": { "type": "string" } } }, { "type": "object", "required": [ "base64" ], "properties": { "base64": { "type": "string" } } } ], "description": "Represents different ways to provide WASM code" } }, "securitySchemes": { "bearer_auth": { "type": "http", "scheme": "bearer" } } }, "tags": [ { "name": "Relayers", "description": "Relayers are the core components of the OpenZeppelin Relayer API. They are responsible for executing transactions on behalf of users and providing a secure and reliable way to interact with the blockchain." }, { "name": "Plugins", "description": "Plugins are TypeScript functions that can be used to extend the OpenZeppelin Relayer API functionality." }, { "name": "Notifications", "description": "Notifications are responsible for showing the notifications related to the relayers." }, { "name": "Signers", "description": "Signers are responsible for signing the transactions related to the relayers." }, { "name": "Metrics", "description": "Metrics are responsible for showing the metrics related to the relayers." }, { "name": "Health", "description": "Health is responsible for showing the health of the relayers." } ] }