認証とスコープ
すべてのエンドポイントはFlash APIホスト上にあり、サーバー側のAPIキー(ベアラーキー)で認証を行います。チームは常にキーから派生し、リクエストには含まれません。2つの読み取り専用スコープでアクセスを制御します。
privacy:read— ステートメント: 現在のバージョン、履歴、および特定のバージョン。consent:read— メンバーの同意記録 (バージョン、スコープ、ステータス、時間)。
# Every call uses a server-side API key (Bearer). teamId is derived from the key,
# never sent in the request. Two read scopes:
# privacy:read → the statement (current / history / a version)
# consent:read → a member's consent records
curl https://flash.socialhub.ai/api/v2/privacy/current \
-H "Authorization: Bearer fl_live_your_key_here"声明を読む
公開およびアーカイブされたバージョンのみ — 下書きが公開されることはなく、コンテンツは API から送信される前にサニタイズ (内部レビュー マーカーが削除) されます。
GET https://flash.socialhub.ai/api/v2/privacy/current # scope: privacy:read
# 200 — the current published statement (sanitized), or { "data": null } if none published.
{
"data": {
"id": "pol_…",
"version": "v3",
"versionSeq": 3,
"status": "published",
"locale": "en",
"changeType": "material",
"changeSummary": "Updated data-retention section",
"effectiveAt": "2026-02-01T00:00:00.000Z",
"contentHash": "…sha256…",
"content": { "sections": [ { "key": "intro", "title": "…", "body": "…" } ] }
}
}GET https://flash.socialhub.ai/api/v2/privacy/policies # scope: privacy:read
# 200 — version history, newest first (metadata only; published & archived — never drafts).
{
"data": [
{ "id": "pol_3", "version": "v3", "versionSeq": 3, "status": "published",
"changeType": "material", "effectiveAt": "2026-02-01T00:00:00.000Z", "contentHash": "…" },
{ "id": "pol_2", "version": "v2", "versionSeq": 2, "status": "archived",
"changeType": "minor", "effectiveAt": "2026-01-01T00:00:00.000Z", "contentHash": "…" }
],
"total": 2
}
GET https://flash.socialhub.ai/api/v2/privacy/policies/{id} # one version, full sanitized content (404 for a draft id)同意の確認
メンバーが同意したステートメントのバージョンとスコープを正確に確認してください。記録は追加のみの証拠であり、メンバーが削除しても存続します。 API は、生の IP やユーザー エージェント (PII の最小化) なしで、検証する必要があるものを返します。
GET https://flash.socialhub.ai/api/v2/members/{id}/consents # scope: consent:read
# 200 — the member's consent records, newest first. The evidence to VERIFY consent:
# which statement version + scopes, the method, status and time. No raw IP / user-agent.
{
"data": [
{
"id": "con_…",
"scopes": ["privacy_policy", "marketing_email"],
"method": "register",
"status": "active", // active | legacy_unverified | withdrawn
"policyVersion": "v3",
"policyVersionSeq": 3,
"policyContentHash": "…sha256…",
"consentedAt": "2026-02-02T10:30:00.000Z"
}
]
}
# A member of another team (or unknown) → 404. No consents yet → { "data": [] }.保証
テナントから分離
teamId から来ています API キー。別のチームのIDは404エラーを返します。エンドポイントはキーごとにレート制限されています。
ドラフトは決して漏洩しません
公開/アーカイブされたバージョンのみが提供され、サニタイズされます。進行中のドラフトと内部マーカーは内部に残ります。
文言に拘束される同意
各レコードにはバージョン番号とコンテンツ ハッシュが含まれるため、「v3」は常に同じ単語を意味します。
デフォルトでは最小限
同意記録では生の IP やユーザー エージェントが省略されます。取得できるのは監視データではなく検証証拠です。
機械可読リファレンス: エンドポイントは、v2 OpenAPI 仕様の https://flash.socialhub.ai/api/v2/openapi.json (タグ Privacy) にあります。
同意を超えて:送信時に強制されるトピック購読
同意は法的な入り口です。トピックのサブスクリプションは、メンバーがどのマーケティングを希望するかをより詳細に選択するものです。ポータルのプライバシー領域から、メンバーはプロモーション、ニュースレター、ロイヤルティ、製品のお知らせなどの個別のトピックをオフにし、残りのトピックはそのままにすることができます。これはオプトアウト モデル (レコードなし = 購読済み) であり、サーバー側で強制されます。すべてのキャンペーンにはトピックがあり、メンバーがそのトピックをオフにすると、送信ゲートがメッセージを抑制します。これは、通信ポリシーのフリークエンシー キャップと静かな時間に加えて行われます。トランザクション メッセージは影響を受けません。メンバーが自分で管理します。ポータルはコンシューマー セッション エンドポイント (/api/member/topic-subscriptions) 経由で読み取りと書き込みを行うため、管理者 API キーは関係しません。