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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions docs/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Apis/HealthApi.md
Apis/MetricsApi.md
Apis/NetworksApi.md
Apis/NotificationsApi.md
Apis/PluginsApi.md
Apis/RelayersApi.md
Expand All @@ -8,10 +9,16 @@ Models/ApiResponse_BalanceResponse.md
Models/ApiResponse_BalanceResponse_data.md
Models/ApiResponse_DeletePendingTransactionsResponse.md
Models/ApiResponse_DeletePendingTransactionsResponse_data.md
Models/ApiResponse_NetworkResponse.md
Models/ApiResponse_NetworkResponse_data.md
Models/ApiResponse_NotificationResponse.md
Models/ApiResponse_NotificationResponse_data.md
Models/ApiResponse_PaginatedResult_PluginModel.md
Models/ApiResponse_PaginatedResult_PluginModel_data.md
Models/ApiResponse_PaginatedResult_PluginModel_data_items_inner.md
Models/ApiResponse_PluginHandlerError.md
Models/ApiResponse_PluginHandlerError_data.md
Models/ApiResponse_PluginModel.md
Models/ApiResponse_RelayerResponse.md
Models/ApiResponse_RelayerResponse_data.md
Models/ApiResponse_RelayerStatus.md
Expand All @@ -33,6 +40,7 @@ Models/ApiResponse_String.md
Models/ApiResponse_TransactionResponse.md
Models/ApiResponse_TransactionResponse_data.md
Models/ApiResponse_Value.md
Models/ApiResponse_Vec_NetworkResponse.md
Models/ApiResponse_Vec_NotificationResponse.md
Models/ApiResponse_Vec_RelayerResponse.md
Models/ApiResponse_Vec_SignerResponse.md
Expand All @@ -49,6 +57,8 @@ Models/AuthSpec_oneOf_3.md
Models/AwsKmsSignerRequestConfig.md
Models/BalanceResponse.md
Models/CdpSignerRequestConfig.md
Models/ComponentStatus.md
Models/Components.md
Models/ContractSource.md
Models/ContractSource_oneOf.md
Models/ContractSource_oneOf_1.md
Expand Down Expand Up @@ -85,13 +95,15 @@ Models/JupiterSwapOptions.md
Models/LocalSignerRequestConfig.md
Models/LogEntry.md
Models/LogLevel.md
Models/MaskedRpcConfig.md
Models/MemoSpec.md
Models/MemoSpec_oneOf.md
Models/MemoSpec_oneOf_1.md
Models/MemoSpec_oneOf_2.md
Models/MemoSpec_oneOf_3.md
Models/MemoSpec_oneOf_4.md
Models/NetworkPolicyResponse.md
Models/NetworkResponse.md
Models/NetworkRpcRequest.md
Models/NetworkRpcResult.md
Models/NetworkTransactionRequest.md
Expand All @@ -107,7 +119,13 @@ Models/OperationSpec_oneOf_3.md
Models/PaginationMeta.md
Models/PluginCallRequest.md
Models/PluginHandlerError.md
Models/PluginHealth.md
Models/PluginMetadata.md
Models/PluginModel.md
Models/PoolStatus.md
Models/QueueHealth.md
Models/ReadinessResponse.md
Models/RedisHealth.md
Models/RelayerEvmPolicy.md
Models/RelayerNetworkPolicy.md
Models/RelayerNetworkPolicyResponse.md
Expand All @@ -122,6 +140,7 @@ Models/RelayerStatus.md
Models/RelayerStellarPolicy.md
Models/RelayerStellarSwapConfig.md
Models/RpcConfig.md
Models/RpcUrlEntry.md
Models/SignAndSendTransactionRequestParams.md
Models/SignAndSendTransactionResult.md
Models/SignDataRequest.md
Expand Down Expand Up @@ -206,11 +225,14 @@ Models/StellarTokenKind_oneOf_classic.md
Models/StellarTokenMetadata.md
Models/StellarTransactionRequest.md
Models/StellarTransactionResponse.md
Models/SystemHealth.md
Models/TransactionResponse.md
Models/TransactionStatus.md
Models/TransferTransactionRequestParams.md
Models/TransferTransactionResult.md
Models/TurnkeySignerRequestConfig.md
Models/UpdateNetworkRequest.md
Models/UpdatePluginRequest.md
Models/UpdateRelayerRequest.md
Models/VaultSignerRequestConfig.md
Models/VaultTransitSignerRequestConfig.md
Expand Down
29 changes: 27 additions & 2 deletions docs/Apis/HealthApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ All URIs are relative to *http://localhost*

| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**health**](HealthApi.md#health) | **GET** /v1/health | Health routes implementation |
| [**health**](HealthApi.md#health) | **GET** /api/v1/health | Health routes implementation |
| [**readiness**](HealthApi.md#readiness) | **GET** /api/v1/ready | Readiness endpoint that checks system resources, Redis, Queue, and plugins. |


<a name="health"></a>
Expand All @@ -13,7 +14,7 @@ All URIs are relative to *http://localhost*

Health routes implementation

Note: OpenAPI documentation for these endpoints can be found in the &#x60;openapi.rs&#x60; file Handles the &#x60;/health&#x60; endpoint. Returns an &#x60;HttpResponse&#x60; with a status of &#x60;200 OK&#x60; and a body of &#x60;\&quot;OK\&quot;&#x60;.
Note: OpenAPI documentation for these endpoints can be found in the &#x60;openapi.rs&#x60; file Handles the &#x60;/health&#x60; endpoint. Returns an &#x60;HttpResponse&#x60; with a status of &#x60;200 OK&#x60; and a body of &#x60;\&quot;OK\&quot;&#x60;. This endpoint is used for liveness probes in container orchestration platforms.

### Parameters
This endpoint does not need any parameter.
Expand All @@ -31,3 +32,27 @@ No authorization required
- **Content-Type**: Not defined
- **Accept**: text/plain

<a name="readiness"></a>
# **readiness**
> ReadinessResponse readiness()

Readiness endpoint that checks system resources, Redis, Queue, and plugins.

Returns 200 OK if the service is ready to accept traffic, or 503 Service Unavailable if not. This endpoint is used for readiness probes in container orchestration platforms like AWS ECS or Kubernetes. ## Health Check Components - **System**: File descriptor usage, CLOSE_WAIT socket count - **Redis**: Primary and reader pool connectivity - **Queue**: Queue&#39;s Redis connections (separate from app&#39;s Redis) - **Plugins**: Plugin pool health, circuit breaker state, and connection metrics (if enabled) ## Status Levels - &#x60;healthy&#x60;: All components operational - &#x60;degraded&#x60;: Some components degraded but service can function (e.g., reader pool down) - &#x60;unhealthy&#x60;: Critical components failed, service unavailable ## Plugin Connection Metrics When plugins are enabled, the following connection metrics are exposed: - &#x60;shared_socket_available_slots&#x60;: Number of additional concurrent plugin executions that can start - &#x60;shared_socket_active_connections&#x60;: Current number of active plugin execution connections - &#x60;shared_socket_registered_executions&#x60;: Number of plugin executions currently registered (awaiting response) - &#x60;connection_pool_available_slots&#x60;: Available connections to the pool server - &#x60;connection_pool_active_connections&#x60;: Active connections to the pool server These metrics help diagnose connection pool exhaustion and plugin capacity issues. ## Caching Health check results are cached for 10 seconds to prevent excessive load from frequent health checks. Multiple requests within the TTL return the same cached response.

### Parameters
This endpoint does not need any parameter.

### Return type

[**ReadinessResponse**](../Models/ReadinessResponse.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

90 changes: 90 additions & 0 deletions docs/Apis/NetworksApi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# NetworksApi

All URIs are relative to *http://localhost*

| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**getNetwork**](NetworksApi.md#getNetwork) | **GET** /api/v1/networks/{network_id} | Retrieves details of a specific network by ID. |
| [**listNetworks**](NetworksApi.md#listNetworks) | **GET** /api/v1/networks | Network routes implementation |
| [**updateNetwork**](NetworksApi.md#updateNetwork) | **PATCH** /api/v1/networks/{network_id} | Updates a network&#39;s configuration. Currently supports updating RPC URLs only. Can be extended to support other fields. |


<a name="getNetwork"></a>
# **getNetwork**
> ApiResponse_NetworkResponse getNetwork(network\_id)

Retrieves details of a specific network by ID.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **network\_id** | **String**| Network ID (e.g., evm:sepolia, solana:mainnet) | [default to null] |

### Return type

[**ApiResponse_NetworkResponse**](../Models/ApiResponse_NetworkResponse.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

<a name="listNetworks"></a>
# **listNetworks**
> ApiResponse_Vec_NetworkResponse listNetworks(page, per\_page)

Network routes implementation

Note: OpenAPI documentation for these endpoints can be found in the &#x60;openapi.rs&#x60; file Lists all networks with pagination support.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **page** | **Integer**| Page number for pagination (starts at 1) | [optional] [default to null] |
| **per\_page** | **Integer**| Number of items per page (default: 10) | [optional] [default to null] |

### Return type

[**ApiResponse_Vec_NetworkResponse**](../Models/ApiResponse_Vec_NetworkResponse.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

<a name="updateNetwork"></a>
# **updateNetwork**
> ApiResponse_NetworkResponse updateNetwork(network\_id, UpdateNetworkRequest)

Updates a network&#39;s configuration. Currently supports updating RPC URLs only. Can be extended to support other fields.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **network\_id** | **String**| Network ID (e.g., evm:sepolia, solana:mainnet) | [default to null] |
| **UpdateNetworkRequest** | [**UpdateNetworkRequest**](../Models/UpdateNetworkRequest.md)| | |

### Return type

[**ApiResponse_NetworkResponse**](../Models/ApiResponse_NetworkResponse.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

120 changes: 116 additions & 4 deletions docs/Apis/PluginsApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,28 @@ All URIs are relative to *http://localhost*

| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**callPlugin**](PluginsApi.md#callPlugin) | **POST** /api/v1/plugins/{plugin_id}/call | Execute a plugin and receive the sanitized result |
| [**callPlugin**](PluginsApi.md#callPlugin) | **POST** /api/v1/plugins/{plugin_id}/call | Execute a plugin with optional wildcard route routing |
| [**callPluginGet**](PluginsApi.md#callPluginGet) | **GET** /api/v1/plugins/{plugin_id}/call | Execute a plugin via GET (must be enabled per plugin) |
| [**getPlugin**](PluginsApi.md#getPlugin) | **GET** /api/v1/plugins/{plugin_id} | Get plugin by ID |
| [**listPlugins**](PluginsApi.md#listPlugins) | **GET** /api/v1/plugins | List plugins. |
| [**updatePlugin**](PluginsApi.md#updatePlugin) | **PATCH** /api/v1/plugins/{plugin_id} | Update plugin configuration |


<a name="callPlugin"></a>
# **callPlugin**
> ApiResponse_Value callPlugin(plugin\_id, PluginCallRequest)
> ApiResponse_Value callPlugin(plugin\_id, PluginCallRequest, route)

Execute a plugin and receive the sanitized result
Execute a plugin with optional wildcard route routing

Logs and traces are only returned when the plugin is configured with &#x60;emit_logs&#x60; / &#x60;emit_traces&#x60;. Plugin-provided errors are normalized into a consistent payload (&#x60;code&#x60;, &#x60;details&#x60;) and a derived message so downstream clients receive a stable shape regardless of how the handler threw.
Logs and traces are only returned when the plugin is configured with &#x60;emit_logs&#x60; / &#x60;emit_traces&#x60;. Plugin-provided errors are normalized into a consistent payload (&#x60;code&#x60;, &#x60;details&#x60;) and a derived message so downstream clients receive a stable shape regardless of how the handler threw. The endpoint supports wildcard route routing, allowing plugins to implement custom routing logic: - &#x60;/api/v1/plugins/{plugin_id}/call&#x60; - Default endpoint (route &#x3D; \&quot;\&quot;) - &#x60;/api/v1/plugins/{plugin_id}/call?route&#x3D;/verify&#x60; - Custom route via query parameter - &#x60;/api/v1/plugins/{plugin_id}/call/verify&#x60; - Custom route via URL path (route &#x3D; \&quot;/verify\&quot;) The route is passed to the plugin handler via the &#x60;context.route&#x60; field. You can specify a custom route either by appending it to the URL path or by using the &#x60;route&#x60; query parameter.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **plugin\_id** | **String**| The unique identifier of the plugin | [default to null] |
| **PluginCallRequest** | [**PluginCallRequest**](../Models/PluginCallRequest.md)| | |
| **route** | **String**| Optional route suffix for custom routing (e.g., &#39;/verify&#39;). Alternative to appending the route to the URL path. | [optional] [default to null] |

### Return type

Expand All @@ -35,3 +40,110 @@ Execute a plugin and receive the sanitized result
- **Content-Type**: application/json
- **Accept**: application/json

<a name="callPluginGet"></a>
# **callPluginGet**
> ApiResponse_Value callPluginGet(plugin\_id, route)

Execute a plugin via GET (must be enabled per plugin)

This endpoint is disabled by default. To enable it for a given plugin, set &#x60;allow_get_invocation: true&#x60; in the plugin configuration. When invoked via GET: - &#x60;params&#x60; is an empty object (&#x60;{}&#x60;) - query parameters are passed to the plugin handler via &#x60;context.query&#x60; - wildcard route routing is supported the same way as POST (see &#x60;doc_call_plugin&#x60;) - Use the &#x60;route&#x60; query parameter or append the route to the URL path

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **plugin\_id** | **String**| The unique identifier of the plugin | [default to null] |
| **route** | **String**| Optional route suffix for custom routing (e.g., &#39;/verify&#39;). Alternative to appending the route to the URL path. | [optional] [default to null] |

### Return type

[**ApiResponse_Value**](../Models/ApiResponse_Value.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

<a name="getPlugin"></a>
# **getPlugin**
> ApiResponse_PluginModel getPlugin(plugin\_id)

Get plugin by ID

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **plugin\_id** | **String**| The unique identifier of the plugin | [default to null] |

### Return type

[**ApiResponse_PluginModel**](../Models/ApiResponse_PluginModel.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

<a name="listPlugins"></a>
# **listPlugins**
> ApiResponse_PaginatedResult_PluginModel listPlugins(page, per\_page)

List plugins.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **page** | **Integer**| Page number for pagination (starts at 1) | [optional] [default to null] |
| **per\_page** | **Integer**| Number of items per page (default: 10) | [optional] [default to null] |

### Return type

[**ApiResponse_PaginatedResult_PluginModel**](../Models/ApiResponse_PaginatedResult_PluginModel.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

<a name="updatePlugin"></a>
# **updatePlugin**
> ApiResponse_PluginModel updatePlugin(plugin\_id, UpdatePluginRequest)

Update plugin configuration

Updates mutable plugin fields such as timeout, emit_logs, emit_traces, raw_response, allow_get_invocation, config, and forward_logs. The plugin id and path cannot be changed after creation. All fields are optional - only the provided fields will be updated. To clear the &#x60;config&#x60; field, pass &#x60;\&quot;config\&quot;: null&#x60;.

### Parameters

|Name | Type | Description | Notes |
|------------- | ------------- | ------------- | -------------|
| **plugin\_id** | **String**| The unique identifier of the plugin | [default to null] |
| **UpdatePluginRequest** | [**UpdatePluginRequest**](../Models/UpdatePluginRequest.md)| Plugin configuration update. All fields are optional. | |

### Return type

[**ApiResponse_PluginModel**](../Models/ApiResponse_PluginModel.md)

### Authorization

[bearer_auth](../README.md#bearer_auth)

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

13 changes: 13 additions & 0 deletions docs/Models/ApiResponse_NetworkResponse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# ApiResponse_NetworkResponse
## Properties

| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
| **data** | [**ApiResponse_NetworkResponse_data**](ApiResponse_NetworkResponse_data.md) | | [optional] [default to null] |
| **error** | **String** | | [optional] [default to null] |
| **metadata** | [**PluginMetadata**](PluginMetadata.md) | | [optional] [default to null] |
| **pagination** | [**PaginationMeta**](PaginationMeta.md) | | [optional] [default to null] |
| **success** | **Boolean** | | [default to null] |

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

Loading