API リファレンス
SOAPless REST プロキシのエンドポイント仕様
Base URL
https://soapless.miravy.comすべてのエンドポイントで HTTPS が必須です。HTTP リクエストは自動的に HTTPS へリダイレクトされます。
Proxy エンドポイント
/api/v1/{accountId}/{serviceSlug}/{operationName}/api/v1/{accountId}/{serviceSlug}/{operationName}?a=2&b=3GET は任意です。入力が単純な参照系オペレーションでは自動で公開されます。Starter / Pro では、ダッシュボードからオペレーションごとに GET を手動で有効化することもできます。
ダッシュボードの method policy は Inherit、POST、GET、GET + POST です。
両方が利用可能な場合は、クライアントに合わせて選べます。body で送りたいときは POST、query parameter や cache と相性を取りたいときは GET が向いています。
accountId は Settings で確認できる固定の Account ID です。例: ab12cd34ef。
REST JSON リクエストを受け取り、上流の SOAP オペレーションへプロキシします。
パスパラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
| accountId | string | Settings に表示される固定の Account ID |
| serviceSlug | string | SOAP サービス登録時に設定した slug |
| operationName | string | WSDL に定義された SOAP オペレーション名 |
リクエストヘッダー
| ヘッダー | 必須 | 説明 |
|---|---|---|
| X-API-Key | はい | SOAPless の APIキー(sl_live_...) |
| Content-Type | はい | application/json を指定してください。 |
リクエストボディ
SOAP オペレーションの入力パラメータに対応する JSON オブジェクトです。SOAPless が対応する SOAP XML 要素へ自動でマッピングします。
{
"userId": 42
}成功レスポンス (200)
{
"result": {
"id": 42,
"name": "Alice Johnson",
"email": "alice@acme.com",
"department": "Engineering"
},
"meta": {
"service": "my-erp",
"operation": "GetUser",
"latencyMs": 245,
"cached": false
}
}レスポンスコード
| コード | ステータス | 説明 |
|---|---|---|
| 200 | OK | プロキシ成功。SOAP レスポンスを JSON に変換して返却 |
| 400 | Bad Request | JSON ボディが不正、必須フィールドの欠落、またはバリデーションエラー |
| 401 | Unauthorized | APIキーが未設定または無効。 X-API-Key ヘッダーを確認してください |
| 404 | Not Found | サービス slug またはオペレーション名が見つからない。URL パスを確認してください |
| 429 | Too Many Requests | レート制限を超過。 X-RateLimit-* ヘッダーで制限の詳細を確認してください |
| 502 | Bad Gateway | 上流の SOAP サービスがエラーを返した、または到達不能。エラーメッセージの詳細を確認してください |
エラータイプ
エラーレスポンスの error.type フィールドには以下のいずれかの値が入ります
| タイプ | コード | 説明 |
|---|---|---|
| VALIDATION_ERROR | 400 | リクエストボディが WSDL スキーマのバリデーションに違反 |
| AUTHENTICATION_ERROR | 401 | APIキーが未設定、無効、または無効化済み |
| SERVICE_NOT_FOUND | 404 | 指定された slug に一致するサービスが存在しない |
| OPERATION_NOT_FOUND | 404 | 指定されたサービスに該当するオペレーションが存在しない |
| RATE_LIMIT_EXCEEDED | 429 | 月間リクエスト上限またはレート制限を超過 |
| UPSTREAM_ERROR | 502 | 上流の SOAP サービスが SOAP Fault を返したか到達不能 |
| INTERNAL_ERROR | 500 | 予期しないエラー。解消しない場合はサポートまでお問い合わせください |
OpenAPI Spec エンドポイント
/api/services/{serviceId}/openapi登録済みの SOAP サービスに対して自動生成された OpenAPI 3.0 仕様を返します。有料プラン(Starter / Pro)限定の機能です。
認証
このエンドポイントは 2 つの認証方式に対応しています。
- セッション Cookie(プライマリ) — ダッシュボードのセッションによる認証。ブラウザからのアクセス時に使用されます。
- APIキー(フォールバック) —
X-API-Keyヘッダーにキーを指定します。curl や CI パイプライン、プログラムからのアクセスに向いています。
パスパラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
| serviceId | UUID | 登録済み SOAP サービスの一意な ID |
使用例
curl -H "X-API-Key: sl_live_abc123" \
https://soapless.miravy.com/api/services/550e8400-e29b-41d4-a716-446655440000/openapiレスポンスコード
| コード | 説明 |
|---|---|
| 200 | OpenAPI 3.0 JSON 仕様を返却 |
| 401 | 未認証。セッション Cookie または有効な APIキーを指定してください |
| 403 | Free プラン。OpenAPI spec を利用するには Starter または Pro にアップグレードしてください |
| 404 | サービスが見つからない、またはアカウントに属していない |
レート制限ヘッダー
すべてのプロキシレスポンスにレート制限ヘッダーが含まれており、クライアント側でも残量とリセット時刻を確認できます。
| ヘッダー | 型 | 説明 |
|---|---|---|
| X-RateLimit-Limit | integer | 現在のプランで使えるコール上限 |
| X-RateLimit-Remaining | integer | 現在の請求期間で残っているコール数 |
| X-RateLimit-Reset | string (ISO 8601) | 次回のリセット時刻を示すタイムスタンプ。Free プランでは月次、有料プランでは現在の請求期間に合わせて変わります。 |
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9542
X-RateLimit-Reset: 2026-04-01T00:00:00Zバージョニング
SOAPless API は URL パスでバージョン管理されています。現在のバージョンは v1 です。
https://soapless.miravy.com/api/v1/{accountId}/{serviceSlug}/{operationName}- 破壊的変更は新しいバージョン(例:
v2)でリリースされます。 - 非破壊的な追加(新しいフィールド、新しいオプションパラメータ)は、バージョンを上げずに現在のバージョンに追加される場合があります。
- 非推奨バージョンは、新バージョンリリース後も少なくとも 6 か月間サポートされます。
変換例: SOAP から REST へ
SOAPless が SOAP オペレーションを REST API コールに変換する流れを具体例で紹介します
元の SOAP リクエスト
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:usr="http://example.com/users">
<soap:Header>
<usr:AuthToken>ws-sec-token-xyz</usr:AuthToken>
</soap:Header>
<soap:Body>
<usr:GetUser>
<usr:userId>42</usr:userId>
</usr:GetUser>
</soap:Body>
</soap:Envelope>元の SOAP レスポンス
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:usr="http://example.com/users">
<soap:Body>
<usr:GetUserResponse>
<usr:user>
<usr:id>42</usr:id>
<usr:name>Alice Johnson</usr:name>
<usr:email>alice@acme.com</usr:email>
<usr:department>Engineering</usr:department>
</usr:user>
</usr:GetUserResponse>
</soap:Body>
</soap:Envelope>SOAPless REST リクエスト
curl -X POST https://soapless.miravy.com/api/v1/ab12cd34ef/user-service/GetUser \
-H "Content-Type: application/json" \
-H "X-API-Key: sl_live_abc123" \
-d '{"userId": 42}'SOAPless REST レスポンス
{
"result": {
"id": 42,
"name": "Alice Johnson",
"email": "alice@acme.com",
"department": "Engineering"
},
"meta": {
"service": "user-service",
"operation": "GetUser",
"latencyMs": 312,
"cached": false
}
}