| name | api-health |
| description | API Health — проверка здоровья JSON-RPC сервиса через SMD. Используй когда нужно убедиться что RPC-endpoint жив, собрать тайминги методов или диагностировать недоступность API. |
API Health — проверка JSON-RPC сервисов
Проверка здоровья API и тестовые запросы к JSON-RPC (zenrpc) сервисам.
Подключение
Profile: @{api_prod_profile} (production), @{api_dev_profile} (staging)
API type: JSON-RPC 2.0 (zenrpc)
RPC endpoint: определяется при онбординге (может быть /rpc/, /v1/rpc/, /v3/rpc/ и т.д.)
ВАЖНО:
/status и /healthcheck обычно скрыты за firewall, недоступны снаружи
- SMD (GET на RPC endpoint) может не работать через reverse proxy (фронтенд перехватывает GET)
- RPC endpoint может быть версионирован:
/v1/rpc/, /v3/rpc/ — уточнять при онбординге
Команды pcurl
JSON-RPC запрос
pcurl @{profile} https://{host}/{rpc_endpoint} -s -L -X POST \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"{namespace.method}","params":{params},"id":1}'
С таймингами
pcurl @{profile} https://{host}/{rpc_endpoint} -s -L -X POST \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"{namespace.method}","params":{params},"id":1}' \
-w '\n---\nHTTP %{http_code} | Time: %{time_total}s | TTFB: %{time_starttransfer}s | Size: %{size_download}b\n'
Только тайминги
pcurl @{profile} https://{host}/{rpc_endpoint} -s -o /dev/null -X POST \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"{namespace.method}","params":{params},"id":1}' \
-w 'HTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\n'
SMD (Service Mapping Description)
pcurl @{profile} 'https://{host}/{rpc_endpoint}?smd' -s -L
JSON-RPC 2.0 формат
Запрос:
{"jsonrpc": "2.0", "method": "namespace.method", "params": {"key": "value"}, "id": 1}
Успех:
{"jsonrpc": "2.0", "result": {...}, "id": 1}
Ошибка (HTTP 200, но error в body!):
{"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": 1}
Стандартные коды ошибок zenrpc
-32700 — Parse error
-32600 — Invalid Request
-32601 — Method not found
-32602 — Invalid params
-32603 — Internal error
400 — Bad Request (валидация)
401 — Unauthorized (Invalid token)
403 — Forbidden
404 — Not Found
500 — Internal Error