テナント API
ベース URL: https://{tenantCode}.{domain}/api/tenant/
認証: Authorization: Bearer <token> + authorize:tenant ミドルウェア
テナント API はサブドメインベースで分離されています。IdentifyTenant ミドルウェアがサブドメインからテナントを自動識別します。
必要な権限
一部のエンドポイントは、テナントユーザーの役割に紐づく権限(TenantPermission)を要求します。持っていない場合は 403 Forbidden を返します。
| 対象 | 参照 | 操作 |
|---|---|---|
| サブスクリプション・プラン・Senter連携(契約情報) | contract:read | contract:write |
| 組織の基本情報・営業日と休日 | tenant:read | tenant:write |
| IPアドレス制限 | tenant:write | tenant:write |
| テナントユーザー・招待・役割 | user:read | user:write |
| 操作ログ | activity-log:read | - |
| MCP Service Token | mcp.service-tokens:manage | mcp.service-tokens:manage |
お知らせ・ガイド・利用量・エンタイトルメントは権限を要求しません(配信画面などで残数を表示するため)。MCP連携の同意(/mcp-oauth-consents)も、各ユーザーが自分の同意だけを参照・取消するため権限を要求しません。
権限の確認は次の2層で行います。詳細はポリシーを参照してください。
| 対象 | 担当 |
|---|---|
| レコード単位の判定が必要なもの | ポリシー($this->authorize())。tenant.can は粗い下限として重ねる |
| 判定対象のレコードがないもの(Senter連携など) | tenant.can ミドルウェア |
他テナントのレコードを ID で指定した場合は、存在を伏せるため 403 ではなく 404 Not Found を返します。
テナントユーザーの操作には次の制限があります。
- 自分自身のステータス・役割は変更できず、自分自身のアカウントも削除できない(権限を失って設定を戻せなくなるのを防ぐため)
- オーナー(
*を持つ役割)の停止・降格・削除・付与はオーナーだけが行える
画面は、組織の設定(createSettingsRoutes())のサイドバーが、上の権限で項目を出し分けます(出せる項目が無い人には、ユーザーのメニュー AccountMenu に組織の設定も出しません)。詳しくはフロントエンドを参照してください。ルートガードは同梱していないため、URL を直接開いた場合は API の 403 で止まります。
認証
トークンでログイン
POST https://{tenantCode}.{domain}/api/auth/login-by-tokenテナント専用のログイントークンを使用してサインインします。
現在のユーザー情報取得
GET https://{tenantCode}.{domain}/api/auth/meログイン中のテナントユーザー情報を返します。
お知らせ
利用者に見えるのは、公開で、日付が今日までのものだけです(新しい順)。下書き・アーカイブ済み・日付が先のものは、詳細でも 404 になります。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/announcements/paginated | ページネーション一覧 |
| GET | /api/tenant/announcements | 一覧取得(isTop でホームに出すものに、limit で件数(最大50件)に絞る) |
| GET | /api/tenant/announcements/urgent | 緊急のお知らせ(緊急表示の期限の内のもの) |
| GET | /api/tenant/announcements/{id} | 詳細取得 |
サブスクリプション
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/subscriptions | 一覧取得 |
| POST | /api/tenant/subscriptions | 新規作成(プラン変更) |
| PUT | /api/tenant/subscriptions/{id}/update-renew-subscription-enabled | 自動更新設定の変更 |
プラン
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/plans | 利用可能なプラン一覧 |
| GET | /api/tenant/plans/{id} | プラン詳細 |
一覧・詳細のどちらも、そのテナントが選択できるプランだけを返します(Plan::selectable())。公開中のノーマルプランは常に対象で、トライアル契約中はトライアルプラン、スペシャルプラン契約中は契約中のプラン自体が加わります。対象外のプランは ID を指定しても 404 Not Found になります。
利用量
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/monthly-usages/get-this-month-usages | 今月の利用量 |
組織の基本情報
ログイン中の組織の名前と連絡先です。組織ID(code)は URL に使うため変えられません。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/tenant | 取得(tenant:read) |
| PUT | /api/tenant/tenant | 更新(tenant:write)。name・contactPerson・email・phoneNumber は必須、postalCode・address は任意 |
組織の情報には、営業時間と営業する曜日(openingTime・closingTime・businessWeekdays)も含みます(ログイン中のユーザーの情報 GET /api/auth/me の組織にも含む)。
IPアドレス制限
ログイン中の組織に入れる接続元です。1件も無ければ制限しません。1件以上あれば、どれにも当たらない接続元からは、組織の API(tenant.restrict_ip を付けた経路。組織へのログイン login-by-token を含む)が 403(code: IP_RESTRICTED、拒んだ接続元 ip)になります。許可している接続元を管理する人以外に見せないよう、参照にも tenant:write を求めます。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/allowed-ips | 登録(作った順)と、今の接続元と、それがどれかの登録に当たるか { data: [{ id, cidr, reason, createdAt, ... }], clientIp, clientIpAllowed }(範囲で許可していても当たる。運営の接続元は含めない) |
| POST | /api/tenant/allowed-ips | 追加。cidr(必須。IPv4・IPv6 の1つのアドレスか CIDR の範囲)・reason(任意) |
| PUT | /api/tenant/allowed-ips/{id} | 変える(項目は追加と同じ) |
| DELETE | /api/tenant/allowed-ips/{id} | 消す。最後の1件を消すと制限をやめる |
- 締め出しを防ぐ: 変えた結果、登録が1件以上あるのに今の接続元がどれにも当たらなくなる追加・変更・削除は、
422(cidr)で保存しません。運営の接続元(lase.ip_restriction.allowlist)は、制限と同じく常に当たるとみなします - 形の崩れた値・すべてを許す範囲(
/0)・組織の中で同じ値は422です - 変えると、制限の判定に使うキャッシュ(
tenant:{code}:allowed_ips)を捨てます
組織の営業日と休日
営業時間・営業する曜日と、年ごとの休日です。営業日は、営業する曜日のうち、休日でない日です(数え方はサービスの BusinessCalendar)。どの操作も、その年の暦 { year, openingTime, closingTime, businessWeekdays, holidays: [{ id, date, name, isPublic }] } を返します。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/business-calendar?year=2026 | 取得(tenant:read)。year を省くと今年 |
| PUT | /api/tenant/business-calendar | 営業時間と営業する曜日の更新(tenant:write)。openingTime・closingTime(H:i。終業は始業より後)・businessWeekdays(ISO の曜日番号 1〜7。1つ以上)は必須 |
| POST | /api/tenant/holidays | 休日を足す(tenant:write)。date(Y-m-d)・name。同じ日があれば名前を変え、組織の休日にする |
| POST | /api/tenant/holidays/import | 指定した年(year)の日本の祝日を取り込む(tenant:write)。振替休日・国民の休日を含む。すでに休日の日は変えない |
| DELETE | /api/tenant/holidays/{id} | 休日を消す(tenant:write) |
テナントユーザー
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/tenant-users/paginated | ページネーション一覧(エージェントは含まない) |
| PUT | /api/tenant/tenant-users/{id} | ステータス・役割(status, tenantRoleId)の更新。エージェントは 404(エージェントの API で変える) |
| DELETE | /api/tenant/tenant-users/{id} | 組織から外す |
操作ログ
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/activity-logs/paginated | ページネーション一覧(activity-log:read)。type(種別)・userId(操作した人)・from・to(日付。両端の日を含む)で絞り込める。各行の summary は、何に対して行ったか(付帯情報のうち画面に出すもの) |
組織の画面での次の操作を、組織の操作ログに残します(種別は ActivityLogType の TENANT_*)。メンバーの招待・招待の取り消し・メンバーの変更(状態・役割)と削除、組織の基本情報と2段階認証の決まりの変更、IPアドレス制限の追加・変更・削除、エージェントの作成・変更・削除、エージェントのトークンの発行・再発行・無効化。
テナントユーザー招待
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/tenant-user-invitations | 招待一覧 |
| POST | /api/tenant/tenant-user-invitations | 招待作成 |
| DELETE | /api/tenant/tenant-user-invitations/{id} | 削除 |
| POST | /api/tenant/tenant-user-invitations/{id}/revoke | 招待取消 |
テナントロール
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/tenant-roles | 一覧取得 |
ガイド
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/guides/{slug} | ガイド記事取得 |
| GET | /api/tenant/guides/files/{filepath} | ガイドファイル取得 |
Senter 連携
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/tenant/senter/service | サービス情報 |
| GET | /api/tenant/senter/customer | 顧客情報 |
| GET | /api/tenant/senter/contract | 契約情報 |
| POST | /api/tenant/senter/contract | 契約更新 |
| GET | /api/tenant/senter/service-plans | サービスプラン一覧 |
| GET | /api/tenant/senter/service-options | サービスオプション一覧 |
| GET | /api/tenant/senter/service-addons | サービスアドオン一覧 |
| POST | /api/tenant/senter/service-addons/order | アドオン注文 |
| GET | /api/tenant/senter/unbilled-utilizations | 未請求利用量 |
| GET | /api/tenant/senter/invoices | 請求書一覧 |
| GET | /api/tenant/senter/invoices/{invoiceId} | 請求書詳細 |
| GET | /api/tenant/senter/stripe/public-key | Stripe 公開鍵 |
| POST | /api/tenant/senter/stripe/customers | Stripe 顧客作成 |
| POST | /api/tenant/senter/stripe/setup-intents | SetupIntent 作成 |
| PUT | /api/tenant/senter/stripe/payment-methods | 支払方法更新 |
| GET | /api/tenant/senter/stripe/payment-methods | 支払方法一覧 |
| POST | /api/tenant/senter/stripe/payment-methods/set-default | デフォルト支払方法設定 |
| DELETE | /api/tenant/senter/stripe/payment-methods | 支払方法削除 |