はじめに
「4S でログイン」は、OAuth 2.0 / OpenID Connect (OIDC) 準拠の認証機能です。外部アプリケーションは 4S アカウントを使ったログインと、ユーザーに代わって 4S の読み取り(GET)API を利用できます。
標準準拠のため、NextAuth (Auth.js)、openid-client など一般的な OIDC ライブラリがそのまま利用できます。対応フローは Authorization Code + PKCE (S256) のみです。
アプリの登録は 4S の開発者メニュー(https://4s.link/developer)から行います。登録すると client_id と client_secret が発行されます。client_secret は登録直後に一度だけ表示されるため、安全な場所に保管してください。
基本情報
| 項目 | 値 |
|---|---|
| Issuer | https://api.4s.link |
| 対応フロー | Authorization Code + PKCE (S256) |
| クライアント認証 | client_secret_basic / client_secret_post / none (public + PKCE) |
| ID Token 署名 | RS256 |
| アクセストークン有効期限 | 1 時間 |
| リフレッシュトークン有効期限 | 60 日(ローテーション方式) |
# OIDC Discoveryhttps://api.4s.link/.well-known/openid-configuration# JWKS (公開鍵)https://api.4s.link/.well-known/jwks.json# 認可エンドポイントhttps://4s.link/oauth/authorize# トークンエンドポイントhttps://api.4s.link/oauth/token# UserInfohttps://api.4s.link/oauth/userinfo# トークン失効https://api.4s.link/oauth/revoke
認証フロー
Authorization Code + PKCE フローの流れは次のとおりです。(1) アプリが code_verifier を生成し、その S256 ハッシュ(code_challenge)を付けて認可エンドポイントへユーザーをリダイレクトする。(2) ユーザーが 4S にログインして同意すると、redirect_uri に認可コード(code)が返る。(3) アプリはトークンエンドポイントで code + code_verifier をトークンに交換する。
https://4s.link/oauth/authorize認可エンドポイントはブラウザでユーザーをリダイレクトさせる URL です(API ではありません)。以下のクエリパラメータを付与してください。
クエリパラメータ
response_typestring必須code 固定
client_idstring必須開発者メニューで発行されたクライアント ID
redirect_uristring必須登録済みのリダイレクト URI と完全一致すること
statestringCSRF 対策のランダム値。コールバックでそのまま返される(強く推奨)
noncestringID Token の nonce クレームとして返されるランダム値(推奨)
code_challengestring必須code_verifier の SHA-256 を base64url エンコードした値
code_challenge_methodstring必須S256 固定
promptstringconsent を指定すると同意済みでも同意画面を再表示する。none はサポートされず interaction_required が返る
ユーザーが承認すると redirect_uri に ?code=...&state=... が付与されて戻ります。拒否した場合や検証エラーの場合は ?error=access_denied などが返ります。認可コードの有効期限は 5 分間・1 回限りです。
const crypto = require("crypto");const codeVerifier = crypto.randomBytes(32).toString("base64url");const codeChallenge = crypto.createHash("sha256").update(codeVerifier).digest("base64url");console.log({ codeVerifier, codeChallenge });
Discovery / JWKS
/.well-known/openid-configurationOIDC Discovery ドキュメントです。エンドポイント URL・署名アルゴリズムなどのメタデータを返します。OIDC ライブラリには issuer としてこのオリジンを設定すれば、残りは自動で解決されます。
/.well-known/jwks.jsonID Token の署名を検証するための公開鍵(JWK Set)です。ID Token のヘッダの kid と一致する鍵で RS256 署名を検証してください。鍵はローテーションされることがあるため、JWKS は都度取得するかキャッシュの失効を実装してください(Cache-Control: max-age=300)。
curl https://api.4s.link/.well-known/openid-configuration
トークンエンドポイント
/oauth/token認可コードをトークンに交換する、またはリフレッシュトークンでトークンを更新するエンドポイントです。リクエストボディは application/x-www-form-urlencoded で送信してください。confidential クライアントは client_secret_basic(Authorization: Basic)または client_secret_post(ボディ)で認証します。
grant_type=authorization_code のパラメータ
grant_typestring必須authorization_code
codestring必須コールバックで受け取った認可コード
redirect_uristring必須認可リクエスト時と同じ値
code_verifierstring必須code_challenge の元になった PKCE 検証値
grant_type=refresh_token のパラメータ
grant_typestring必須refresh_token
refresh_tokenstring必須有効なリフレッシュトークン
リフレッシュトークンはローテーション方式です。refresh_token グラントを実行するたびに新しいリフレッシュトークンが発行され、古いトークンは無効になります。失効済みリフレッシュトークンの再利用を検知した場合、安全のためそのユーザー×クライアントのすべてのトークンが失効します。必ず最新のリフレッシュトークンを保存してください。
curl -X POST https://api.4s.link/oauth/token \-u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" \-H "Content-Type: application/x-www-form-urlencoded" \-d "grant_type=authorization_code" \-d "code=AUTHORIZATION_CODE" \-d "redirect_uri=https://example.com/callback" \-d "code_verifier=CODE_VERIFIER"
ID Token
トークンレスポンスには常に ID Token(RS256 署名の JWT)が含まれます。検証時は (1) JWKS の kid 一致鍵で署名を検証、(2) iss が issuer と一致、(3) aud が自分の client_id と一致、(4) exp が未来、(5) 認可リクエストで nonce を送った場合は nonce クレームの一致、を確認してください。OIDC ライブラリを使えばこれらは自動で行われます。
主なクレーム
| クレーム | 説明 |
|---|---|
sub | ユーザーの一意 ID(4S のユーザー ID) |
iss | 発行者(issuer) |
aud | クライアント ID |
auth_time | ユーザーが認可した時刻(Unix 秒) |
nonce | 認可リクエストの nonce(送信した場合のみ) |
name / given_name / family_name / picture / profile / preferred_username / locale | プロフィール情報(常に含まれる) |
email / email_verified | メールアドレス(常に含まれる) |
{"sub": "a1b2c3d4-....","iss": "https://api.4s.link","aud": "YOUR_CLIENT_ID","iat": 1783900000,"exp": 1783903600,"auth_time": 1783899990,"nonce": "RANDOM_NONCE","name": "太郎 山田","given_name": "太郎","family_name": "山田","picture": "https://.../avatar.png","profile": "https://4s.link/taro","preferred_username": "taro","locale": "ja","email": "taro@example.com","email_verified": true}
トークン失効
/oauth/revokeRFC 7009 準拠のトークン失効エンドポイントです。ユーザーがアプリからログアウトした際などに、不要になったトークンを失効させてください。リフレッシュトークンを失効させると、そこから発行されたアクセストークンも同時に失効します。RFC 7009 の仕様どおり、不明なトークンを指定しても 200 が返ります。
ボディパラメータ
tokenstring必須失効させるアクセストークンまたはリフレッシュトークン
curl -X POST https://api.4s.link/oauth/revoke \-u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" \-H "Content-Type: application/x-www-form-urlencoded" \-d "token=4s_rt_..."
API を呼び出す
取得したアクセストークンを Authorization: Bearer ヘッダに付けて、4S の API を呼び出します。OAuth アクセストークンで利用できるのは、以下の各カテゴリに記載された読み取り・更新エンドポイント(許可リスト)に限られます。許可リストに無いメソッドとパスの組み合わせはすべて 403 になります。
共通仕様
| 項目 | 内容 |
|---|---|
| ベース URL | https://api.4s.link |
| 認証 | Authorization: Bearer <access_token> |
| 利用可能な範囲 | 各カテゴリに記載されたメソッド + パスの組み合わせのみ(GET / POST / PUT / PATCH / DELETE) |
| ページネーション | 一覧系は page / perPage クエリ。レスポンスに pageInfo(totalCount / totalPages / page / perPage) |
| レート制限 | アプリ × ユーザーごとに既定 60 req/分・1,000 req/時。全レスポンスに X-RateLimit-* ヘッダが付く(「レート制限」を参照) |
| エラー(401) | トークンが無効・失効・期限切れ |
| エラー(403) | 許可リストに無いメソッド + パスへのアクセス(/admin 配下は常に不可) |
| 権限 | 各エンドポイントの権限検査は通常のログイン時と同じ。イベントスタッフのロールや組織・コミュニティの管理者権限が必要な操作は、認可したユーザー自身がその権限を持っている必要がある |
| メールアドレス | /manage 配下のレスポンスからは email フィールドが再帰的に除去される(アンケートの自由記述回答は対象外) |
利用できるエンドポイントの全一覧を以下のカテゴリに掲載しています。パス末尾のスラッシュは無視され、/api・/v1 プレフィックスを付けても同じエンドポイントに届きます。パスの大文字小文字は区別され、HEAD メソッドには対応していません。
curl https://api.4s.link/users/me \-H "Authorization: Bearer 4s_at_..."
レート制限
アクセストークンでの API 呼び出しには、アプリと利用ユーザーの組み合わせ(アプリ × ユーザー)ごとにレート制限が掛かります。制限はアプリ全体ではなくユーザーごとに数えるため、あるユーザーが上限に達しても他のユーザーへの API 呼び出しには影響しません。
上限
| ウィンドウ | 既定の上限 | 説明 |
|---|---|---|
| 1 分 | 60 | 短時間のバーストを抑えるための上限 |
| 1 時間 | 1,000 | 総量の上限。分ウィンドウの境界をまたぐ連続アクセスもこの上限で抑えられる |
上限はアプリごとに個別設定できます。既定値では足りない用途がある場合は 4S の運営までお問い合わせください。現在アプリに適用されている上限は、開発者メニューのアプリ詳細ページ、または下記のレスポンスヘッダで確認できます。
レスポンスヘッダ
| ヘッダ | 内容 |
|---|---|
X-RateLimit-Limit-Minute | 1 分あたりの上限 |
X-RateLimit-Remaining-Minute | 1 分あたりの残り回数 |
X-RateLimit-Limit-Hour | 1 時間あたりの上限 |
X-RateLimit-Remaining-Hour | 1 時間あたりの残り回数 |
X-RateLimit-Reset | 残りが少ない方のウィンドウがリセットされる時刻(UNIX 秒) |
Retry-After | 429 のときのみ返る。再試行までに待つべき秒数 |
これらのヘッダは 429 のときだけでなく、すべての成功レスポンスにも付きます。残り回数を見てリクエストの間隔を調整すれば、429 に当たらずに運用できます。ブラウザから実行する場合も CORS で公開されているため読み取れます。
上限を超えると 429 Too Many Requests が返ります。レスポンスボディは { "error": "...", "errorCode": 60007 } です。上限を超えている間のリクエストもカウントされるため、429 が返ったら Retry-After の秒数だけ待ってから再試行してください。即座にリトライを繰り返すと解放が遅くなります。
レート制限はアクセストークンでの API 呼び出しにのみ適用されます。Discovery・JWKS・トークンエンドポイント(/oauth/token)・失効エンドポイント(/oauth/revoke)は対象外です。
curl -i https://api.4s.link/users/me \-H "Authorization: Bearer 4s_at_..."# HTTP/1.1 200 OK# X-RateLimit-Limit-Minute: 60# X-RateLimit-Remaining-Minute: 43# X-RateLimit-Limit-Hour: 1000# X-RateLimit-Remaining-Hour: 912# X-RateLimit-Reset: 1755500460
{"error": "Too many requests. Please slow down.","errorCode": 60007}
エラーリファレンス
トークンエンドポイント・UserInfo・イベント API は RFC 6749 / RFC 6750 形式のエラー({ error, error_description })を返します。認可エンドポイントのエラーは redirect_uri へのクエリパラメータで返ります(redirect_uri 自体が不正な場合を除く)。
| エラー | 発生箇所 | 説明 |
|---|---|---|
invalid_client | token / revoke | クライアント認証の失敗、またはアプリがサスペンド中 |
invalid_grant | token | 認可コード / リフレッシュトークンが無効・期限切れ・使用済み、PKCE 検証失敗、redirect_uri 不一致、連携解除済み |
invalid_request | token / authorize | 必須パラメータの不足・不正 |
access_denied | authorize | ユーザーが認可を拒否した |
interaction_required | authorize | prompt=none が指定されたが対話が必要(サイレント認証は非対応) |
unsupported_grant_type | token | authorization_code / refresh_token 以外の grant_type |
401 Unauthorized | リソース API | アクセストークンが無効・失効・期限切れ、またはアプリがサスペンド中 |
403 Forbidden | リソース API | 許可された GET エンドポイント以外へのアクセス(各カテゴリに記載のエンドポイントのみ利用可) |
429 Too Many Requests | リソース API | レート制限の超過(errorCode: 60007)。Retry-After の秒数だけ待ってから再試行する(「レート制限」を参照) |
{"error": "invalid_grant","error_description": "PKCE verification failed"}
連携例
汎用 OIDC ライブラリでは issuer を設定するだけで Discovery から各エンドポイントが自動解決されます。NextAuth (Auth.js) v5 の設定例を右に示します。redirect_uri(例: https://your-app.com/api/auth/callback/4s)を開発者メニューで忘れずに登録してください。
既知の制限: prompt=none(サイレント認証)と Dynamic Client Registration には対応していません。ID Token に at_hash クレームは含まれません。
import NextAuth from "next-auth";export const { handlers, auth, signIn, signOut } = NextAuth({providers: [{id: "4s",name: "4S",type: "oidc",issuer: "https://api.4s.link",clientId: process.env.FOURS_CLIENT_ID,clientSecret: process.env.FOURS_CLIENT_SECRET,authorization: {params: { scope: "openid profile email" },},// PKCE と state は NextAuth がデフォルトで有効化します},],});
デモアプリ
Next.js + TypeScript で実装した「4S でログイン」の動作サンプルです。ログインフロー(Authorization Code + PKCE)とプロフィール取得の実装を確認できます。
ユーザー / プロフィール
- GET
/usersユーザー一覧・検索ユーザーを検索・一覧取得します。search はスペース区切りで AND 検索され、slug・氏名・タイトル・自己紹介が対象です。 - GET
/users/:idユーザー詳細指定ユーザーの公開プロフィールを取得します(email は含みません)。 - GET
/users/me自分のプロフィール認証中ユーザー自身のプロフィールを取得します。email など非公開フィールドを含みます。 - PUT
/users/meプロフィールを更新認証中ユーザー自身のプロフィールを更新します。送信したフィールドのみが更新されます(部分更新)。null を送るとその値をクリアします。 - POST
/users/me/slugスラッグを設定プロフィール URL に使うスラッグを設定します。スラッグは 2 週間に 1 回しか変更できません。前回変更から 14 日経過していない状態で別の値へ変更しようとすると 400(errorCode 10012)を返し、レスポンスの nextChangeableAt に次回変更可能日時(UTC)が入ります。現在と同じ値を送った場合は制限の対象外で、更新も行わず 200 を返します。 - POST
/users/me/avatarアバター画像をアップロードアバター画像を multipart/form-data でアップロードし、保存された URL を返します。返った URL は PUT /users/me の avatarUrl にも設定済みです。 - POST
/users/me/event-face-photoイベント用顔写真をアップロード受付での本人確認に使う顔写真をアップロードします。顔写真必須のイベント(requiresFacePhoto)への参加登録前に必要です。 - GET
/users/me/organizations自分が管理する組織認証中ユーザーが ADMIN として所属する組織の一覧を返します。 - GET
/users/me/organization_members自分の所属(経歴)認証中ユーザーの所属(職歴・学歴)の一覧を返します。プロフィールの経歴セクションに対応します。 - GET
/users/me/unread-counts未読件数の統合取得認証中ユーザーのチャット・お知らせ・通知の未読件数を 1 リクエストで返します。タブやアプリアイコンのバッジのように、複数の未読を同時に出す画面のためのエンドポイントです。 - GET
/users/:id/sessions登壇セッション指定ユーザーが登壇者として確定しているセッションを取得します。公開済みイベントの、下書きでないセッションだけが返ります。開始時刻の降順です。 - GET
/users/:id/events参加イベント指定ユーザーが参加した(参加確定・チェックイン済み)イベントを開催日の降順で取得します。非公開イベントは除外されます。 - GET
/users/:id/communities参加コミュニティ指定ユーザーが参加している(承認済み・非公開以外の)コミュニティを取得します。ページングはありません。 - GET
/users/:id/organization_membersユーザーの所属(経歴)指定ユーザーの公開されている所属(職歴・学歴)を返します。 - POST
/organization_member所属を追加認証中ユーザー自身の所属(職歴・学歴)を追加します。組織の作成者以外が指定した role は MEMBER に強制されます。 - PUT
/organization_member/:id所属を更新自分の所属を更新します。他人の所属は 403 になります。 - DELETE
/organization_member/:id所属を削除自分の所属を削除します。
組織
- GET
/organizations組織一覧・検索組織(経歴データ)を検索・一覧取得します。 - GET
/organizations/:id組織詳細指定組織の詳細を取得します。 - GET
/manage/organizations/:id組織詳細(管理者向け)管理用の組織情報を取得します。組織の ADMIN のみアクセスできます。 - POST
/manage/organizations組織を作成組織を新規作成します。作成者は自動的に ADMIN として登録されます。権限チェックはなく、ログイン中のユーザーであれば作成できます。 - PUT
/manage/organizations/:id組織を更新組織情報を更新します。組織の ADMIN のみ実行できます。 - DELETE
/manage/organizations/:id組織を削除組織を削除します。ADMIN のみ実行できます。 - GET
/organizations/:id/members組織メンバー一覧組織に所属するメンバーの一覧を返します。ユーザー情報は公開フィールドのみで、email は含みません。 - GET
/manage/organizations/:id/members組織メンバー一覧(管理者向け)管理用のメンバー一覧を取得します。ADMIN のみアクセスできます。 - POST
/manage/organizations/:id/members組織メンバーを追加既存ユーザーを組織メンバーとして追加します。ADMIN のみ実行できます。 - POST
/manage/organizations/:id/logo組織ロゴをアップロード組織のロゴ画像をアップロードします。 - POST
/manage/organizations/:id/logo-darkダークテーマ用ロゴをアップロードダークテーマで表示するロゴ画像をアップロードします。 - PUT
/manage/organizations/:orgId/members/:memberId組織メンバーを更新メンバーの役職・在籍期間・ロールを更新します。ADMIN のみ実行できます。 - DELETE
/manage/organizations/:orgId/members/:memberId組織メンバーを削除組織からメンバーを削除します。ADMIN のみ実行できます。 - PUT
/manage/organizations/:orgId/members/:memberId/role組織メンバーのロールを変更メンバーのロールのみを変更します。最後の ADMIN を降格させることはできません。
イベント
- GET
/eventsイベント一覧・検索イベントを多彩なフィルタで検索・一覧取得します。公開レスポンスでは startTime / endTime / onlineUrl は含まれず、開催日時は schedules を参照します。groupByDate=true で開催日単位のグループ形状になります。 - GET
/manage/events管理できるイベント一覧認証中ユーザーがスタッフとして参加しているイベントの一覧を返します。 - GET
/events/:idイベント詳細イベントの詳細を取得します。パスには ID または slug を指定できます。セッション・登壇者・ステージ・チケット・主催者などを含みます。 - GET
/manage/events/:eventIdイベント詳細(管理者向け)管理用のイベント情報を取得します。eventRead 権限を持つスタッフのみアクセスできます。 - POST
/manage/eventsイベントを作成イベントを DRAFT 状態で作成します。作成者は自動的に ADMIN スタッフとして登録されます。権限チェックはなく、ログイン中のユーザーであれば作成できます。主催者(EventOrganizer)は organizers で指定します。 - PUT
/manage/events/:eventIdイベントを更新イベント情報を更新します。eventWrite 権限が必要です(ミーティング設定のみの更新は eventMeetingWrite でも可)。主催者(EventOrganizer)は organizers 配列で一括更新され、配列に含まれない主催者は削除されます。 - DELETE
/manage/events/:eventIdイベントを削除イベントを削除します。eventWrite 権限が必要です。 - GET
/events/geojsonイベントの地図ピン座標を持つ公開イベントを GeoJSON FeatureCollection で返します。ページングせず、bbox で表示範囲に絞り込みます。フィルタは GET /events と同じ意味です。 - GET
/events/counts-by-dateイベントがある日付の一覧指定期間のうちイベントが存在する日付だけを返します。カレンダーの日付マーク用で、一覧 API より軽量です。 - GET
/events/my-entries自分の参加イベント認証中ユーザーが参加登録したイベントを、参加登録日時の降順で取得します。 - GET
/events/:eventId/is-staffイベントスタッフか判定認証中ユーザーがそのイベントのスタッフかどうかを真偽値で返します。ロールと権限の一覧が必要な場合は GET /manage/events/:eventId/acl を使ってください。 - GET
/events/:eventId/chat-roomイベントのチャットルームイベントの公開チャットルームを取得します(存在しない場合は作成されます)。チャットが有効なイベントの参加者のみアクセスできます。 - GET
/events/:eventId/participants参加者一覧イベントの参加者(参加確定・チェックイン済みかつミーティング受付中)を取得します。参加者リストの公開設定に従いアクセス制御されます。 - GET
/events/:eventId/stagesステージ一覧イベントのステージ(会場)一覧を返します。 - GET
/manage/events/:eventId/stagesステージ一覧(管理者向け)管理用のステージ一覧を返します。stagesRead 権限が必要です。 - POST
/manage/events/:eventId/stagesステージを作成ステージを作成します。stagesWrite 権限が必要です。 - PUT
/manage/events/:eventId/stages/:stageIdステージを更新ステージを更新します。stagesWrite 権限が必要です。 - DELETE
/manage/events/:eventId/stages/:stageIdステージを削除ステージを削除します。stagesWrite 権限が必要です。 - GET
/events/:eventId/sessionsセッション一覧イベントの公開セッション(タイムテーブル)一覧を返します。 - GET
/manage/events/:eventId/sessionsセッション一覧(管理者向け)下書きを含む全セッションを返します。sessionsRead 権限が必要です。 - GET
/events/:eventId/sessions/:idセッション詳細セッション 1 件の詳細を返します。 - GET
/manage/events/:eventId/sessions/:idセッション詳細(管理者向け)管理用のセッション詳細を返します。sessionsRead 権限が必要です。 - POST
/manage/events/:eventId/sessionsセッションを作成セッションを作成します。sessionsWrite 権限が必要です。SessionSpeaker(登壇者との紐づけ)は speakerIds / speakers から作成されます。 - PUT
/manage/events/:eventId/sessions/:idセッションを更新セッションを更新します。sessionsWrite 権限が必要です。speakerIds を送ると SessionSpeaker が配列の内容に合わせて作成・削除されます。 - DELETE
/manage/events/:eventId/sessions/:idセッションを削除セッションを削除します。SessionSpeaker も併せて削除されます。sessionsWrite 権限が必要です。 - GET
/events/:eventId/speakers登壇者一覧イベントの公開登壇者一覧を返します。 - GET
/manage/events/:eventId/speakers登壇者一覧(管理者向け)下書きを含む全登壇者を返します。speakersRead 権限が必要です。 - GET
/events/:eventId/speakers/:speakerId登壇者詳細登壇者 1 件の詳細を返します。担当セッションを含みます。 - GET
/manage/events/:eventId/speakers/:id登壇者詳細(管理者向け)管理用の登壇者詳細を返します。speakersRead 権限が必要です。 - POST
/manage/events/:eventId/speakers登壇者を作成登壇者を作成します。speakersWrite 権限が必要です。userId を指定すると 4S ユーザーと紐づきます。 - PUT
/manage/events/:eventId/speakers/:id登壇者を更新登壇者を更新します。speakersWrite 権限が必要です。 - DELETE
/manage/events/:eventId/speakers/:id登壇者を削除登壇者を削除します。SessionSpeaker も併せて削除されます。speakersWrite 権限が必要です。 - GET
/events/:eventId/announcementsイベントのお知らせ一覧イベントのお知らせ一覧を返します。参加者のみアクセスできます。 - GET
/manage/events/:eventId/announcementsイベントのお知らせ一覧(管理者向け)お知らせの一覧を管理用に取得します。announcementsRead 権限が必要です。 - GET
/events/:eventId/announcements/:idイベントのお知らせ詳細イベントのお知らせ 1 件を返します。参加者のみアクセスできます。 - POST
/manage/events/:eventId/announcementsイベントのお知らせを作成参加者向けのお知らせを作成します。announcementsWrite 権限が必要です。targetStates / targetTicketIds で配信対象を絞り込めます(省略時は CONFIRMED + CHECKED_IN の全チケット参加者)。sendEmail は既定で true のため、省略すると対象者へメールが送信されます。 - PUT
/manage/events/:eventId/announcements/:idイベントのお知らせを更新お知らせを更新します。announcementsWrite 権限が必要です。 - DELETE
/manage/events/:eventId/announcements/:idイベントのお知らせを削除お知らせを削除します。announcementsWrite 権限が必要です。 - GET
/events/:eventId/ticketsチケット一覧イベントの販売中チケット種別の一覧を返します。 - GET
/manage/events/:eventId/ticketsチケット一覧(管理者向け)販売状況を含む全チケット種別を返します。ticketsRead 権限が必要です。 - GET
/events/:eventId/tickets/:ticketIdチケット詳細チケット種別 1 件の詳細を返します。 - POST
/manage/events/:eventId/ticketsチケットを作成チケット種別を作成します。ticketsWrite 権限が必要です。有料チケットには price と paymentType の指定が必要で、Stripe Connect の設定が済んでいる必要があります。 - PUT
/manage/events/:eventId/tickets/:ticketIdチケットを更新チケット種別を更新します。ticketsWrite 権限が必要です。price と paymentType は販売開始後に変更できません。 - DELETE
/manage/events/:eventId/tickets/:ticketIdチケットを削除チケット種別を削除します。既に参加登録があるチケットは削除できません。ticketsWrite 権限が必要です。 - GET
/events/:eventId/questionsアンケート設問一覧参加登録時に回答するアンケートの設問一覧を返します。 - GET
/manage/events/:eventId/questionsアンケート設問一覧(管理者向け)下書きを含む全設問を返します。questionsRead 権限が必要です。 - POST
/manage/events/:eventId/questionsアンケート設問を作成参加登録アンケートの設問を作成します。questionsWrite 権限が必要です。 - PUT
/manage/events/:eventId/questions/:questionIdアンケート設問を更新設問を更新します。questionsWrite 権限が必要です。 - DELETE
/manage/events/:eventId/questions/:questionIdアンケート設問を削除設問を削除します。回答も併せて削除されます。questionsWrite 権限が必要です。 - GET
/events/:eventId/my-questions自分のアンケート回答認証中ユーザー自身が回答したアンケートの設問と回答を返します。 - GET
/events/:eventId/meeting-spotsミーティング場所一覧イベント運営者が設定したミーティング場所の一覧を返します。 - GET
/manage/events/:eventId/meeting-spotsミーティング場所一覧(管理者向け)無効なものを含む全ミーティング場所を返します。meetingSpotsRead 権限が必要です。 - POST
/manage/events/:eventId/meeting-spotsミーティング場所を作成ミーティング場所を作成します。meetingSpotsWrite 権限が必要です。 - PUT
/manage/events/:eventId/meeting-spots/:spotIdミーティング場所を更新ミーティング場所を更新します。meetingSpotsWrite 権限が必要です。 - DELETE
/manage/events/:eventId/meeting-spots/:spotIdミーティング場所を削除ミーティング場所を削除します。meetingSpotsWrite 権限が必要です。 - GET
/events/:eventId/referral-rankingリファラル影響力ランキングイベントの招待チェーンに基づく影響力ランキング(上位 100 件)を取得します。 - GET
/events/:eventId/entries自分の参加登録状態認証中ユーザーの、指定イベントに対する参加登録(キャンセル以外)を取得します。 - GET
/manage/events/:eventId/entries参加者一覧イベントの参加登録一覧を返します。participantsRead 権限が必要です。状態・チケット・キーワードで絞り込めます。 - GET
/manage/events/:eventId/entries/:entryId参加者詳細参加登録 1 件の詳細(アンケート回答を含む)を返します。participantsRead 権限が必要です。 - DELETE
/events/:eventId/entries/:entryId参加登録をキャンセル自分の参加登録をキャンセルします。既にキャンセル済み・チェックイン済みの参加登録はキャンセルできません。有料チケットはイベントの返金ポリシーに従って自動返金されます。 - GET
/events/:eventId/entries/:entryId/referral-ancestorsリファラル祖先(招待元チェーン)指定参加登録から招待元を上方向に辿り、対象に近い順で返します。呼び出しユーザーが当該イベントの確定参加者(CONFIRMED / CHECKED_IN)でない場合は 403 です。 - GET
/events/:eventId/entries/:entryId/referral-descendantsリファラル子孫(招待ツリー)指定参加登録を根として招待ツリーを下方向に展開します。各ノードの直接の子は childrenLimit + cursor でページングされ、子の総数(CONFIRMED / CHECKED_IN のみ)も返します。呼び出しユーザーが確定参加者でない場合は 403 です。 - POST
/events/:eventId/registerイベントに参加登録イベントに参加登録します。無料チケットは即座に UNUSED(承認制の場合は PENDING)になります。有料チケットは先に決済リンクまたは事前決済チェックアウトで支払いを完了してください。 - POST
/events/:eventId/tickets/:ticketId/payment-link決済リンクを作成有料チケットの Stripe 決済リンクを作成します。返された url にユーザーを遷移させ、決済完了後に Webhook 経由で参加登録が確定します。 - POST
/events/:eventId/tickets/:ticketId/prepaid-checkout事前決済チェックアウトを作成アンケート回答を先に保存したうえで Stripe Checkout を作成します。在庫は一定時間だけ確保され、期限内に決済されなければ解放されます。 - POST
/events/:eventId/tickets/:ticketId/payment-intent決済シート用の PaymentIntent を作成モバイルアプリの決済シート(Stripe PaymentSheet)で支払うための PaymentIntent を作成します。事前決済チェックアウトと同じくアンケート回答・プロフィール項目を先に保存し、在庫を一定時間だけ確保します。参加登録は決済完了の webhook で作成されます。 - PUT
/events/:eventId/entries/:entryId/transferチケットを譲渡複数枚購入して余っている未使用(UNUSED)のチケットを、ほかのユーザーへ譲渡します。譲渡できるのは購入者本人で、譲渡不可設定のチケットは対象外です。 - POST
/questions/:questionId/answerアンケートに回答参加登録後にアンケートへ回答(または回答を更新)します。既に回答済みの場合は上書きされます。 - POST
/questions/:questionId/answer-imageアンケート回答画像をアップロード画像回答型の設問に添付する画像をアップロードし、保存された URL を返します。返った URL を POST /questions/:questionId/answer の answer に指定します。 - GET
/manage/events/:eventId/acl自分のスタッフロールと権限認証中ユーザーのそのイベントにおけるスタッフロールと、ロールごとの権限一覧を返します。管理 UI の表示制御に使います。 - PUT
/manage/events/:eventId/thumbnailサムネイル画像をアップロードイベントのサムネイル画像をアップロードします。eventWrite 権限が必要です。 - PUT
/manage/events/:eventId/main-imageメイン画像をアップロードイベントページのメイン画像をアップロードします。eventWrite 権限が必要です。 - POST
/manage/events/:eventId/description-images説明文用の画像をアップロードイベント説明文(Markdown)に埋め込む画像をアップロードし、URL を返します。eventWrite 権限が必要です。 - GET
/manage/events/:eventId/staffイベントスタッフ一覧イベントスタッフの一覧を返します。staffRead 権限が必要です。 - POST
/manage/events/:eventId/staffイベントスタッフを追加既存ユーザーをイベントスタッフとして追加します。staffInviteWrite または staffWrite 権限が必要です。 - PUT
/manage/events/:eventId/staff/:staffIdイベントスタッフのロールを変更スタッフのロールを変更します。staffWrite 権限が必要です。 - DELETE
/manage/events/:eventId/staff/:staffIdイベントスタッフを削除イベントスタッフを削除します。staffWrite 権限が必要です。 - PUT
/manage/events/:eventId/stages/reorderステージの並び順を変更ステージの表示順を一括で変更します。stagesWrite 権限が必要です。 - PUT
/manage/events/:eventId/sessions/bulkセッションを一括更新複数セッションをまとめて更新します。タイムテーブルのドラッグ操作などで使います。sessionsWrite 権限が必要です。 - POST
/manage/events/:eventId/speakers/order登壇者の並び順を変更登壇者の表示順を一括で変更します。speakersWrite 権限が必要です。 - POST
/manage/events/:eventId/speakers/avatar登壇者のアバターをアップロード登壇者用のアバター画像をアップロードし、URL を返します。返った URL を登壇者の avatarUrl に指定します。speakersWrite 権限が必要です。 - PUT
/manage/events/:eventId/speakers/:id/check-in登壇者のチェックイン状態を変更当日受付での登壇者チェックイン状態を更新します。speakersWrite 権限が必要です。 - POST
/manage/events/:eventId/tickets/orderチケットの並び順を変更チケット種別の表示順を一括で変更します。ticketsWrite 権限が必要です。 - PUT
/manage/events/:eventId/questions/orders設問の並び順を変更設問の表示順を一括で変更します。questionsWrite 権限が必要です。 - PUT
/manage/events/:eventId/questions/bulk設問を一括更新複数設問をまとめて作成・更新します。アンケートエディタの保存で使います。questionsWrite 権限が必要です。 - GET
/manage/events/:eventId/questions/:questionId/answers設問への回答一覧特定の設問に対する回答の一覧を返します。questionsRead 権限が必要です。 - GET
/manage/events/:eventId/survey-responsesアンケート回答一覧参加者ごとのアンケート回答を横断的に返します。questionsRead 権限が必要です。 - GET
/manage/events/:eventId/speaker-survey-responses登壇者アンケート回答一覧登壇者向けアンケートの回答を返します。questionsRead 権限が必要です。 - GET
/manage/events/:eventId/question-aggregationアンケート集計選択式設問の回答数を集計して返します。questionsRead 権限が必要です。 - POST
/manage/events/:eventId/meeting-spot-imagesミーティング場所の画像をアップロードミーティング場所に設定する画像をアップロードし、URL を返します。meetingSpotsWrite 権限が必要です。 - POST
/manage/events/:eventId/meeting-spots/reorderミーティング場所の並び順を変更ミーティング場所の表示順を一括で変更します。meetingSpotsWrite 権限が必要です。 - GET
/manage/events/:eventId/entries/counts参加者数の集計参加状態・チケット別の参加登録数を返します。participantsRead 権限が必要です。 - GET
/manage/events/:eventId/entries/by-checkin-tokenチェックイントークンから参加者を取得参加者の QR コードに含まれるチェックイントークンから参加登録を検索します。受付アプリでの本人照合に使います。participantsRead 権限が必要です。 - GET
/manage/events/:eventId/entries/:entryId/activity-logs参加者の操作履歴参加登録に対する状態変更・チェックインなどの操作履歴を返します。participantsRead 権限が必要です。 - PUT
/manage/events/:eventId/entries/:entryId/state参加状態を変更(チェックイン)参加登録の状態を変更します。CHECKED_IN を指定すると受付チェックイン、CANCELED でキャンセル、承認制イベントでは CONFIRMED / REJECTED で承認・却下します。participantsWrite 権限が必要です。 - PUT
/manage/events/:eventId/entries/:entryId/ticket参加者のチケットを変更参加登録に紐づくチケット種別を変更します。差額の決済・返金は行われません。participantsWrite 権限が必要です。
コミュニティ
- GET
/communitiesコミュニティ一覧・検索公開コミュニティを検索・一覧取得します。tags は全タグ AND マッチです。 - GET
/communities/:idコミュニティ詳細指定コミュニティの詳細を取得します。非公開コミュニティにアクセス権が無い場合は 404 を返します。 - GET
/manage/communities/:idコミュニティ詳細(管理者向け)管理用のコミュニティ情報を取得します。ADMIN のみアクセスできます。 - POST
/manage/communitiesコミュニティを作成コミュニティを新規作成します。作成者は自動的に ADMIN メンバーとして登録されます。権限チェックはなく、ログイン中のユーザーであれば作成できます。 - PUT
/manage/communities/:idコミュニティを更新コミュニティ情報を更新します。ADMIN のみ実行できます。 - DELETE
/manage/communities/:idコミュニティを削除コミュニティを削除します。ADMIN のみ実行できます。 - GET
/communities/:id/playlistsコミュニティのプレイリスト指定コミュニティの公開プレイリストを取得します(アイテムは含みません)。 - GET
/communities/:id/playlists/:playlistIdコミュニティのプレイリスト詳細コミュニティに紐づくプレイリストの詳細を返します。 - GET
/communities/:id/membersコミュニティメンバー一覧コミュニティのメンバー一覧を返します。ユーザー情報は公開フィールドのみで、email は含みません。 - GET
/manage/communities/:id/membersコミュニティメンバー一覧(管理者向け)管理用のメンバー一覧を取得します。ADMIN のみアクセスできます。 - POST
/manage/communities/:id/membersコミュニティメンバーを追加既存ユーザーをコミュニティメンバーとして追加します。ADMIN のみ実行できます。 - PUT
/manage/communities/:id/members/:memberIdコミュニティメンバーを更新メンバーのロール・ステータス・肩書きを更新します。参加承認(PENDING → APPROVED)もこのエンドポイントで行います。ADMIN のみ実行できます。 - DELETE
/manage/communities/:id/members/:memberIdコミュニティメンバーを削除コミュニティからメンバーを削除します。ADMIN のみ実行できます。 - GET
/communities/:id/members/countsコミュニティメンバー数ロール・ステータス別のメンバー数を返します。 - GET
/manage/communities/:id/members/countsコミュニティメンバー数(管理者向け)ロール・ステータス別のメンバー数を返します。ADMIN のみアクセスできます。 - GET
/communities/:id/eventsコミュニティ主催イベント一覧コミュニティが主催するイベントの一覧を返します。 - GET
/communities/:id/my-membership自分のメンバーシップ認証中ユーザーのそのコミュニティにおけるメンバーシップを返します。未参加の場合は null を返します。 - GET
/communities/:id/chat-roomコミュニティのチャットルームコミュニティのチャットルームを取得します(存在しない場合は作成されます)。メンバーのみアクセスできます。 - POST
/communities/:id/joinコミュニティに参加コミュニティに参加します。joinType が FREE_JOIN なら即座に APPROVED、APPROVAL_REQUIRED なら PENDING になります。INVITATION_ONLY のコミュニティには参加できません。 - DELETE
/communities/:id/leaveコミュニティから退会コミュニティから退会します。最後の管理者は退会できません。 - GET
/communities/:communityId/announcementsコミュニティのお知らせ一覧コミュニティのお知らせ一覧を返します。メンバーのみアクセスできます。 - GET
/manage/communities/:communityId/announcementsお知らせ一覧(管理者向け)コミュニティのお知らせ一覧を管理用に取得します。ADMIN のみアクセスできます。 - GET
/communities/:communityId/announcements/:idコミュニティのお知らせ詳細コミュニティのお知らせ 1 件を返します。メンバーのみアクセスできます。 - POST
/manage/communities/:communityId/announcementsお知らせを作成コミュニティのお知らせを作成します。sendEmail は既定で true のため、省略するとメンバーへメール通知されます。 - PUT
/manage/communities/:communityId/announcements/:idお知らせを更新コミュニティのお知らせを更新します。ADMIN のみ実行できます。 - DELETE
/manage/communities/:communityId/announcements/:idお知らせを削除コミュニティのお知らせを削除します。ADMIN のみ実行できます。 - POST
/manage/communities/:id/logoコミュニティロゴをアップロードコミュニティのロゴ画像をアップロードします。 - POST
/manage/communities/:id/logo-darkダークテーマ用ロゴをアップロードダークテーマで表示するロゴ画像をアップロードします。
プレイリスト
- GET
/playlistsプレイリスト一覧公開プレイリストを検索・一覧取得します。 - GET
/manage/playlistsプレイリスト一覧(管理者向け)コミュニティのプレイリスト一覧を管理用に取得します。communityId クエリが必須で、そのコミュニティの ADMIN のみアクセスできます。 - GET
/playlists/:playlistIdプレイリスト詳細指定プレイリストの詳細を取得します(アイテムは別エンドポイント)。 - GET
/manage/playlists/:playlistIdプレイリスト詳細(管理者向け)管理用のプレイリスト詳細を返します。コミュニティの ADMIN のみアクセスできます。 - POST
/manage/playlistsプレイリストを作成コミュニティのプレイリストを作成します。そのコミュニティの ADMIN のみ実行できます。 - PATCH
/manage/playlists/:playlistIdプレイリストを更新プレイリストを更新します。送信したフィールドのみが更新されます。 - DELETE
/manage/playlists/:playlistIdプレイリストを削除プレイリストを削除します。コミュニティの ADMIN のみ実行できます。 - GET
/playlists/:playlistId/itemsプレイリストアイテムプレイリストのアイテムを取得します。page 指定で番号ページング、cursor 指定でカーソルページングになります。groupByDate=true で開催日グループ形状になります。 - GET
/manage/playlists/:playlistId/itemsプレイリスト項目一覧(管理者向け)プレイリストに含まれる項目を管理用に取得します。 - POST
/manage/playlists/:playlistId/itemsプレイリストに項目を追加プレイリストにイベントまたは外部リンクを追加します。eventId を指定すると 4S 上のイベント、externalUrl を指定すると外部リンクになります。 - PATCH
/manage/playlists/:playlistId/items/:itemIdプレイリスト項目を更新プレイリスト項目の表示名・説明・表示順を更新します。 - DELETE
/manage/playlists/:playlistId/items/:itemIdプレイリスト項目を削除プレイリストから項目を削除します。 - GET
/playlists/:playlistId/geojsonプレイリストの地図ピンプレイリスト内の 4S イベントのうち座標を持つものを GeoJSON FeatureCollection で返します。ページングせず、bbox で表示範囲に絞り込みます。フィルタは GET /playlists/:playlistId/items と同じ意味です。 - POST
/playlists/:playlistId/preview-external追加申請用の外部 URL プレビュー追加申請フォーム用に、外部 URL の OG / JSON-LD からタイトル・説明・画像・開催日時を取得します。追加申請を受け付けているプレイリストでのみ利用できます。 - POST
/playlists/:playlistId/item-requestsイベントの追加申請プレイリストへのイベント追加を申請します。申請したアイテムは status=PENDING で登録され、コミュニティ管理者が承認するまで公開されません。承認・非承認は /manage/playlists 系の API で行います。 - POST
/manage/playlists/preview-external外部 URL のプレビューを取得プレイリストに外部リンクを追加する前に、URL の OGP 情報(タイトル・説明・画像)を取得します。 - POST
/manage/playlists/:playlistId/thumbnailプレイリストのサムネイルをアップロードプレイリストのサムネイル画像をアップロードします。 - POST
/manage/playlists/:playlistId/items/:itemId/thumbnailプレイリスト項目のサムネイルをアップロードプレイリスト項目のサムネイル画像をアップロードします。
チャット
- GET
/chat-roomsチャットルーム一覧認証中ユーザーが参加しているチャットルームの一覧を返します。未読件数と直近のメッセージを含みます。 - GET
/chat-rooms/:idチャットルーム詳細チャットルームの詳細とメンバー一覧を返します。ルームのメンバーのみアクセスできます。 - POST
/chat-roomsチャットルームを作成チャットルームを作成します。自分を含めて 2 人なら DIRECT、3 人以上なら GROUP になります。DIRECT で既存のルームがある場合はそれを返します。initialMessage は任意で、指定すると最初のメッセージも作成されます。**新規作成時は「作成しました」のシステムメッセージが必ず 1 行入ります**(initialMessage の有無にかかわらず。既存の DIRECT ルームを返す場合は入りません)。 - PUT
/chat-rooms/:idチャットルーム名を変更グループチャットの名前を変更します。参加中のメンバーだけが変更できます。1 対 1 のチャットは参加者名から表示名を組み立てるため、イベント・コミュニティのチャットはそちらの名称を使うため、いずれも変更できません。空文字を送ると名前なしに戻ります。 - GET
/chat-rooms/:id/membersチャットルームのメンバー一覧チャットルームのメンバーをページネーション付きで返します。参加中(JOINED)と招待中(INVITED)のメンバーが対象です。取得できるのは自分がメンバーのルームのみです。 - POST
/chat-rooms/:id/membersチャットルームにメンバーを招待チャットルームにメンバーを招待します。招待されたユーザーは INVITED 状態になり、参加または辞退を選べます。招待できるのは JOINED 状態のメンバーのみです。 - DELETE
/chat-rooms/:id/members/:memberIdチャットルームからメンバーを削除チャットルームからメンバーを削除します。削除できるのは JOINED 状態のメンバーのみで、自分自身は削除できません(離脱を使ってください)。イベント・コミュニティのチャットでは使えません。 - GET
/chat-rooms/:id/mention-candidatesメンション候補の取得@ メンションできる相手を返します。メッセージ送信時の mentions は、ここに出てくる相手だけが有効です(サーバー側で同じ判定をします)。コミュニティチャットでは承認済みのコミュニティメンバーが対象で、メンバー一覧 API(ChatRoomMember の行)とは集合が異なります。イベントチャットではメンションを使わないため常に空配列を返します。ページネーションはありません。limit で打ち切られるので、絞り込みは q で行ってください。 - PUT
/chat-rooms/:id/joinチャットルームに参加招待されたチャットルームに参加します(INVITED → JOINED)。 - PUT
/chat-rooms/:id/declineチャットルームの招待を辞退チャットルームへの招待を辞退します。招待レコードが削除されるため、以降そのルームは一覧に表示されません(再度招待されれば参加できます)。 - PUT
/chat-rooms/:id/leaveチャットルームから退出チャットルームから退出します(JOINED → LEFT)。メンバーレコードは LEFT 状態で残ります。 - GET
/chat-rooms/:roomId/messagesメッセージ一覧チャットルームのメッセージをカーソルページネーションで返します。ルームのメンバーのみアクセスできます。 - POST
/chat-rooms/:roomId/messagesメッセージを送信チャットルームにメッセージを送信します。JSON で content を送るとテキストメッセージ、multipart/form-data で file を送ると画像メッセージになります。ルームのメンバーのみ送信できます。 - DELETE
/chat-rooms/:roomId/messages/:messageIdメッセージを削除自分が送ったメッセージを削除します(論理削除)。削除後は一覧・未読件数・画像一覧から除外されます。既に削除済みでも成功します。 - GET
/chat-rooms/:roomId/messages/:messageId/reactionsリアクションした人の一覧メッセージに付いたリアクションを、押したユーザーの情報つきで返します。メッセージ一覧のレスポンスには userIds しか含まれないため、誰が押したかを表示するときはこちらを使います。 - POST
/chat-rooms/:roomId/messages/:messageId/reactionsリアクションを付けるメッセージに絵文字リアクションを付けます。1 ユーザーが複数種類の絵文字を付けられます。同じ絵文字を 2 回送っても増えません(冪等)。使える絵文字は決まった一覧のみです。 - DELETE
/chat-rooms/:roomId/messages/:messageId/reactionsリアクションを外す自分が付けたリアクションを外します。付けていなくても成功します(冪等)。絵文字はクエリパラメータで指定します。 - GET
/chat-rooms/:roomId/imagesルーム内の画像一覧チャットルームにアップロードされた画像を新しい順に返します。削除済みのメッセージの画像は含まれません。 - PUT
/chat-rooms/:roomId/notificationsルームの通知 ON/OFFこのチャットルームの通知(プッシュ・アプリ内通知・メール)を切り替えます。未読件数には影響しません(鳴らさないだけでバッジは増えます)。現在値はルーム詳細の自分のメンバー情報の notificationsEnabled から取得できます。 - GET
/chat-rooms/:roomId/filesファイル一覧チャットルームのファイルライブラリを返します。フォルダとファイルを 1 本の items にまとめ、種別を分けず名前順に並べます。パンくず(breadcrumbs)も同梱します。folderId を省略するとルート直下です。ページネーションは無く、そのフォルダの中身を全件返します。 - POST
/chat-rooms/:roomId/filesアップロードしたファイルを登録S3 に PUT したファイルをライブラリに登録します。実サイズをサーバーが検証し、10MB を超えていれば拒否します。同じフォルダに同名のファイルがある場合は「report (2).pdf」のように採番されます。postToChat を true にすると、チャットにもメッセージとして流れます。 - PUT
/chat-rooms/:roomId/files/:fileIdファイルの名前変更・移動ファイル名の変更と、別フォルダへの移動を行います。移動先に同名のファイルがある場合は採番されます。 - DELETE
/chat-rooms/:roomId/files/:fileIdファイルを削除自分がアップロードしたファイルを削除します(論理削除)。既に削除済みでも成功します。 - POST
/chat-rooms/:roomId/files/upload-urlアップロード用の署名付き URL を発行ファイルは API を経由せず S3 へ直接アップロードします。この API が返す uploadUrl に対して、requiredHeaders をそのまま付けて PUT してください。Authorization ヘッダは付けないこと(署名が壊れます)。アップロード後に POST /chat-rooms/:roomId/files で登録します。上限は 10MB です。 - GET
/chat-rooms/:roomId/files/:fileId/urlダウンロード用の署名付き URL を発行ファイルは非公開のため、都度この API で期限付きの URL を取得します。disposition=inline は PDF など許可された形式のときだけ尊重され、それ以外は必ず attachment になります。URL はファイル名の指定を含むので、そのままリンクとして開けばダウンロードできます。 - GET
/chat-rooms/:roomId/foldersフォルダ一覧(フラット)ルームのフォルダをページネーションなしでフラットに返します。移動先の選択 UI などでツリーを組み立てるのに使います。 - POST
/chat-rooms/:roomId/foldersフォルダを作成フォルダを作成します。フォルダは多階層にできますが、深さは 10 段までです。同じ階層に同名のフォルダは作れません(ファイルと違い採番しません)。 - PUT
/chat-rooms/:roomId/folders/:folderIdフォルダの名前変更・移動フォルダ名の変更と、別フォルダへの移動を行います。自分自身や自分の子孫の下へは移動できません。移動によって深さが 10 段を超える場合も拒否されます。 - DELETE
/chat-rooms/:roomId/folders/:folderIdフォルダを削除フォルダを中のファイルとサブフォルダごと削除します(論理削除)。削除できるのは作成者だけで、中に他の人がアップロードしたファイルがある場合は拒否されます。レスポンスの件数を確認ダイアログに使えます。 - PUT
/chat-rooms/:roomId/readメッセージを既読にするチャットルームのメッセージを既読にし、未読件数を 0 にします。
通知
- GET
/notifications通知一覧認証中ユーザー宛の通知を新しい順で取得します。削除済みの通知は含まれません。`unreadFirst=true` を指定すると未読を先頭にまとめ、その中を新しい順で並べます(ヘッダのドロップダウン向け)。 - GET
/notifications/unread-count未読通知件数認証中ユーザーの未読通知件数だけを返します。バッジ表示のための軽量なエンドポイントです。 - PUT
/notifications/:id/read通知を既読にする指定した通知を既読にします。冪等で、既に既読の通知に対して呼んでも成功します。他ユーザー宛の通知や削除済みの通知を指定した場合は 404 を返します。 - PUT
/notifications/read-allすべての通知を既読にする認証中ユーザーの未読通知をすべて既読にします。既読にした件数を返します。
プッシュ通知
- GET
/push/devicesプッシュ通知デバイス一覧認証中ユーザーが、このアプリから登録したプッシュ通知デバイスの一覧を、登録の新しい順で取得します。無効化済みのデバイスは含まれません。 - POST
/push/devicesプッシュ通知デバイスを登録FCM の登録トークンを保存し、チャットの新着メッセージをプッシュ通知で受け取れるようにします。token をキーにした冪等な登録で、同じ token を再送しても重複しません。端末の譲渡・アカウント切り替えで既存 token が別ユーザーに紐づいていた場合は、所有者が認証中のユーザーに付け替えられます。無効化されていたトークンは再び有効になります。 - DELETE
/push/devices/:deviceIdプッシュ通知デバイスを解除指定したデバイスへのプッシュ通知を停止します。サインアウト時に呼び出してください。他のアプリが登録したデバイスや他ユーザーのデバイスを指定した場合は 404 を返します。
ブックマーク
- GET
/bookmarksブックマーク一覧認証中ユーザーがブックマークしたイベントを、登録の新しい順で取得します。 - POST
/bookmarksブックマークに追加対象をブックマークに追加します。冪等に動作し、既にブックマーク済みでもエラーにはなりません。entity が EVENT の場合は対象イベントの存在チェックを行い、存在しなければ 404 を返します。 - GET
/bookmarks/idsブックマーク済み ID 一覧認証中ユーザーがブックマークした対象の ID 配列を、新しい順で取得します。 - DELETE
/bookmarks/:entity/:entityIdブックマークを解除ブックマークを解除します。ブックマークされていない対象を指定してもエラーにはなりません。
その他
- GET
/slug/:slugslug からリソース解決slug から対応するリソース(ユーザー・組織・コミュニティ・イベント)を解決します。User → Organization → Community → Event の順で照合します。 - GET
/tags/masterタグの候補一覧運営が用意したタグの候補を返します。プロフィールのスキルタグなど、入力欄のサジェストに使います。`order` の昇順・同順なら name の昇順で返ります。 - GET
/tags/usage実際に使われているタグ実データに付いているタグを entity × category ごとに集計して返します。検索の絞り込み候補に使えます。 - GET
/places/autocomplete地名の候補検索入力中の文字列から地名の候補を返します。Google Places API をサーバー側で呼ぶため、クライアントに API キーを持たせる必要はありません。プロフィールの居住地入力に使います。 - GET
/places/:placeId地名の詳細候補の placeId から、ユーザーの居住地(location)として保存できる形のオブジェクトを返します。表示言語のほかに日本語表記を languages.ja に含みます。