APIドキュメント

文字数カウント、文字列正規化、重複行削除、テキスト差分、CSV/JSON変換、JSON整形、日付差計算、 URL/Base64変換、UUID生成をJSON APIとして利用できます。初期段階では匿名利用を維持し、 APIキーと有料プランは将来拡張用の設計だけを用意しています。

利用制限

リクエスト本文の既定上限は256 KiBです。レート制限はCloudflare Workersのバインディングから 設定できる設計です。入力本文や個人情報はアプリケーションログへ出力しません。

任意APIキー

将来の利用量管理に備えて x-api-key ヘッダーとAuthorization: Bearer ... の読み取り設計を用意しています。現時点の公開ツールAPIは匿名利用可能で、 APIキー発行画面、請求連携、有料エンタイトルメントは実装していません。

将来プラン

config/api-plans.yml に匿名利用、開発者向け候補、業務利用候補の非販売プラン草案を置いています。 数値の価格や契約条件は公開済み料金として扱わず、正式提供前に運営者の承認、規約、プライバシーポリシー、サポート範囲の確認が必要です。

クリックイベント

POST /api/v1/events/click は、広告・公式リンクの集計改善に備えたプライバシー配慮のイベント受け口です。 送信できるのは programIdplacementIdpagePathlinkTypeoccurredAt のみです。Cookie、IP保存、ユーザーエージェント、リファラー全文、 遷移先URL全文、ユーザー入力本文は扱いません。保存先が未設定の場合は受理後に破棄します。

エラー形式

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Request body failed validation.",
    "details": []
  },
  "requestId": "..."
}

curl

curl -X POST https://api.example.com/api/v1/text/count   -H "content-type: application/json"   -d '{"text":"あ A
B"}'

JavaScript

const res = await fetch("https://api.example.com/api/v1/data/json-format", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ json: "{"name":"山田"}", indent: 2 })
});
const body = await res.json();

Python

import requests

body = requests.post(
    "https://api.example.com/api/v1/date/difference",
    json={"startDate": "2024-02-28", "endDate": "2024-03-01"},
    timeout=5,
).json()

C#

using System.Net.Http.Json;

using var client = new HttpClient();
var response = await client.PostAsJsonAsync(
    "https://api.example.com/api/v1/text/normalize",
    new { text = " ABC", unicodeForm = "NFKC" }
);
var body = await response.Content.ReadAsStringAsync();

OpenAPI

機械可読な仕様はAPI Workerの GET /openapi.json で提供します。ローカル開発時は APIサーバー側の同パスを確認してください。

廃止予定の通知

破壊的変更はAPIバージョンを分け、変更履歴、APIドキュメント、OpenAPIのdescriptionで告知します。 Phase 3時点で廃止予定のエンドポイントはありません。