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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ffid_python_sdk-0.1.0.tar.gz.
File metadata
- Download URL: ffid_python_sdk-0.1.0.tar.gz
- Upload date:
- Size: 82.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f3bcd2534e41afbb582f3af54f1eef9040c40912fcdc1fd1d61ebe8c355c543
|
|
| MD5 |
29a346596bcaac0af2a8af816acff09d
|
|
| BLAKE2b-256 |
237f81078eedf8987d8f02a2cb74d021a81cd9951ac4d72491706b5c122f37ee
|
File details
Details for the file ffid_python_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ffid_python_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a18ed13a5b83cf9e103350beea2565cf5ce36bbd9a5a98aa0ee49d59411d2e
|
|
| MD5 |
93fc61cbe86e71586fd698450bd38009
|
|
| BLAKE2b-256 |
c0edf1d526fca5d5d6f3986179cad590d2bedc97d2c04ca2c424d10ae32fab3d
|