mcpField
T
tl-openmeter-api

tl-openmeter-api

github.com/toddlevy開発145 回インストール1 週間前に更新
リポジトリ

tl-openmeter-api について

tl-openmeter-apiは、OpenMeter REST APIのプロジェクト非依存のリファレンススキルです。開発者や連携の保守担当者向けに、公式タグ別のエンドポイント、OpenAPI仕様、メータリング・サブスクリプション・請求の手順をまとめています。

主な機能

  1. 01公式タグ別に整理されたAPIエンドポイント
  2. 02OpenAPI 3.0仕様を収録
  3. 03イベント、メーター、使用量クエリを網羅
  4. 04製品カタログとサブスクリプション操作
  5. 05請求、通知、顧客のワークフロー

活用シーン

  1. 01イベント取り込みや使用量クエリのAPIを検索
  2. 02顧客、プラン、サブスクリプションを管理
  3. 03メータリングや請求のライフサイクルを調査
  4. 04しきい値通知ルールを設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/toddlevy/tl-agent-skills --skill tl-openmeter-api

インストール後、Claude Code で/tl-openmeter-apiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
references/
billing.md
notifications.md
product-catalog.md
REFERENCE.md
self-hosted-troubleshooting.md
subscriptions-deep-dive.md

詳細

OpenMeter API

OpenMeter REST API のプロジェクトに依存しないリファレンスです。OpenAPI 3.0 仕様の公式 API タグごとに整理されています。

スイート

スキル目的
tl-openmeter-apiこのスキル:REST API リファレンス
tl-openmeter-local-devローカル開発環境のセットアップ:Docker、ngrok、Stripe App、webhook
tl-openmeter-api-mcp-serverCursor からローカルの OpenMeter を呼び出す MCP server

使用する場面

  • 「OpenMeter にイベントを取り込むにはどうすればよいですか?」
  • 「サブスクリプション付きの OpenMeter 顧客を作成する」
  • 「メーターの使用量を照会する」
  • 「しきい値アラートの通知ルールを設定する」
  • 「請求書を管理する」
  • 「Stripe マーケットプレイスアプリをインストールする」
  • 使用量計測、請求、またはサブスクリプションのライフサイクルのデバッグ

リソース

公式 API タグ

OpenMeter API のエンドポイントは、次の 15 個のタグに分類されています。

#タグ説明
1Appsアプリ連携の管理(一覧表示、取得、更新、アンインストール)
2App: Custom Invoicingサードパーティの請求および決済システムとのインターフェース
3App: StripeStripe の請求サポート(API キー、webhook、チェックアウト)
4Billing請求プロファイル、請求書、顧客のオーバーライド、保留中の明細
5Customers顧客のライフサイクル、アプリデータ、Stripe とのリンク、エンタイトルメント値
6Debug内部メトリクス(Prometheus 形式)
7Entitlements使用量制限、クォータベースの料金設定、機能へのアクセス
8EventsCloudEvents の取り込みと一覧表示
9Lookup Information静的データ(通貨、進捗状況)
10Meters集計ルール、使用量照会、グループ化
11Notificationsしきい値アラートのチャネル、ルール、イベント
12Portalスコープ付きトークンを使用した、利用者向けの使用量ダッシュボード
13Product Catalogプラン、機能、アドオン(バージョニング、レートカード、公開ライフサイクル)
14Subjects非推奨 — usageAttribution.subjectKeys を使って Customers を使用してください
15Subscriptions顧客へのプラン割り当て、キャンセル、変更、移行、復元

ベース URL と認証

  • ベース URL: OPENMETER_URL(例:ローカル環境では http://localhost:8888、またはデプロイ先の URL)
  • 認証: Authorization: Bearer <OPENMETER_API_KEY>。ローカルのセルフホスト環境では、認証なしで動作する場合がよくあります。
  • Content-Type: ほとんどのエンドポイントでは application/json、POST /api/v1/events では application/cloudevents+json

概念

Meter (aggregates events) → Feature (metered entitlement) → Plan (limits + pricing)
                                                                    ↓
Customer (subject keys) ←→ Subscription (customer + plan = active entitlements)
                                    ↓
                              Billing Profile → Invoices (via Stripe/Sandbox/Custom App)
  • Meter: イベントの集計ルール(COUNT、SUM など)です。イベントは type を eventType に一致させることで、メーターを参照します。
  • Feature: メーターまたはブール値に関連付けられ、プランのレートカードでクォータや超過分に使用されます。
  • Plan: フェーズとレートカードを含みます。Features および Addons とともに Product Catalog を構成します。
  • Addon: モジュール式のレートカードバンドルで、プランまたはサブスクリプションに追加できます。
  • Customer: usageAttribution.subjectKeys を持ちます。使用量を紐付けるには、イベントの subject が一致する必要があります。
  • Subscription: 顧客をプランに関連付けます。有効なサブスクリプションによってエンタイトルメントが付与されます。
  • Entitlement: 使用量の追跡と制限を備えた、顧客ごとの機能アクセス権です。
  • Grant: エンタイトルメントに対する一回限りのクレジットまたは使用量の割り当てです。
  • Notification: エンタイトルメントのしきい値に達した際の自動アラートです。
  • App: 請求プロバイダーとの連携です(Stripe、Sandbox、Custom Invoicing)。

1. イベント

取り込み: POST /api/v1/events | Content-Type: application/cloudevents+json

{
  "specversion": "1.0",
  "id": "unique-event-id",
  "type": "api_request",
  "source": "my-app",
  "subject": "user_abc123",
  "time": "2026-02-14T12:00:00Z",
  "data": { "value": 1, "path": "/v1/events", "method": "GET" }
}
フィールド必須備考
typeはいメーターの eventType と一致する必要があります
subjectはい顧客の usageAttribution.subjectKeys と一致する必要があります
sourceはい生成元のシステムを識別します
idはい冪等性キー(24 時間以内の重複排除)
time推奨ISO 8601 タイムスタンプ
data推奨任意のペイロード。メーターでは groupBy に $.path を使用します

イベントの一覧取得: GET /api/v1/events?from=...&to=...&subject=...&hasError=...


2. メーター

操作メソッドパス
一覧取得GET/api/v1/meters
作成POST/api/v1/meters
取得GET/api/v1/meters/{meterIdOrSlug}
更新PUT/api/v1/meters/{meterIdOrSlug}
削除DELETE/api/v1/meters/{meterIdOrSlug}
使用量のクエリGET/api/v1/meters/{meterIdOrSlug}/query?subject=...&from=...&to=...&windowSize=HOUR
クエリ(POST)POST/api/v1/meters/{meterIdOrSlug}/query
group-by 値GET/api/v1/meters/{meterIdOrSlug}/group-by/{groupBy}/values
サブジェクトの一覧取得GET/api/v1/meters/{meterIdOrSlug}/subjects

集計タイプ: COUNT、SUM、AVG、MIN、MAX、UNIQUE_COUNT

ウィンドウサイズ: MINUTE、HOUR、DAY、MONTH


3. 製品カタログ

プラン、機能、アドオンはすべてこのタグに含まれます。バージョン管理のライフサイクル、料金表、詳しい例については、references/product-catalog.md を参照してください。

機能
操作メソッドパス
一覧取得GET/api/v1/features
作成POST/api/v1/features
取得GET/api/v1/features/{featureId}
削除DELETE/api/v1/features/{featureId}
プラン
操作メソッドパス
一覧取得GET/api/v1/plans
作成POST/api/v1/plans
取得GET/api/v1/plans/{planIdOrKey}
更新PUT/api/v1/plans/{planIdOrKey}
削除DELETE/api/v1/plans/{planIdOrKey}
次のバージョンPOST/api/v1/plans/{planIdOrKey}/next
公開POST/api/v1/plans/{planIdOrKey}/publish
アーカイブPOST/api/v1/plans/{planIdOrKey}/archive
プランのアドオンCRUD/api/v1/plans/{planIdOrKey}/addons/...
アドオン
操作メソッドパス
一覧取得GET/api/v1/addons
作成POST/api/v1/addons
取得GET/api/v1/addons/{addonIdOrKey}
更新PUT/api/v1/addons/{addonIdOrKey}
削除DELETE/api/v1/addons/{addonIdOrKey}
公開POST/api/v1/addons/{addonIdOrKey}/publish
アーカイブPOST/api/v1/addons/{addonIdOrKey}/archive

重要: プランとアドオンのキーは snake_case 形式(^[a-z0-9]+(?:_[a-z0-9]+)*$)である必要があります。料金表の upToAmount は文字列である必要があります。サブスクリプションの作成には、生の planId ではなく plan: { "key": "plan_key" } を使用します。プランは draft -> published -> archived のライフサイクルに従います。


4. 顧客

操作メソッドパス
一覧取得GET/api/v1/customers?page=...&pageSize=...&subject=...&planKey=...
作成POST/api/v1/customers
取得GET/api/v1/customers/{customerIdOrKey}
削除DELETE/api/v1/customers/{id}
アクセス権の取得GET/api/v1/customers/{id}/access
サブスクリプションGET/api/v1/customers/{id}/subscriptions
エンタイトルメント値GET/api/v1/customers/{id}/entitlements/{featureKey}/value
Stripe データGET/PUT/api/v1/customers/{id}/stripe
Stripe ポータルPOST/api/v1/customers/{id}/stripe/portal
アプリデータGET/PUT/DELETE/api/v1/customers/{id}/apps/{appIdOrType}

注意点: 顧客に有効なサブスクリプションまたは確定前の請求書がある場合、DELETE は 409 を返します。顧客削除の手順については、references/billing.md を参照してください。


5. サブスクリプション

操作メソッドパス
作成POST/api/v1/subscriptions
取得GET/api/v1/subscriptions/{id}
編集PATCH/api/v1/subscriptions/{id}
削除DELETE/api/v1/subscriptions/{id}
キャンセルPOST/api/v1/subscriptions/{id}/cancel
プラン変更POST/api/v1/subscriptions/{id}/change
移行POST/api/v1/subscriptions/{id}/migrate
復元POST/api/v1/subscriptions/{id}/restore
キャンセル予定の解除POST/api/v1/subscriptions/{id}/unschedule-cancelation
サブスクリプションのアドオンGET/POST/api/v1/subscriptions/{id}/addons
サブスクリプションのカスタマイズと移行

PATCH の customizations スキーマ(add_item / remove_item)、stretch_phase 操作、サブスクリプションの状態ごとに許可される操作のマトリックス、旧プランバージョンの移行パターンの詳細については、サブスクリプションの詳細を参照してください。


6. エンタイトルメント

操作メソッドパス
すべて一覧表示GET/api/v1/entitlements
ID で取得GET/api/v1/entitlements/{id}
顧客ごとの値GET/api/v1/customers/{id}/entitlements/{featureKey}/value
履歴GET/api/v1/subjects/{subjectIdOrKey}/entitlements/{idOrKey}/history
使用量をリセットPOST/api/v1/subjects/{subjectIdOrKey}/entitlements/{id}/reset
オーバーライドPUT/api/v1/subjects/{subjectIdOrKey}/entitlements/{idOrKey}/override
付与POST/GET/DELETE/api/v1/subjects/.../entitlements/.../grants, /api/v1/grants/...

7. 請求

請求書のライフサイクル、顧客削除のフロー、料金表スキーマについては、references/billing.mdを参照してください。

リソース操作ベースパス
プロファイル一覧表示、作成、取得、更新、削除/api/v1/billing/profiles
顧客のオーバーライド一覧表示、登録または更新、取得、削除/api/v1/billing/profiles/{id}/customer-overrides
請求書一覧表示、取得、更新、削除、シミュレート/api/v1/billing/invoices
請求書の操作進行、承認、再試行、無効化、スナップショット、税金の再計算/api/v1/billing/invoices/{id}/{action} に対する POST
保留中の明細作成、請求書化/api/v1/billing/customers/{id}/invoices/pending-lines

請求書のライフサイクル: gathering → draft → issuing → issued → (paid | void | uncollectible)


8. 通知

チャネル、ルール、イベントの詳細については、references/notifications.mdを参照してください。

リソース操作ベースパス
チャネル一覧表示、作成、取得、更新、削除/api/v1/notification/channels
ルール一覧表示、作成、取得、更新、削除、テスト/api/v1/notification/rules
イベント一覧表示、取得、再送/api/v1/notification/events

注: API 経由でのチャネル作成は Cloud 専用です(Svix を使用)。セルフホスト環境では YAML 設定を使用します。


9. アプリ

操作メソッドパス
アプリを一覧表示GET/api/v1/apps
アプリを取得GET/api/v1/apps/{id}
アプリを更新PUT/api/v1/apps/{id}
アンインストールDELETE/api/v1/apps/{id}
アプリ:Stripe
操作メソッドパス
Stripe キーを更新PUT/api/v1/apps/{id}/stripe/api-key
Stripe ウェブフックPOST/api/v1/apps/{id}/stripe/webhook
チェックアウトセッションPOST/api/v1/stripe/checkout/sessions
アプリ:カスタム請求
操作メソッドパス
下書きの同期POST/api/v1/apps/{id}/custom-invoicing/draft-synchronized
発行処理の同期POST/api/v1/apps/{id}/custom-invoicing/issuing-synchronized
支払いを更新POST/api/v1/apps/{id}/custom-invoicing/update-payment-status
マーケットプレイス
操作メソッドパス
リスティングを一覧表示GET/api/v1/marketplace/listings
リスティングを取得GET/api/v1/marketplace/listings/{type}
インストール(汎用)POST/api/v1/marketplace/listings/{type}/install
インストール(API キー)POST/api/v1/marketplace/listings/{type}/install/apikey
インストール(OAuth2 URL)GET/api/v1/marketplace/listings/{type}/install/oauth2
インストール(OAuth2 認証)POST/api/v1/marketplace/listings/{type}/install/oauth2/authorize

10. ポータル

操作メソッドパス
トークンを作成POST/api/v1/portal/tokens
トークンを一覧表示GET/api/v1/portal/tokens
トークンを無効化POST/api/v1/portal/tokens/invalidate
メーターをクエリGET/api/v1/portal/meters/{meterSlug}/query

11. 検索情報

操作メソッドパス
通貨を一覧表示GET/api/v1/currencies
進捗を取得GET/api/v1/progress

12. デバッグ

操作メソッドパス
メトリクスを取得GET/api/v1/debug/metrics

13. サブジェクト(非推奨)

代わりに usageAttribution.subjectKeys を指定して顧客を使用してください。

操作メソッドパス
一覧表示GET/api/v1/subjects
作成または更新POST/api/v1/subjects
取得GET/api/v1/subjects/{subjectIdOrKey}
削除DELETE/api/v1/subjects/{subjectIdOrKey}

注意点とエラー

症状原因対処法
顧客の DELETE で 409有効なサブスクリプション、または最終確定前の請求書が存在する先にサブスクリプションをキャンセルし、請求書を無効化または削除してください
「single draft version」で 400プランの下書きが重複しているプランキーが存在する場合は作成をスキップしてください
「only Plans in [draft scheduled] can be published」で 400プランはすでに有効になっている想定される動作です。公開をスキップしてください
POST /notification/channels で 500セルフホスト環境では未実装ローカルでは YAML 設定を使用してください。API は Cloud 専用です
請求書の PATCH で 405PATCH はサポートされていないPOST サブパス /advance、/approve、/void を使用してください
使用量が帰属されないサブジェクトが一致しないイベントの subject は usageAttribution.subjectKeys と一致する必要があります
プランが見つからないキーの形式が間違っているスネークケースを使用してください:pro、pro_plus
イベントが計測されないタイプが一致しないイベントの type はメーターの eventType と一致する必要があります
超過分が請求されないティアの形式が正しくないupToAmount は文字列にし、flatPrice と unitPrice の両方を含めてください
ID が 01G65Z... のように見えるULID 形式標準形式です。正規表現:^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$

セルフホストのトラブルシューティング:Railway/Kafka

「イベントが計測されない」障害モード(Kafka ボリューム、トピックのプロビジョニング、再起動の順序)と sink-worker のパーティション不安定性については、セルフホストのトラブルシューティングを参照してください。


参考資料

公式ドキュメント
SDK
  • Node.js SDK — 公式 Node.js クライアント
  • Python SDK — 公式 Python クライアント
  • Go SDK — 公式 Go クライアント
関連スキル
リファレンス

OpenAPI 3.0 の完全な仕様は assets/openapi-spec.json に同梱されています。リクエスト/レスポンスのスキーマ、クエリパラメーター、エラーコードの正しい情報源として使用してください。

コメント