SocialHub.AI

コンプライアンスと同意 API ライブ

チームが公開しているメンバーのプライバシー/コンプライアンスに関する声明を読み、管理された v2 REST API に対するメンバーごとの同意を確認します。ストアフロント、アプリ、データ ウェアハウス、またはバック オフィスは、スコープ付きの監査されたキーを使用して、現在のステートメントを取得し、そのバージョン履歴をたどって、メンバーが同意したバージョンを正確に確認できます。

認証とスコープ

すべてのエンドポイントは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 キーは関係しません。