データ処理

JSON

JSON文字列をパースし、任意のJSON Schema(Draft-07)で検証します。auto_repair を true にすると trailing comma などの構文エラーを自動修復してから検証します。エラーは JSON Pointer 形式の path で返します。

MCPツール名: data.validate_json

POST /v1/json/validate

パラメータ:

パラメータ必須説明
json_strstring検証するJSON文字列
schemaobject-JSON Schemaオブジェクト(Draft-07)。省略時はパースのみ
auto_repairboolean-構文エラーの自動修復(デフォルト false)

リクエスト例:

curl -X POST https://api.thousand-api.com/v1/json/validate \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "json_str": "{\"name\": \"Thousand API\", \"features\": [\"MCP\", \"Speed\"]}",
    "schema": {
      "type": "object",
      "required": ["name", "features"],
      "properties": {
        "name": { "type": "string" },
        "features": { "type": "array", "items": { "type": "string" } }
      }
    }
  }'

レスポンス例:

{
  "valid": true,
  "repaired": false,
  "json": {
    "name": "Thousand API",
    "features": ["MCP", "Speed"]
  },
  "errors": []
}

レスポンス:

valid が false の場合も HTTP 200 を返します(パース・スキーマエラー)。auto_repair で修復した場合は repaired が true になり、original に入力の json_str が含まれます。

POST /v1/json/validate-schema

data.validate_json とは異なり、パース済みの JSON データを JSON Schema(Draft-07)で本格的に検証します。format・pattern・minimum/maximum・additionalProperties など Draft-07 の主要制約に対応。自動修復は行いません。エラーは path・message・schema_path(スキーマ内の失敗箇所)で返します。

MCPツール名: data.validate_schema

パラメータ:

パラメータ必須説明
dataany検証対象の JSON データ(null も有効な値として許容)
schemaobjectJSON Schema オブジェクト(Draft-07)
all_errorsboolean-全エラーを返す(デフォルト false: 最初のエラーのみ)

リクエスト例:

curl -X POST https://api.thousand-api.com/v1/json/validate-schema \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "data": { "name": "Alice", "age": -1, "email": "not-an-email" },
    "schema": {
      "type": "object",
      "required": ["name", "age", "email"],
      "properties": {
        "name": { "type": "string" },
        "age": { "type": "number", "minimum": 0 },
        "email": { "type": "string", "format": "email" }
      }
    },
    "all_errors": true
  }'

レスポンス例:

{
  "valid": false,
  "error_count": 2,
  "errors": [
    {
      "path": "/age",
      "message": "must be >= 0",
      "schema_path": "#/properties/age/minimum"
    },
    {
      "path": "/email",
      "message": "must match format \"email\"",
      "schema_path": "#/properties/email/format"
    }
  ]
}

レスポンス:

valid が false の場合も HTTP 200 を返します。schema がコンパイル不可能な場合は HTTP 400(schema is not a valid JSON Schema: ...)。リクエストボディは最大 1MB です。

統合バリデーション

JSON / UUID / Luhn / バーコードの検証を type で1つ指定して実行します。個別ツール(data.validate_json 等)と同じ shared ロジックを再利用します。

MCPツール名: data.validate_all(data.validate_json / security.validate_uuid / security.validate_luhn / security.validate_barcode の統合代替)

POST /v1/validate/all

パラメータ:

パラメータ必須説明
typestringjson / uuid / luhn / barcode
valuestring検証対象の文字列
optionsobject-type 固有の追加パラメータ

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/validate/all" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "json",
    "value": "{\"name\":\"Alice\"}"
  }'

レスポンス例:

{
  "type": "json",
  "valid": true,
  "details": {
    "json": { "name": "Alice" },
    "repaired": false
  }
}

フォーマットバリデーション

IPv4・IPv6・CIDR・メールアドレス・URL・クレジットカード・日本の電話番号の形式を検証します。外部依存なし。

MCPツール名: data.validate_format

GET /v1/validate/{type}

type の選択肢

パラメータ説明
ipv4IPv4アドレス(プライベート・ループバック判定付き)
ipv6IPv6アドレス
cidrCIDR表記(ネットワーク・ホスト数計算付き)
emailメールアドレス(local/domain分解付き)
urlURL(http/httpsのみ)
credit_cardクレジットカード番号(Luhn検証・ブランド判定)
phone_jp日本の電話番号

パラメータ:

パラメータ必須説明
valuestringバリデーションする値

リクエスト例:

curl "https://api.thousand-api.com/v1/validate/ipv4?value=192.168.1.1" \
  -H "x-api-key: YOUR_API_KEY"

レスポンス例:

{
  "value": "192.168.1.1",
  "type": "ipv4",
  "valid": true,
  "details": {
    "is_private": true,
    "is_loopback": false,
    "is_multicast": false,
    "octets": [192, 168, 1, 1]
  }
}

JSONマージ/パッチ

2つのJSONオブジェクトをdeep mergeするか、RFC 6902 JSON Patch操作を適用します。設定の部分更新やエージェントによるJSON再生成を避けたい場合に使います。リクエストボディは最大1MBです。

MCPツール名: data.merge_json

POST /v1/json/merge

mode: merge(deep merge)

パラメータ必須説明
modestringmerge または patch(省略時 merge)
baseobjectマージ元のJSONオブジェクト
patchobjectマージするJSONオブジェクト
array_strategystring-replace(上書き)/ concat(結合)。デフォルト replace
null_overwritesboolean-patchのnullで上書きするか。デフォルト true

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/json/merge" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "merge",
    "base": {
      "app": { "name": "MyApp", "version": "1.0.0" },
      "features": ["auth"]
    },
    "patch": {
      "app": { "version": "1.1.0" },
      "features": ["auth", "billing"],
      "debug": true
    }
  }'

レスポンス例:

{
  "mode": "merge",
  "result": {
    "app": { "name": "MyApp", "version": "1.1.0" },
    "features": ["auth", "billing"],
    "debug": true
  },
  "changed_keys": ["/app/version", "/debug", "/features"]
}

mode: patch(RFC 6902)

パラメータ必須説明
modestringpatch
baseanyパッチ適用対象のJSON
operationsarrayRFC 6902操作(op, path, value?, from?)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/json/merge" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "patch",
    "base": { "name": "Alice", "tags": ["a"] },
    "operations": [
      { "op": "replace", "path": "/name", "value": "Bob" },
      { "op": "add", "path": "/tags/-", "value": "b" },
      { "op": "remove", "path": "/tags/0" }
    ]
  }'

レスポンス例:

{
  "mode": "patch",
  "result": { "name": "Bob", "tags": ["b"] },
  "changed_keys": ["/name", "/tags/-", "/tags/0"]
}

レスポンスフィールド

パラメータ説明
modestring使用したモード(merge / patch)
resultany処理後のJSON
changed_keysstring[]変更されたキーのJSON Pointer一覧(patchではtest操作を除く)

配列差分

2つの配列を比較し、追加・削除・変更なしの要素を返します。文字列・数値などのプリミティブ配列と、key フィールドを指定したオブジェクト配列(IDベース比較)に対応。エージェントが長いリストを手動比較する必要をなくし、トークン節約とミス低減に役立ちます。各配列は最大1000要素です。

MCPツール名: data.diff_arrays

POST /v1/array/diff

パラメータ:

パラメータ必須説明
beforearray比較元の配列(最大1000要素)
afterarray比較先の配列(最大1000要素)
keystring | null-オブジェクト配列の比較キー(例: id, name)。省略時 null(プリミティブ比較)
ignore_orderboolean-true のとき順序を無視して集合として比較(デフォルト: false)

文字列配列の差分(key: null)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/array/diff" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "before": ["calendar", "cron", "scraper", "json"],
    "after": ["calendar", "cron", "scraper", "json", "template", "utilities"]
  }'

レスポンス例:

{
  "added": ["template", "utilities"],
  "removed": [],
  "unchanged": ["calendar", "cron", "scraper", "json"],
  "reordered": false,
  "summary": "+2 -0 =4"
}

オブジェクト配列の差分(key: "id" 指定)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/array/diff" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "before": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}],
    "after": [{"id": 1, "name": "Alice"}, {"id": 3, "name": "Carol"}],
    "key": "id"
  }'

レスポンス例:

{
  "added": [{"id": 3, "name": "Carol"}],
  "removed": [{"id": 2, "name": "Bob"}],
  "unchanged": [{"id": 1, "name": "Alice"}],
  "reordered": false,
  "summary": "+1 -1 =1"
}

ignore_order: true での集合比較

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/array/diff" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "before": ["a", "b", "c"],
    "after": ["b", "a", "c"],
    "ignore_order": true
  }'

レスポンス例:

{
  "added": [],
  "removed": [],
  "unchanged": ["b", "a", "c"],
  "reordered": false,
  "summary": "+0 -0 =3"
}

レスポンスフィールド

パラメータ説明
addedarrayafter にあって before にない要素
removedarraybefore にあって after にない要素
unchangedarray両方に存在する要素(after の順序で返却)
reorderedbooleanignore_order: false 時、unchanged 要素の順序が before/after で異なる場合 true
summarystring差分サマリー(例: +2 -0 =4)

JSON配列多キーソート

JSONオブジェクト配列を複数キー・昇順/降順混在でソートします。LLMは複合ソートの比較関数(Array.sort の compare 関数など)を書き間違えやすいため、安定ソートによる確実な並び替えを提供します。キーパスはドット記法(profile.age)と配列インデックス(items[0].name)に対応。各配列は最大1000要素です。

MCPツール名: data.sort_json

POST /v1/data/sort

パラメータ:

パラメータ必須説明
itemsarrayソート対象のJSONオブジェクト配列(最大1000要素)
sort_keysarrayソートキーの配列(1件以上)。先頭のキーが優先され、同値時に次のキーで比較
sort_keys[].keystringドット記法のキーパス(例: age, profile.age, items[0].name)
sort_keys[].orderstringasc(昇順)または desc(降順)

単一キーソート(age 昇順)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/data/sort" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {"name": "Alice", "age": 30},
      {"name": "Bob", "age": 25}
    ],
    "sort_keys": [{"key": "age", "order": "asc"}]
  }'

レスポンス例:

{
  "sorted": [
    {"name": "Bob", "age": 25},
    {"name": "Alice", "age": 30}
  ],
  "count": 2
}

複数キー混在ソート(age 昇順 → 同年齢は name 降順)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/data/sort" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {"name": "Alice", "age": 30},
      {"name": "Bob", "age": 25},
      {"name": "Carol", "age": 30}
    ],
    "sort_keys": [
      {"key": "age", "order": "asc"},
      {"key": "name", "order": "desc"}
    ]
  }'

レスポンス例:

{
  "sorted": [
    {"name": "Bob", "age": 25},
    {"name": "Carol", "age": 30},
    {"name": "Alice", "age": 30}
  ],
  "count": 3
}

レスポンスフィールド

パラメータ説明
sortedarrayソート済み配列(安定ソート。同値要素は元の順序を維持)
countintegerソート済み配列の要素数

JSONPathクエリ

JSONPathクエリを使ってJSONデータから値を抽出します。フィルタ式対応・data.validate_jsonと組み合わせ可能。

MCPツール名: data.query_json

POST /v1/json/query

パラメータ:

パラメータ必須説明
jsonanyクエリ対象のJSONデータ(最大1MB)
querystringJSONPathクエリ($で始まる)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/json/query" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "json": {
      "users": [
        {"name": "Alice", "age": 30},
        {"name": "Bob",   "age": 25}
      ]
    },
    "query": "$.users[*].name"
  }'

レスポンス例:

{
  "query": "$.users[*].name",
  "result": ["Alice", "Bob"],
  "count": 2
}

JSONPathクエリ例:

コード説明
$.users[*].name全ユーザーのname
$.users[0].email最初のユーザーのemail
$.users[?(@.age > 25)].name26歳以上のユーザーのname
$..email深さを問わず全emailを再帰取得

数値統計計算

数値配列の統計値(平均・中央値・標準偏差・パーセンタイル等)を計算します。外部ライブラリ不要・最大1000要素対応。

MCPツール名: data.calc_stats

POST /v1/math/stats

パラメータ:

パラメータ必須説明
valuesnumber[]統計計算する数値配列(最大1000要素)

リクエスト例:

curl -X POST "https://api.thousand-api.com/v1/math/stats" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"values": [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}'

レスポンス例:

{
  "count": 10,
  "sum": 550,
  "mean": 55,
  "median": 55,
  "mode": null,
  "min": 10,
  "max": 100,
  "range": 90,
  "variance": 825,
  "std_dev": 28.72,
  "percentiles": {
    "p25": 32.5,
    "p75": 77.5,
    "p90": 91,
    "p95": 95.5,
    "p99": 99.1
  }
}