Skip to main content

FeelFlow ID Platform SDK for Python (FastAPI)

Project description

ffid-python-sdk

FeelFlow ID Platform SDK for Python (FastAPI).
FastAPI アプリケーション向けの認証・認可・契約管理 SDK です。

5行のコードでFFID認証を導入可能(最小ボイラープレート)。

  • Python 3.11+
  • FastAPI / Pydantic v2 / httpx

インストール

pip install ffid-python-sdk

クイックスタート(最小例)

from fastapi import FastAPI, Depends
from ffid_sdk import FFIDMiddleware, require_subscription, FFIDContext, get_ffid_context

app = FastAPI()
app.add_middleware(FFIDMiddleware, service_code="chatbot")

@app.get("/api/chat")
@require_subscription(plan=["basic", "pro", "enterprise"])
async def chat(ffid: FFIDContext = Depends(get_ffid_context)):
    return {"message": f"Hello, {ffid.user.email}"}

認証はミドルウェアが行い、get_ffid_context でコンテキストをエンドポイントに注入します。
plan=plans= のエイリアスです(どちらも利用可能)。

主要コンポーネント

FFIDMiddleware

リクエストからアクセストークン(Authorization: Bearer または Cookie ffid_session)を取得し、FFID API でセッション検証後に request.state.ffid_context にコンテキストを格納します。

app.add_middleware(
    FFIDMiddleware,
    service_code="chatbot",
    exclude_paths=["/health", "/docs", "/openapi.json"],
)

FFIDContext

ユーザー・組織・契約情報を保持するリクエストスコープのコンテキスト。
Depends(get_ffid_context) で取得(認証任意)、Depends(require_ffid_auth) で認証必須にできます。

  • ctx.user … 認証ユーザー
  • ctx.organizations … 所属組織一覧
  • ctx.subscriptions … 契約一覧
  • ctx.active_subscription … 有効な契約(1件)

@require_subscription

契約チェック用デコレータ。指定プランまたは任意の有効契約が必要なエンドポイントに付けます。

@require_subscription(plan=["basic", "pro", "enterprise"])  # または plans=
async def premium(ctx: FFIDContext = Depends(get_ffid_context)):
    ...

FFIDClient

FFID API を直接呼ぶクライアント(セッション取得・トークンリフレッシュ・サインアウト・契約確認など)。
ミドルウェアを使わないバックグラウンド処理やテストで利用します。

from ffid_sdk import FFIDClient, FFIDConfig

client = FFIDClient(FFIDConfig(service_code="chatbot"))
response = await client.get_session(token="...")

環境変数

変数 説明
FFID_SERVICE_CODE サービス識別コード(例: chatbot)。ミドルウェアの service_code に渡すか、クライアント設定で指定。
FFID_API_BASE_URL FFID API のベースURL(省略時は本番 https://id.feelflow.co.jp 相当)。

利用規約チェック・リダイレクト

法的文書の同意確認と未同意時のリダイレクトは、Legal クライアント(Service API Key 認証)で実装済みです。
check_pending_agreements_and_redirect_url で未同意一覧を取得し、未同意時は返却される redirect_url へリダイレクトできます。戻り値の第4要素に API エラーが入るため、呼び出し元でエラーハンドリング可能です。

トークン自動リフレッシュ(オプション)

JWT 期限切れ時に refresh トークンで自動再取得する機能をミドルウェアで利用できます。
FFIDMiddleware(..., auto_refresh=True) にし、Cookie ffid_refresh にリフレッシュトークンが含まれる構成で有効化します。

ライセンス

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ffid_python_sdk-1.0.1.tar.gz (89.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ffid_python_sdk-1.0.1-py3-none-any.whl (42.6 kB view details)

Uploaded Python 3

File details

Details for the file ffid_python_sdk-1.0.1.tar.gz.

File metadata

  • Download URL: ffid_python_sdk-1.0.1.tar.gz
  • Upload date:
  • Size: 89.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ffid_python_sdk-1.0.1.tar.gz
Algorithm Hash digest
SHA256 73de4d88091c948e867accc16ce5add444cdfbbbf12f2d5bcc8bcfa8785924de
MD5 4b538b6af3cd2914596446f8d96eb2eb
BLAKE2b-256 f726216cc87a1aeb2269f7e40a2e86eda96c800ae3fcb2ac7684b31520336457

See more details on using hashes here.

File details

Details for the file ffid_python_sdk-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ffid_python_sdk-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 42.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ffid_python_sdk-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 407db69c3824ccefd7090e1abd63ce4423f768822c2f5e2ab797661df8d47afd
MD5 7ab61aff02ed4031bc44c2ba518e645b
BLAKE2b-256 61e10e13620aae7fbb806a3acefc57baa0c9c41e5f19f5672da3fb331dcef208

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page