コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

purelovers 連携

Speakeasy は purelovers.com と連携し、顧客データの同期とチャットセッションの発行を行います。



purelovers.com の顧客がチャットを利用する際、Tap Gateway 経由でセッションを取得します。

POST /api/v1/auth/session
X-API-Key: {TAP_PURELOVERS_API_KEY}
{
"pureloversUserId": "user123",
"pureloversShopId": "shop456",
"name": "田中太郎",
"email": "tanaka@example.com",
"profileImageUrl": "https://..."
}
{
readonly token: string; // Bearer トークン
readonly expiresAt: string; // 有効期限
readonly user: {
readonly id: string; // Vault ユーザー ID
readonly contactId: string; // Cellar 連絡先 ID
readonly shopId: string; // 店舗 ID
};
}

Counter の店舗設定画面から purelovers のデータを同期できます。

Base RPC: syncShopFromPurelovers({ shopId })

@speakeasy/purelovers-client パッケージが purelovers API へのアクセスを提供します。

import { fetchPurelovers } from '@speakeasy/purelovers-client';
const result = await fetchPurelovers({
baseUrl: env.PURELOVERS_API_URL,
apiKey: env.PURELOVERS_API_KEY,
path: '/speakeasy/shop',
params: { shop_id: pureloversShopId },
basicAuth: env.PURELOVERS_BASIC_AUTH, // レビュー環境用
cookies: env.PURELOVERS_COOKIES // レビュー環境用
});
特徴説明
snake_case → camelCaseレスポンスの自動変換
API Key 認証X-Api-Key ヘッダー
Basic Authレビュー環境対応
Cookie 透過レビュー環境対応

userId で紐付けし、1 purelovers ユーザー = 1 レコードを複数店舗で共有します。

フィールド説明
pureloversIdpurelovers ユーザー ID(UNIQUE)
userIdユーザー ID(NOT NULL)
namepurelovers 表示名
imageプロフィール画像 URL
birthDate生年月日
emailNotificationEnabledメール通知の有効/無効
フィールド説明
shopIdSpeakeasy 店舗 ID
pureloversShopIdpurelovers 店舗 ID

purelovers からのチャット操作は Tap Gateway の REST API 経由で行います。

エンドポイント説明
GET /api/v1/roomsチャットルーム一覧
POST /api/v1/rooms/enterルーム入室(Upsert)
GET /api/v1/rooms/{id}/messagesメッセージ取得
POST /api/v1/rooms/{id}/messagesメッセージ送信
GET /wsWebSocket 接続

詳細な API 仕様は card.plfumg.com の Scalar API Reference を参照してください。