名刺交換 / ミートログ

名刺交換を承認する

PUT/card-exchanges/:exchangeId/accept

申し込まれた側が交換を承認し、成立させます。当事者 2 人それぞれにミートログが記録されます。その時点で 2 人とも参加している開催中のイベントが 1 件だけなら、会ったイベントとして自動で記録します。どちらかがコミュニティとして交換したときは、その側の記録はコミュニティの記録になり、コミュニティの現在の管理者全員で共有します。

認証要ログイン

パスパラメータ

exchangeIdstring必須

交換 ID。

リクエストボディ

shareEmailboolean必須

自分のメールアドレスを相手に開示するか。この相手への開示設定として保存され、後から PATCH /meet-logs/contacts/:userId(相手がコミュニティなら PATCH /meet-logs/communities/:communityId)で変えられます。自分がコミュニティとして交換するとき(myCommunity が null でないとき)は、何を送っても false として扱います。

subscribeNewsletterboolean任意

相手のコミュニティのメルマガを受け取るか。相手がコミュニティとして交換しているときは必須で、それ以外では使いません。true の間は、shareEmail が false でもメールアドレスをそのコミュニティに開示します。

locationCardExchangeLocation | null任意

端末で取得した現在地。取得できなければ省略します。自分の記録にだけ残り、相手には見えません(コミュニティとして交換したときは、コミュニティの記録に残り、管理者全員に見えます)。

補足

再送しても二重に記録されません(成立済みなら結果を返します)。

コミュニティとユーザーの交換では、ユーザーが参加している開催中のイベントが会ったイベントの候補になります(担当した管理者の参加登録や、コミュニティが主催しているかは問いません)。

相手がコミュニティとして交換しているとき(counterpartCommunity が null でないとき)は subscribeNewsletter が必須です。無ければ 400(errorCode 40217)を返します。相手を個人だと思ったまま成立させて、コミュニティにメールアドレスが渡るのを防ぐためです。

交換の途中(スキャン・申し込みのあと)で管理者でなくなった・コミュニティが削除された交換は進められません。自分がコミュニティ側なら交換を消して 403(errorCode 40208)、相手がコミュニティ側なら交換を消して 409(errorCode 40207)を返します。

レスポンス

CardExchange を返します。

リクエスト
curl https://api.4s.link/card-exchanges/EXCHANGE_ID/accept \
-X PUT \
-H "Authorization: Bearer 4s_at_..." \
-H "Content-Type: application/json" \
-d '{
"shareEmail": true,
"location": { "latitude": 35.6581, "longitude": 139.7017, "accuracy": 12 }
}'
レスポンス例
{
"id": "6f1c2d3e-...",
"status": "ACCEPTED",
"role": "TARGET",
"counterpart": {
"id": "u-taro",
"slug": "taro",
"firstName": "Taro",
"lastName": "Yamada",
"nativeName": "山田 太郎",
"avatarUrl": "https://...",
"title": "代表取締役",
"bio": "企業の新規事業を支えるサービスを開発しています。",
"cardDesign": "gradient-01-cobalt-mint",
"cardPhoto": null,
"organization": {
"id": "org-1",
"name": "株式会社HORIZON",
"slug": "horizon",
"logoUrl": null,
"title": "ビジネス開発チーム"
}
},
"counterpartCommunity": null,
"myCommunity": null,
"expiresAt": "2026-07-10T06:33:00.000Z",
"createdAt": "2026-07-10T06:29:40.000Z",
"requestedAt": "2026-07-10T06:30:00.000Z",
"respondedAt": "2026-07-10T06:30:12.000Z",
"myShareEmail": true,
"mySubscribeNewsletter": null,
"result": {
"exchangedAt": "2026-07-10T06:30:12.000Z",
"meetLogId": "ml-2",
"eventId": "ev-1",
"candidateEvents": [
{ "id": "ev-1", "slug": "ivs-2026", "title": "IVS 2026", "languages": null, "startTime": "2026-07-08T10:00:00.000Z", "endTime": "2026-07-10T18:00:00.000Z", "timezone": "Asia/Tokyo", "thumbnailUrl": null, "mainImageUrl": null }
]
}
}