BOUNTY API(v2.0.0)
機械可読な契約は /api/v1/openapi.json(OpenAPI 3.1)です。
- 認証:
Authorization: Bearer <access_token>。トークンはPOST /api/v1/auth/tokenで取得します(アクセス 60 分・リフレッシュ 400 日、リフレッシュはローテーション)。 - Bearer を付けたリクエストは cookie を使わず、応答で cookie を書きません。
- ポーリングされる GET は
{ rev, ... }を返します。手元の rev 以下の応答は捨ててください。 - エラーは
{ error, message }。error は英小文字スネークのコードです。
LP から企画を読む(認証なし)
const url = "https://<bounty>/api/v1/public/events/<slug>/plan";
const res = await fetch(url, { headers: etag ? { "If-None-Match": etag } : {} });
if (res.status === 304) return cached; // 変わっていない
const plan = await res.json(); // schemaVersion: 2
etag = res.headers.get("ETag");
const speakers = new Map(plan.speakers.map((s) => [s.id, s]));
for (const day of plan.days) {
const blocks = plan.contents.filter((c) => c.schedule === "timed" && c.day === day);
// c.stageId → plan.stages / c.lineId → plan.lines / c.thumbnails[].url / c.openCalls[].url
// c.speakers[].speakerId → speakers.get(id)(bio・photo・英語の欄は確定した人だけ)
}
// 会場図: <img src={plan.map.base.image.url}> に plan.map.slots[].points を重ね、
// plan.map.assignments(day が null = 全日)の contentId → plan.contents の出展者(exhibitor.url = 公開のページ)
// 暗い地: plan.map.base.imageDark?.url(無ければ image を明るい面の上に置く)
// 会場が複数・フロアが複数のイベント: plan.areas(会場 → フロアの木)と plan.maps(葉ごとの図。areaId で結ぶ)。
// plan.map は今までどおり 1 つの図(plan.maps[0] と同じ)。plan.stages[].areaId = そのステージの会場 / フロア。
// ブース番号は会場が違えば重なりうるので、番号を出すときは会場・フロアの名前を添える(slotKey はイベントを通して一意)- 出るのは公開中のものだけです。
CORS *・ETag/If-None-Match(304)・共有キャッシュ 15 秒。 - 画像の URL(サムネイル・確定した登壇者の写真・出展者のロゴ・会場図と、その暗い地用の版)は応答に入っています。ブース枠と番号は図に入っていないので、
slotsとviewBoxから自分の色で描きます。下書きへ戻すと同じ URL は 404 になります(CDN に残るのは最長 1 時間)。 - 会場図だけを載せるなら、公開のページ
/events/<slug>/mapへリンクしてください(変わらない URL。ログイン不要。#b-<ブース番号>/#x-<出展者の id>で開いた状態へ着きます)。版 1(…/program)は今までどおりです。
認証(ネイティブ)
- POST/api/v1/auth/token認証なし4S の認可コード / 4S のアクセストークン / 開発ペルソナを Bounty のアプリ用トークンに交換する
- POST/api/v1/auth/refresh認証なしリフレッシュトークンのローテーション(古いものは使えなくなる。再利用すると系統ごと失効)
- POST/api/v1/auth/revoke任意ログアウト(refresh_token か Bearer のアクセストークンが指す系統を失効)
- POST/api/v1/auth/web-sessionログイン必須WebView に cookie セッションを張る 1 回限りのコード(60 秒)。Bounty のアプリ用アクセストークン(Bearer)が必須。bridge_path に &next=/path を足して WebView で開く
自分
- GET/api/me/pulseログイン必須ポーリングヘッダ用の軽い状態(rev・未読通知・未読メッセージ・得点)
- GET/api/me/portfolioログイン必須自分のポートフォリオ(SPIKES Platform の作品)と連携の状態
- PUT/api/me/portfolioログイン必須自分のポートフォリオを丸ごと置き換える(expectedUpdatedAt が違えば 409 conflict と最新の current)
- POST/api/me/portfolio/uploadログイン必須カバー 1 ファイル(画像 / 15 秒以内の動画 / 動画の表紙)を上げる許可と、ブラウザが直接上げる先
- POST/api/me/portfolio/upload/completeログイン必須上げたファイルを SPIKES が検証する(通れば作品の media に入れる値)
- POST/api/me/portfolio/migrateログイン必須旧 Bounty の作品(profile.portfolio)を SPIKES のポートフォリオへ 1 度だけ移す(本人の操作)
- GET/api/me/explainersログイン必須見た説明(説明シートを自動で開くのは 1 人 1 回)と、デモに出す数字
- POST/api/me/explainersログイン必須説明を見たことにする(何度送っても最初の時刻のまま)
- DELETE/api/me/explainersログイン必須見た説明をすべて消す(初めての画面でまた自動で開く)
- POST/api/me/account/deleteログイン必須BOUNTY のアカウントと BOUNTY に保存したデータを消す(4S のアカウントは消さない)。アプリのトークンも使えなくなる
- GET/api/participation-visual/events/{eventId}/displayログイン必須本人の現在の参加表明HTML配置・公開版だけ(PNG生成なし)
- GET/api/participation-visual/events/{eventId}/display-imageログイン必須本人の公開参加表明に使う顔写真・背景素材だけ(合成なし)
- POST/api/participation-visual/events/{eventId}/renderログイン必須本人の現在のイベント別データで PNG を生成(参加登録は作らない)
- POST/api/participation-visual/events/{eventId}/promptログイン必須本人のイベント別needsがある時に投稿案内を一回だけ claim
参加登録(4S のチケット)
- POST/api/ticketing/avatarログイン必須本人の登録用写真を4Sへアップロードし、参加登録で送るURLを取得する(JPEG/PNG/WebP、4MBまで)
- GET/api/ticketingログイン必須参加登録の入口(リファラルコードの結果・先頭に出す招待のチケット・他のチケット・自分の登録の状態・mode)
- GET/api/ticketing/questionsログイン必須選んだチケットで答える 4S の設問(必須・条件分岐・チケットの対象)と前の回答・大学の欄の設問
- POST/api/ticketing/registerログイン必須参加登録する(無料・当日払い・承認制・招待で 0 円 → 4S の register。事前決済 → 4S の決済ページの URL を返す)
- POST/api/ticketing/statusログイン必須4S の参加登録を読み直す(決済から戻ったとき。4S へは 5 秒に 1 回まで)
- GET/api/universitiesログイン必須全国の大学を探す(文部科学省「全国大学一覧」の写し。略称・旧字体・法人格の表記ゆれを寄せる。pref で都道府県に絞る)
- GET/api/events/{slug}/ticketingログイン必須選択イベントのチケットと本人の登録状態
- GET/api/events/{slug}/ticketing/questionsログイン必須選択イベント・チケットの設問と本人の回答
- POST/api/events/{slug}/ticketing/registerログイン必須本人・イベント・設定・設問・登録版を照合して申し込む。不明な送信結果は再送しない
- POST/api/events/{slug}/ticketing/statusログイン必須同じイベントの本人のチケットを再確認し、登録・決済状態を更新
ハント
- GET/api/hunt/deckログイン必須スワイプのデッキ(約 20 枚)。絞り込み(q / org / cat / self / want / only)を付けると全候補から絞って切り出し、remaining は当てはまる人数
- GET/api/hunt/facetsログイン必須WANTED の絞り込みの選択肢(所属・参加区分・ラベル)と人数
- POST/api/hunt/swipeログイン必須スワイプ(like / pass。hunt は互換のため受け付け like と同じに扱う)。自分のプロフィールが未入力のうちは 403 profile_setup_required
- GET/api/hunt/likes-meログイン必須ポーリングあなたを狙っている人の数
バウンティ
- GET/api/bounty/wishesログイン必須自分のバウンティ(会いたい人物像)
- POST/api/bounty/wishesログイン必須バウンティを足す
- PATCH/api/bounty/wishes/{id}ログイン必須バウンティの編集・並べ替え・分類の変更(classification = null で自動分類へ戻す)
- DELETE/api/bounty/wishes/{id}ログイン必須バウンティを消す
- GET/api/bounty/sourceログイン必須ソーシング(手配 1 件 = wishId、または束 = by(purpose / target)+ key に当たる人。分類で絞り込み・加点)
ミート
- GET/api/meets/listログイン必須ポーリング未会 / やりとり中 / 会った
- GET/api/meets/spotsログイン必須待ち合わせ場所と会場図上の位置
- GET/api/venue/mapsログイン必須ポーリング現在の会場図(未登録なら map=null)
- GET/api/venue/maps/{id}ログイン必須現在または依頼に保存された会場図の画像
- POST/api/meets/requestsログイン必須出会いましょう / いまから行ける? を送る(同じ 2 人の間で動いている依頼があれば 200 でそれを返す)
- GET/api/meets/requests/{id}ログイン必須ポーリング依頼の詳細
- POST/api/meets/requests/{id}/{action}ログイン必須依頼への操作(本文は stamp と counter だけ)
QR
- GET/api/passes/eventsログイン必須本人の有効パス候補と最終NFC書込み確認状態(準備中・参加資格不足を区別)
- GET/api/passes/{eventId}ログイン必須本人の対象イベントのパス内容と確認版
- POST/api/passes/{eventId}ログイン必須本人のパス下書きと描画確認を保存(印刷・NFC・入場なし)
- POST/api/passes/{eventId}/previewログイン必須本人パスの印字PNGとレイヤーを描画(書込みなし)
- POST/api/passes/{eventId}/nfc/prepare同一originの本人ログインcookie本人だけが確認済みNFCパスの書込みを準備(他人ID・PAT不可)
- POST/api/passes/{eventId}/nfc/complete同一originの本人ログインcookie本人の同tag読み戻しを検査して書込み完了記録(入場なし)
- POST/api/passes/{eventId}/nfc/rewrite同一originの本人ログイン物理上書き前に旧本人カード所有とoperation/tag/fingerprintを認可(資格期限切れ旧カードも所有確認)
- POST/api/passes/nfc/profile認証なし同源ブラウザが有効NFC資格から公開プロフィールIDのみ解決(匿名可・書込み/入場/交換なし・PAT不可)
- POST/api/passes/nfc/resolve同一originの本人ログインcookie本人の現資格と実tag hashを読み取り照合(書込み・入場記録なし)
- GET/api/passes/logosログイン必須本人が所属する会社・団体の登録済み印字ロゴ(白黒PNG)
- GET/api/qr/meログイン必須ポーリング自分の QR(4S One QR と、旧来の短命の署名付きペイロード)
- GET/api/qr/receivedログイン必須ポーリング指定時刻以降の自分宛てQR読取り通知
- POST/api/qr/meetログイン必須相手の QR(Bounty の署名付き QR か 4S One QR)を読み取ってミートを記録する。Bounty 外の人は external_contact に記録
- GET/api/checkin/previewログイン必須QR の入口で読んだ会場チェックイン QR の対象(セッション / 地点の名前・分類・場所・チェックイン済みか)。書き込まない
- POST/api/qr/rotateログイン必須QR を作り直す(古い QR は使えなくなる)
- GET/api/events/{slug}/qr/meログイン必須選択イベントの本人QR。現在の参加資格と画面の本人・イベント・設定版を照合
- GET/api/events/{slug}/qr/contextsログイン必須選択イベントの企業・ブースQR。現在の所属とパートナーを照合
- GET/api/events/{slug}/qr/contexts/previewログイン必須選択イベントを保持した企業・ブースの共有先確認
- POST/api/events/{slug}/qr/meetログイン必須同イベントの現在の参加資格と本物のQRを照合して交換実績・由来を記録
- POST/api/events/{slug}/qr/rotateログイン必須選択イベントから本人の個人QRを更新。個人QRの失効は全イベントで共通
WANTED
- GET/api/wantedログイン必須ポーリング手配書のボードと自分の立候補状況
募集(BOSHU。スタッフ・登壇・ピッチ・その他)
- GET/api/boshu/contactログイン必須本人の募集連絡先の確認状態と未読メール設定を読む
- POST/api/boshu/contactログイン必須本人の4S資格を照合して募集連絡先の確認メールを予約する
- POST/api/boshu/contact/verifyログイン必須本人と4S資格に結び付いた確認コードで募集連絡先を確定する
- PATCH/api/boshu/contactログイン必須本人がBOSHUチャットの未読メールを切り替える
- DELETE/api/boshu/contactログイン必須本人が募集連絡先を解除し未送信メールを停止する
- POST/api/boshu/calls/{id}/embedded/authorize同一originの本人ログイン同一originの本人popupで、この募集専用iframe認可を発行。cookieと現行規約への明示同意が必須。Bearer不可
- POST/api/boshu/calls/{id}/embedded/exchange認証なし本人popupで認可済みの同一募集sessionだけをPKCE verifierで交換。cookie不要。新session/本人を作らずLP親へ返さない
- GET/api/boshu/calls/{id}/embedded募集専用iframe認可募集専用iframe認可で本人フォームを取得。cookie/Bearer不可、毎回本人/規約/公開状態を確認
- POST/api/boshu/calls/{id}/embedded募集専用iframe認可同一募集の本人応募/編集/取り下げ/共有確認/iframeログアウト。既存BOSHUサービスの資格・所有判定を共用
- POST/api/boshu/calls/{id}/embedded/uploads募集専用iframe認可募集専用iframe内の本人画像添付。既存正規化/所有/制限を共用
- GET/api/boshu/calls/{id}/embedded/uploads/{uploadId}募集専用iframe認可募集専用iframeの本人添付画像。秘密をURLへ含めずproof headerで取得
- GET/api/boshu/calls/{id}/form認証なし公開募集のLPフォーム情報(質問・入力仕様・正規応募URL)。常時匿名。公開metadata GET/OPTIONSのみAllow-Origin:*、資格付きCORSなし。応募/プロフィール/回答なし。iframeは許可LP上で公開閲覧、本人popup認証後に専用認可で同じiframe内入力/応募
- GET/api/boshuログイン必須ポーリング公開中で締切前の募集(受付中・受付前)と、自分の応募すべて(状態は結果を知らせた後だけ決定が出る)。?ownerKind=&ownerId= で持ち主の募集だけ(承認済み・承認不要と、機能 boshu が ON のイベントの募集だけが出る)
- GET/api/boshu/calls/{id}ログイン必須1 つの募集(追加の質問・自分の応募)と、ワンクリック応募の下ごしらえ(本人のプロフィール・前回の入力・選べる作品)
- POST/api/boshu/calls/{id}/applyログイン必須募集に応募する(審査中・保留なら直す・取り下げた応募は出し直す)。登壇・ピッチはプロフィールの必須回答が要る。invalid_answers の message は質問の id → 誤りの JSON
- POST/api/boshu/applications/{id}/withdrawログイン必須応募を取り下げる(結果を知らせる前だけ)
- POST/api/boshu/uploadsログイン必須募集のキービジュアル・画像の回答を上げる(multipart/form-data: file。WebPに書き直してメタデータを落とす。返ったidを募集・回答に入れる)
- GET/api/boshu/uploads/{id}ログイン必須上げた画像(上げた本人と運営だけ。他人には 404)
- GET/api/boshu/calls/{id}/image任意公開募集の承認済みキービジュアル。ログインした管理者だけ下書きをプレビューできる
- GET/api/boshu/calls/{id}/selection/applications/{applicationId}ログイン必須応募者または権限のある担当者が応募の現在の選考を読む
- POST/api/boshu/calls/{id}/selection/applications/{applicationId}/submissionsログイン必須応募者が次の段階の回答と資料を提出する
募集の外部 API(運営の API トークン)
- GET/api/v1/boshu/callsログイン必須募集の一覧(下書き・締切後を含む。件数・未通知の数つき)
- POST/api/v1/boshu/callsログイン必須募集を作る(external: { source, id } の鍵が同じ募集があれば直す = 冪等。作ったら 201・直したら 200。質問の組はいっしょに渡す)
- GET/api/v1/boshu/calls/{id}ログイン必須1 つの募集(今の質問の組つき)
- PATCH/api/v1/boshu/calls/{id}ログイン必須募集を直す(省略した項目は変えない。status で公開 / 下書き / 受付を締める。questions を渡せば新しい版)
- GET/api/v1/boshu/calls/{id}/applicationsログイン必須募集の応募(申し込んだ順。4S の subject・状態・回答。個人情報の印の付いた回答は管理者のトークンだけ、ほかは withheld に鍵だけ)
- GET/api/public/orgs認証なし公開承認済み団体の紹介のみ(人物・連絡先なし)。kindとcursorで各種類最大500件、nextCursorで継続
- GET/api/v1/orgs認証なし外部 API: 承認済みの学生団体・学生発ベンチャーとメンバー(4S の sub・役職・在籍の年・学籍の段階)。運営の API トークン(scope orgs)。?kind=guild|venture
- GET/api/v1/boshu/drafts/contextログイン必須下書き投入の前提: 募集を作れる主体・紐づくイベント(null = 紐づかない)・テンプレートと既定の質問/対象/入力設定/主体の制限(partner=イベントのパートナーBOSHU)・上限
- GET/api/v1/boshu/drafts/referenceログイン必須呼び手が今扱える既存の募集(重複の確認用。状態・主体・イベント・質問の版・件数。応募者の情報なし)
- POST/api/v1/boshu/drafts/previewログイン必須募集の設計を保存と同じ判定で検証・正規化する(書込みなし)
- POST/api/v1/boshu/draftsログイン必須募集の下書きを作る / 直す(sourceKey・idempotencyKey・expectedHash。常に下書き。公開・承認・通知なし。作成 201 / 更新・再送 200)
- GET/api/v1/boshu/drafts/{id}ログイン必須1 つの募集の設計・質問の組・版の hash の読み戻し(今扱える募集だけ。応募者の情報は件数だけ)
- GET/api/v1/boshu/{id}/partner/context認証なし公開中パートナー募集の質問・イベント・規約版を匿名で読む(申請者・所属・連絡先なし)
- GET/api/v1/boshu/{id}/partner/organizationsログイン必須認証済み本人の在籍中団体だけを検索する(運営権限による他団体検索なし)
- POST/api/v1/boshu/{id}/partnerログイン必須本人の明示同意・必要な団体登録・既存BOSHU応募・イベントとの関連を一括保存する(承認・所属確定なし)
今会えます・注目
- GET/api/availabilityログイン必須ポーリング今会える人(新しく出した順・場所とひとこと・残り分)と自分の「今会えます」。scope=mine は自分だけ。rev は分の区切りを含む(期限切れでも進む)。ETag / 304
- PUT/api/availabilityログイン必須「今会えます」を出す(出し直し = 上書き)。長さは 15 分の固定で、イベント終了を越えない(durationMin は互換のため受け取るが無視する)。pin は現在の会場図の場所(任意)
- DELETE/api/availabilityログイン必須「今会えます」を取り消す
- GET/api/featuredログイン必須ポーリング注目の人(WANTED の上の帯)。枠は now(今会えます)→ hot(直近 1 時間に「会いたい」を受けた人数)→ featured(承認済み WANTED)。1 人 1 枠。ETag / 304
今日のオレ
- GET/api/me/today-lookログイン必須自分の今日のオレと、登録できるか(eligible = 会場受付が済んでいて、片付けの期限前)
- POST/api/me/today-lookログイン必須今日のオレを登録する(あれば差し替え。multipart/form-data: file・note?。端末で長辺 1600px の WebP に縮めて送る。サーバも向きを当てて WebP に書き直し、EXIF・GPS を落とす)
- DELETE/api/me/today-lookログイン必須今日のオレを消す(いつでも。画像も置き場から消す)
- GET/api/users/{id}/today-lookログイン必須その人の今日のオレ(本人・つながり・同じグループ・その人が今会えますを出しているときだけ。ブロックはどちら向きでも見えない。見せられなければ look = null)
- GET/api/today-look/images/{id}ログイン必須今日のオレの画像(見てよい人だけ。Cache-Control: private・ETag。公開 URL は無い)
ランキング
- GET/api/rankログイン必須ポーリングランキング(得点)
- GET/api/events/{slug}/rankログイン必須ポーリング選択イベントの順位。現在の参加資格と本人・設定版を照合
- GET/api/events/{slug}/statsログイン必須ポーリング選択イベントの本人の得点・交換実績
ギルド
- GET/api/guildsログイン必須このイベントに参加しているギルドの一覧(総合力の順位・人数・ブース数)
- GET/api/guilds/{slug}ログイン必須ギルドのページ(紹介・出展・メンバー(3 人未満は人数だけ)・成績)
学生団体 DB・学生発ベンチャー DB(登録・メンバー・学籍)
- POST/api/orgs/legacy-resume/{token}/bindログイン必須ログイン本人が現在の規約を確認し旧団体の申請再開リンクを明示的に受け取る
- POST/api/orgs/legacy-resume/{token}/submitログイン必須受取本人の新しい同意で既存団体の管理申請を提出(単回・運営の確認待ち)
- GET/api/me/academicログイン必須本人の学籍(卒業(予定)年・学校・状態)と段階(現役 / OB・OG)
- PUT/api/me/academicログイン必須学籍を保存する(学校は同梱の大学の一覧のコード。無ければ名前だけ)
- GET/api/orgs/enrichment/contextログイン必須団体紹介の非公開提案対象(orgs scope・運営 moderator のみ・各種50件まで)
- POST/api/orgs/enrichment/previewログイン必須既存団体10件までの紹介差分を確認(運営 moderator のみ・書込みなし)
- POST/api/orgs/enrichment/proposeログイン必須団体紹介を非公開 pending revision に提案(運営 moderator のみ・審査有効時だけ)
- GET/api/orgs/enrichment/{id}ログイン必須団体紹介の提案と根拠を読む(運営 moderator のみ)
- GET/api/orgs/mineログイン必須本人の学籍・所属(ギルド・学生発ベンチャー)・届いた招待・登録の申請
- POST/api/guilds/register/platformログイン必須ASSEMBLE共通の学生団体登録(審査待ち、intentId同値再試行)
- GET/api/events/{slug}/guild-consultationログイン必須Tokyo参加者が管理する団体の企画相談を読む(既取得情報を再質問しない)
- PATCH/api/events/{slug}/guild-consultationログイン必須本人の管理団体の企画相談だけ保存・編集(個人参加と出展承認は変更しない)
- POST/api/guilds/registerログイン必須学生団体(ギルド)を登録する(mode = new / claim)。運営の承認で公開・申請者が owner
- POST/api/ventures/registerログイン必須学生発ベンチャーを登録する(法人番号を国税庁の Web-API で照合)。運営の承認で公開
- GET/api/orgs/houjinログイン必須法人名(?name=)・法人番号(?number=)の照合。source = off なら results は null(手入力)
- POST/api/orgs/imagesログイン必須団体・会社の画像(ロゴ・カバー・作品)を上げる(WebP に書き直しメタデータを落とす)
- GET/api/orgs/images/{id}任意公開中の団体へ現在付いている画像、または認可した本人・担当・編集者のプレビュー(ETag応答前にも再認可)
- POST/api/orgs/guilds/{id}/membersログイン必須ギルドのメンバーを招待する(団体の管理者。利用者を選ぶ / 名前 + メールでリンク)
- POST/api/orgs/ventures/{id}/membersログイン必須学生発ベンチャーのメンバー(キーマン・社員)を招待する
- POST/api/orgs/guilds/{id}/requestログイン必須本人がギルドのメンバーとして申し出る
- POST/api/orgs/ventures/{id}/requestログイン必須本人が学生発ベンチャーのメンバーとして申し出る
- POST/api/orgs/members/{id}/acceptログイン必須アプリ内に届いた招待を受ける
- POST/api/orgs/members/{id}/declineログイン必須届いた招待を断る
- POST/api/orgs/members/{id}/leaveログイン必須本人が退く(卒業・引退・退会。記録は OB・OG として残る)。申請中なら取り下げ
- PATCH/api/orgs/members/{id}ログイン必須メンバーを直す(役職・肩書き・次期・権限・在籍の年・卒業予定の年・在籍の終わり。名前はアカウントに結び付く前だけ)
- PATCH/api/orgs/members/{id}/mineログイン必須本人が自分の在籍の年(加入した年)を直す
- POST/api/orgs/guilds/{id}/members/bulkログイン必須ギルドのメンバーをまとめて足す(団体の管理者。名前だけで名簿に載り、招待のリンクで後からアカウントに結び付く。同じ名前とメールの人は skipped)
- POST/api/orgs/ventures/{id}/members/bulkログイン必須学生発ベンチャーのメンバーをまとめて足す(団体の管理者)
- GET/api/orgs/guilds/{id}/rosterログイン必須ギルドの名簿の 1 つの組の続き(?group= 学年 y1〜y4・master・doctor・alumni・other / 期 c<n>。1 回 60 人。ブロックの関係の人は含めない)
- PATCH/api/orgs/guilds/{id}/rosterログイン必須ギルドの名簿のまとめ方(学年 / 期・1 期生の年)を変える(団体の管理者)
- GET/api/orgs/ventures/{id}/rosterログイン必須学生発ベンチャーの名簿の 1 つの組の続き
- PATCH/api/orgs/ventures/{id}/rosterログイン必須学生発ベンチャーの名簿のまとめ方(学年 / 期・1 期生の年)を変える(団体の管理者)
- POST/api/orgs/invites/{token}/acceptログイン必須招待のリンクを受ける(受けた人の 4S のアカウントに結び付く)
- GET/api/orgs/logo-variantsログイン必須本人編集者向けロゴ版ライブラリ(非公開・最大32件)
- POST/api/orgs/logo-variantsログイン必須ロゴ版を追加。SVGは正規化した原素材と別WebPプレビューに分けて私有保存
- POST/api/orgs/logo-variants/{id}ログイン必須ロゴ版の用途・主ロゴ・解除を更新(revision照合・本人編集権限)
- GET/api/orgs/logo-variants/{id}/sourceログイン必須本人編集者が正規化済みSVGを添付ダウンロード(匿名公開なし)
セッション(会場)
- GET/api/contents/{id}/surveyログイン必須参加したコンテンツの星評価と本人の共有設定
- POST/api/contents/{id}/surveyログイン必須星とひとことを保存(チェックイン必須・初回だけ得点)
- GET/api/sessions/{id}/surveyログイン必須自分のアンケート回答
- POST/api/sessions/{id}/surveyログイン必須アンケート回答の保存(初回だけ得点)
- GET/api/sessions/{id}/qaログイン必須ポーリングQ&A の一覧
- POST/api/sessions/{id}/qaログイン必須質問・コメントの投稿
- POST/api/sessions/{id}/qa/reactログイン必須Q&A へのリアクション(トグル)
- GET/api/sessions/{id}/liveログイン必須ポーリング今の投票とライブ集計
- POST/api/sessions/{id}/live/respondログイン必須投票(1 人 1 票)
イベント(会場のベル)
- GET/api/event/remindersログイン必須自分が「通知する」にしたセッション・地点
- POST/api/event/remindersログイン必須セッション・地点の「通知する」を切り替える(開始前・終了前・アンケートの知らせ。常設は 400 not_timed)
- GET/api/event/sessions/{id}/icsログイン必須セッション 1 件の iCalendar(.ics。開始 10 分前のアラーム付き)
- GET/api/event/images/{id}ログイン必須会場の画像(ブースのロゴ・カバー・担当者の顔写真。WebP。ログインした人だけ・ETag / 304)
- GET/api/event/booths/{id}/icsログイン必須時間指定の地点 1 件の iCalendar(.ics。開催中の回 → 次の回。常設・終わったものは 404)
メッセージ
- GET/api/messagesログイン必須ポーリングトーク一覧(今メンバーの生きている会話)と、招待されているグループ(invitations)
- GET/api/messages/{id}ログイン必須ポーリング会話(メンバーと既読の位置・入力中・メッセージ)。?after=<ISO> はそれより後に作られた・更新されたメッセージだけ(ポーリング。前回の now を渡す)、?before=<page.before>&limit= は古いページ。ETag / 304
- POST/api/messages/{id}ログイン必須送信(text / stamp / location。replyToId で返信。本文の @表示名 はメンション = ミュートを越えて通知。location は { kind, location: { mapId, x, y, label } } で現在の会場図の場所だけ。本文は地点名、通知は「場所が送られました」だけ)
- PATCH/api/messages/{id}ログイン必須グループ名を変える(owner だけ。system メッセージが残る)
- POST/api/messages/{id}/readログイン必須既読にする(他の人からの未読があったときだけ既読の位置を進める = advanced)
- POST/api/messages/{id}/typingログイン必須入力中({ typing?: boolean }。印の寿命は 6 秒。入力している間は数秒おきに送り直す)
- POST/api/messages/{id}/imagesログイン必須画像を送る(multipart/form-data: file・caption・replyToId。JPEG / PNG / WebP / GIF・5 MB まで。SVG は不可)
- POST/api/messages/{id}/messages/{messageId}/reactionsログイン必須リアクションのトグル(語彙は lib/messages/reactions-vocab.ts。1 人 1 つ・同じ絵文字で外す・別の絵文字で付け替え。通知は作らない)
- POST/api/messages/{id}/messages/{messageId}/unsendログイン必須送信取消(送った本人が 24 時間以内。跡が残り、本文・画像・リアクションは消える)
- POST/api/messages/{id}/membersログイン必須グループへ招待する(今のメンバーなら誰でも、自分のつながりを。招待された人は受けるまでメンバーではない)
- DELETE/api/messages/{id}/members/{userId}ログイン必須メンバー(招待中を含む)を外す(owner だけ。外された人は QR から入り直せない)
- POST/api/messages/{id}/ownerログイン必須オーナーを譲る(owner だけ)
- POST/api/messages/{id}/invitationログイン必須招待を受ける(accept = メンバーになる)/ 断る(decline)
- POST/api/messages/{id}/muteログイン必須この会話のミュート(1h / event_end / forever / off)。メッセージの通知とプッシュを止める。メンションは止めない
- GET/api/messages/attachments/{id}ログイン必須メッセージの画像(今のメンバーだけ。Cache-Control: private・ETag。公開 URL は無い)
- POST/api/messages/{id}/keepログイン必須このチャットを残す(すべての会話に同じ規則。イベント終了から消える時刻までのあいだに、メンバーの誰か 1 人が押せば全員に残る。イベント終了前は 409 keep_not_open で message = 押せるようになる時刻の ISO。本文なし)
- POST/api/messages/keepログイン必須まとめて残す(選んだ会話を 1 回で。1 件ずつ「このチャットを残す」と同じ規則で、id ごとの結果 kept / already_kept / not_open / not_found を返す。一覧は GET /api/messages の conversations[].keep と expiresAt)
- POST/api/messages/dmログイン必須DM を開く(無ければ作る。つながり・マッチ・ミートのどれかがあれば開ける。ブロックがあれば 403 blocked)
- POST/api/messages/groupsログイン必須グループを作る(選んだつながりはすぐメンバー・候補から選んだ人は招待。作成者は owner。消える時刻はすべての会話と同じ = イベント終了 + ゲーム設定 match.chatKeepDays)
- GET/api/messages/connectionsログイン必須つながり(会った / マッチした相手)
- GET/api/messages/suggestionsログイン必須グループに足す候補(友だちの友だち・同じ招待グループの人。選ぶと招待になる)
- GET/api/messages/blocksログイン必須自分がブロックしている人
- POST/api/messages/blocksログイン必須ブロックする(DM・招待を双方向に止め、共有グループでは相手の発言を自分の画面で隠す)
- DELETE/api/messages/blocks/{userId}ログイン必須ブロックを解除する
- POST/api/messages/reportsログイン必須通報する(人・任意で会話やメッセージ。メッセージを指すと本文の抜粋が運営に渡る)
TRIO(共通点のある 3 人の組)
- GET/api/trioログイン必須ポーリング自分の TRIO(proposals = 新しい組 / active = 動き出した組 / links = グループ × グループの提案)
- GET/api/trio/interestsログイン必須本人が共有した具体的な興味を読む
- POST/api/trio/interestsログイン必須本人の興味を現在の版と照合して更新する
- POST/api/trio/{id}/interestログイン必須本人の興味ありを記録し、全員一致後だけチャットを開く
- POST/api/trio/{id}/revealログイン必須組を開ける(まだ開けていなければ revealed にする。first = 今回が初めて。何度呼んでもよい。本文なし)
- POST/api/trio/{id}/skipログイン必須組をスキップする(チャットから抜ける = 通常の退出。誰も書いていない組でスキップしていない人が 2 人を切ると組は閉じる = closed。本文なし)
- POST/api/trio/links/{id}/acceptログイン必須グループ × グループの提案を受ける(自分の組として。両方の組がそろうと、いっしょのチャットができる = merged。本文なし)
- POST/api/trio/links/{id}/declineログイン必須グループ × グループの提案を断る(自分の組として。本文なし)
- GET/api/events/{slug}/trioログイン必須ポーリング選択イベントのTRIO。現在の資格と本人・設定版を照合
- POST/api/events/{slug}/trio/{id}/interestログイン必須同イベントの本人が興味ありを記録。全員一致まで会話を作らない
- POST/api/events/{slug}/trio/{id}/revealログイン必須選択イベントのTRIOを開く
- POST/api/events/{slug}/trio/{id}/skipログイン必須選択イベントのTRIOをスキップ
- POST/api/events/{slug}/trio/links/{id}/acceptログイン必須選択イベントのTRIO合流提案を承認
- POST/api/events/{slug}/trio/links/{id}/declineログイン必須選択イベントのTRIO合流提案を見送る
通知
- GET/api/notificationsログイン必須ポーリング通知の一覧(?filter=unread・?before=<nextBefore>・?limit=。各項目に東京時間の日付の区切り group)
- POST/api/notifications/readログイン必須通知を既読にする(all か ids)
- POST/api/notifications/{id}/readログイン必須通知を 1 件既読にする
- DELETE/api/notifications/{id}ログイン必須通知を 1 件消す
- POST/api/notifications/clearログイン必須既読の通知をまとめて消す
プッシュ通知
- GET/api/push/public-key認証なしVAPID 公開鍵(無効な環境では enabled=false と理由)
- POST/api/push/nativeログイン必須ネイティブのシェル(iOS / Android)の FCM 登録トークンを登録する(同じトークンは持ち主を付け替える)
- POST/api/push/subscribeログイン必須この端末の Web Push 購読を登録する(PushSubscription.toJSON()。endpoint は https + 既知のプッシュサービスだけ)
- POST/api/push/unsubscribeログイン必須この端末の購読を消す(自分の購読だけ)
- POST/api/push/testログイン必須自分の有効な購読へ試しの通知を送る
- GET/api/push/preferencesログイン必須受け取り設定(種類ごと。既定はすべて on)と登録済みの端末
- PATCH/api/push/preferencesログイン必須受け取り設定を変える(書いた種類だけ)
SPIKES のイベント一覧・イベントのページ(複数イベント・機能の ON / OFF・参加者)
- GET/api/events/directory認証なしSPIKES のイベント(参加中 / これから / これまで)と、押したときの行き先(このアプリ・切り替え・4S の外部ページ)
- GET/api/events/createログイン必須本人の4Sイベント作成結果。requestId指定時は同じ送信の結果だけを確認し、POSTを再送しない
- POST/api/events/createログイン必須本人の4S OAuthでイベント下書きを一度作成。同じrequestIdは結果を返し、結果不明の再送・別キー作成を止める
- POST/api/events/{slug}/organizers/followログイン必須イベントの公開主催者をBOUNTY内でフォロー。本人の状態と人数のみ返す
- DELETE/api/events/{slug}/organizers/followログイン必須本人の主催者フォローを解除(冪等)
- GET/api/eventsログイン必須アプリ内のイベント一覧(開催中 → これから。終わったもの・隠したものは出さない)。機能の ON / OFF・自分が参加者か・管理できるか
- GET/api/events/{slug}ログイン必須イベントのページ(概要・日程・会場・説明・4S のタイムテーブル・受付中の募集・フォロー・参加 / 管理の印。管理者には機能の一覧)
- PATCH/api/events/{slug}/featuresログイン必須機能の ON / OFF を変える(そのイベントの管理者・運営の管理者。監査ログ event.features)
- GET/api/events/{slug}/participantsログイン必須選択イベントの参加者(wanted ON・本人の現在の参加資格を確認)。操作は同イベントの swipe を使用
- PATCH/api/events/{slug}/settingsログイン必須選択イベントの開催規模と機能を変更(cookie・現在の管理権限・設定版を照合)
- POST/api/events/{slug}/swipeログイン必須選択イベントに会いたい・スキップを記録。双方の現在の参加資格と本人・設定版を照合し、同イベントの相互操作だけでマッチ
- POST/api/events/{slug}/messages/dmログイン必須選択イベントの確認済みのつながりから共通DMを開く。既存DMの権限・期限を変更せず、URLだけでイベント由来を追加しない
- POST/api/events/{slug}/joinログイン必須アプリでの参加表明(機能 self_join が ON のイベントだけ。既定 OFF。4S の参加登録が正本)
- DELETE/api/events/{slug}/joinログイン必須アプリでの参加表明を取り消す(本人が表明した分だけ)
- POST/api/me/events/refreshログイン必須本人の参加中のイベント(4S GET /events/my-entries)と管理するイベント(各イベントの自分のスタッフの役割)を 4S から読み直す
- GET/api/wall-consult/{eventId}/schedule認証なし壁打ちの公開席・担当時間割と集計(参加者情報を含まない)
- GET/api/wall-consult/{eventId}/meログイン必須本人の壁打ち受付・枠に結んだミーティング・通常チャット文脈
- GET/api/wall-consult/{eventId}/hostログイン必須確認済み担当者自身の担当時間・私的な列・気になるの件数・枠に結んだミーティング
- POST/api/wall-consult/{eventId}/actionログイン必須気になる(公開後〜枠の終了)・当日の受付/列/担当者操作・気になるを送った人への5〜15分のミーティング提案(QR交換/得点は変更しない)
- GET/api/participation-visual/activeログイン必須本人が画像を作れる active な公開済みテンプレートのイベント
フォロー(ギルド・学生発ベンチャー・イベント)
- GET/api/followログイン必須フォローのボタンの状態(?kind=guild|venture&id=)
- POST/api/followログイン必須フォローする(冪等。承認済みのギルド・学生発ベンチャーだけ。イベント主催者は専用APIを使用)
- DELETE/api/followログイン必須フォローを外す(冪等)
募集の持ち主の管理(イベント・ギルド・学生発ベンチャーの管理者)
- POST/api/boshu/manage/{id}/communications/sendログイン必須人の募集管理者が確認した宛先・応募・文面の版を固定して個別連絡を予約する
- POST/api/boshu/manage/{id}/communications/retryログイン必須人の募集管理者が固定済み文面と現在の資格を再検査して再配送を予約する
- GET/api/boshu/manage/{id}/communicationsログイン必須募集管理者が配送件数と宛先を伏せた配送状態を確認する
- POST/api/boshu/manage/{id}/communications/previewログイン必須管理者が確認済み宛先と承認済み文面を個別連絡前に確認する
- GET/api/boshu/manage/{id}/communications/reply-toログイン必須募集管理者が返信先に選べる確認済み主催者を読む
- GET/api/boshu/manage/{id}/communications/watchersログイン必須募集管理者が応募通知の受信者とチャット運営者を読む
- PUT/api/boshu/manage/{id}/communications/watchersログイン必須人の管理者が募集の応募通知とチャット運営担当を変更する
- GET/api/boshu/calls/{id}/manageログイン必須本人/主体管理者または現在の共同管理者の募集管理権限と主体・管理者一覧
- GET/api/boshu/calls/{id}/managersログイン必須主体管理者のみ、公開アカウントを名前検索。メール非公開
- POST/api/boshu/calls/{id}/managersログイン必須主体管理者による募集単位の共同管理者追加
- DELETE/api/boshu/calls/{id}/managersログイン必須主体管理者による募集単位の共同管理権限取消
- PATCH/api/boshu/calls/{id}/ownerログイン必須現在と移動先両主体の管理権限を確認して引き継ぐ。応募/回答を保持し共同管理者は解除
- GET/api/boshu/owners/{kind}/{id}/callsログイン必須持ち主(kind = event | guild | venture)の募集の一覧(下書き・承認待ち・締切後を含む)
- POST/api/boshu/owners/{kind}/{id}/callsログイン必須持ち主の募集を作る(ギルド・学生発ベンチャーは承認待ちで作られ、運営の承認まで参加者に見せない・告知しない)
- PATCH/api/boshu/calls/{id}ログイン必須募集を直す(持ち主の管理者・運営。承認済みのギルド・学生発ベンチャーの募集の中身を変えると承認待ちへ戻る)
- GET/api/boshu/calls/{id}/applicationsログイン必須審査の材料(募集の要約と応募者・回答・作品・状態)
- POST/api/boshu/calls/{id}/applicationsログイン必須選んだ応募にまとめて同じ決定を保存する(まだ知らせない)
- POST/api/boshu/calls/{id}/publishログイン必須まだ知らせていない決定をまとめて本人へ知らせる
- PUT/api/boshu/calls/{id}/questionsログイン必須追加の質問の組を置き換える(変わっていれば新しい版)
- PUT/api/boshu/calls/{id}/orderログイン必須採択の出演順を並べ替える(採択の全員をちょうど 1 回ずつ)
- POST/api/boshu/calls/{id}/selection/activateログイン必須人の募集管理者が確認した選考設計を有効にする
- GET/api/boshu/calls/{id}/selection/reviewログイン必須担当する選考と権限のある応募資料を読む
- PUT/api/boshu/calls/{id}/selection/assignmentsログイン必須募集管理者が段階ごとの審査担当者と公開権限を設定する
- PUT/api/boshu/calls/{id}/selection/applications/{applicationId}/reviewログイン必須担当者が内部の判定と次の案内を保存する
- POST/api/boshu/calls/{id}/selection/applications/{applicationId}/publish-previewログイン必須判定公開と固定する通知メールを人が確認する
- POST/api/boshu/calls/{id}/selection/applications/{applicationId}/publishログイン必須人が確認した判定を応募者へ公開し固定した通知を予約する
- GET/api/boshu/calls/{id}/selection/designログイン必須募集管理者が選考設計の下書きと現在のフローを読む(応募者情報なし)
- PUT/api/boshu/calls/{id}/selection/designログイン必須最大5段階とSPIKES共通送信者のメールテンプレートを下書き保存する(有効化・合否公開・送信なし)
- POST/api/boshu/calls/{id}/selection/design/previewログイン必須選考設計と共通メールテンプレートの影響を検証する(保存・送信なし)
運営(moderator 以上)
- POST/api/admin/passes/{eventId}/logosログイン必須本人One QR照合後、対象参加者の印字ロゴを受付担当者が選択
- POST/api/admin/passes/{eventId}/nfc/prepareログイン必須受付担当者が確認済みNFCパスの書込みを準備(5分・本人と確認版へ束縛、MCP対象外)
- POST/api/admin/passes/{eventId}/nfc/completeログイン必須ネイティブ読み戻しの一致報告を受付担当者の完了記録として保存(タグ真正性証明ではない)
- POST/api/admin/passes/{eventId}/nfc/checkinログイン必須発行済みNFCパスとタグを照合し4Sの入場確定を読み戻す(人の受付操作のみ)
- POST/api/admin/passes/{eventId}/nfc/revokeログイン必須本人One QRと現在の運営権限を確認してNFCパスを失効
- GET/api/admin/passes/contextログイン必須管理できるイベント名のみ(passes scope・現行規約・イベント認可)
- GET/api/admin/passes/{eventId}/templateログイン必須イベントパステンプレートの下書きと有効版(参加者情報なし)
- POST/api/admin/passes/{eventId}/templateログイン必須パステンプレートを非公開下書きへ保存(有効化なし・同じrequestKeyで再送)
- POST/api/admin/passes/{eventId}/template/previewログイン必須合成内容と合成QRによる見本描画(書込み・本人確認・印刷なし)
- POST/api/admin/passes/{eventId}/template/applyログイン必須管理者本人が保存版を有効化(PAT・MCP対象外)
- GET/api/admin/orgs/platform-intakes/{id}/resumeログイン必須moderatorが旧団体の申請再開リンクの状態を最大20件確認(トークン・本人情報なし)
- POST/api/admin/orgs/platform-intakes/{id}/resumeログイン必須moderatorが登録済み旧団体と出典を確認し7日限定の本人申請リンクを発行・失効する
- GET/api/admin/importsログイン必須本人の有効な素材ソース50件までの一覧(import scope・admin・現行規約)
- POST/api/admin/imports/{id}/applyログイン必須保存版・hashを指定し私有会場レコードを審査へ送る(公開・承認なし)
- POST/api/admin/imports/{id}/maps/{key}ログイン必須地図の実画像を固定して私有ソースへ添付(4MiBまで・公開なし)
- GET/api/admin/imports/contextログイン必須取り込み可能な主イベントと私有下書きの契約(import scope・admin・現行規約)
- POST/api/admin/imports/previewログイン必須主イベントの取り込みを検証(書込みなし、公開なし、import scope・admin)
- POST/api/admin/importsログイン必須ソースを所有者限定の私有下書きへ保存(公開なし、import scope・admin)
- GET/api/admin/imports/{id}ログイン必須所有する私有下書きの読み取り(import scope・admin・現行規約)
- GET/api/admin/ticketsログイン必須限定公開を含む4Sチケットの管理一覧。questions指定時のみ該当チケットの質問を確認(admin)
- GET/api/admin/tickets/questionsログイン必須選択チケットの管理設問を本人の4S権限で読む(admin)
- PUT/api/admin/tickets/questionsログイン必須既存の設問と選択肢のIDを保持して内容を編集する(admin)
- GET/api/admin/venue/maps/selectableログイン必須承認済み固定会場図の切替候補(adminのみ、未承認は含めない)
- POST/api/admin/venue/maps/{id}/selectログイン必須人手で確認した承認済み会場図へ切替(adminのみ、MCP対象外)
- POST/api/admin/venue/imagesログイン必須会場の画像(ブースのロゴ・カバー・担当者の顔写真)を上げる(moderator 以上。サーバで WebP に書き直しメタデータを落とす)
- POST/api/admin/venue/mapsログイン必須会場図を登録(admin のみ。PNG / JPEG / WebP、4 MiB まで)
- GET/api/admin/reportsログイン必須通報の一覧(moderator 以上。?status=open|resolved|dismissed|all・?before=<nextBefore>・?limit=)
- PATCH/api/admin/reports/{id}ログイン必須通報の状態を変える(moderator 以上。監査ログに残る)
- POST/api/admin/trio-tags/contextログイン必須指定した公開参加者10人までのタグ提案材料(import scope・運営admin)
- POST/api/admin/trio-tags/previewログイン必須AIタグ差分の確認(書込み0・運営admin)
- POST/api/admin/trio-tags/applyログイン必須運営本人が確認したAIタグだけを反映(cookieのみ)
- POST/api/admin/events/syncログイン必須SPIKES のイベントを 4S の公開 API から取り込む(運営の管理者。fixture は開発だけ。失敗したら何も変えない)
- POST/api/admin/boshu/calls/{id}/approvalログイン必須ギルド・学生発ベンチャーの募集を承認 / 見送る(運営 = moderator 以上。作った人へ知らせ、承認で受付中なら告知)
- POST/api/admin/orgs/platform-intakes/{id}/reconcileログイン必須運営が明示IDと更新日時を確認し既存公開団体へ受付を統合(元団体・管理権限を変更しない)
- GET/api/admin/content-drafts/contextログイン必須プログラム下書きの対象イベント・選べる種類/用途/レーベル・上限(content scope・admin)
- GET/api/admin/content-drafts/referenceログイン必須下書き作成の参照(既存コンテンツ・ルーム・登壇者・主体・会場レコード。1 回 50 件まで、参加者情報なし)
- POST/api/admin/content-drafts/previewログイン必須プログラム下書き 50 件までを保存と同じ経路で検証して巻き戻す(書込みなし)
- POST/api/admin/content-drafts/upsertログイン必須sourceKey ごとにプログラムの下書きを作成・更新(常に draft。公開中は 409。全件成功か全件巻き戻し)
- GET/api/admin/content-drafts/{id}ログイン必須プログラムのコンテンツ 1 件と版の印(更新の expectedRevision に使う)
- GET/api/admin/companies/{id}/invitesログイン必須会社の限定リンクの一覧(運営 admin。リンクそのものは返さない)
- POST/api/admin/companies/{id}/invitesログイン必須会社の限定リンクを発行(運営 admin。役割・期限・回数つき。応答で 1 度だけ返す。送信はしない。会社の管理者を迎える役割 admin は cookie のログインだけで、Bearer(API トークン・MCP)は member / reception だけ・省略は member・admin は 403 admin_invite_requires_session)
- POST/api/admin/companies/{id}/invites/{inviteId}/revokeログイン必須会社の限定リンクを停止(運営 admin)
- GET/api/admin/mcp-linksログイン必須MCP 接続リンクの一覧(管理者。コードは返さない)
- POST/api/admin/mcp-linksログイン必須MCP 接続リンクを発行する(管理者・監査ログ。リンクはこの応答だけ、トークンは含まない)
- DELETE/api/admin/mcp-links/{id}ログイン必須MCP 接続リンクを取り消す(受け取り済みなら発行したトークンも失効。管理者・監査ログ)
- GET/api/admin/event-reconciliationログイン必須4S の参加登録を全件読み、BOUNTY との差を数える(admin・本人の 4S 連携で読む・書込みなし)
- POST/api/admin/event-reconciliationログイン必須確かめた内容(previewHash)のまま 4S の参加登録を BOUNTY の参加者へ当てる(admin。未登録の人は非公開のアカウントで用意し、最後の同期の記録を更新する)
- GET/api/admin/participant-syncログイン必須参加者同期の状態・参加者 / ログイン済み / 全アカウント件数・revision・contentHash(moderator 以上。最後の実行・エラーコード・代行管理者の公開の名前と mode。個人の参加登録や秘密は返さない)
- PUT/api/admin/participant-syncログイン必須自分の 4S 連携による定期同期のオン / オフ(admin。mode 省略は read。bidirectional は明示選択と 4S participantsWrite 権限が必要。本人の管理権限を確認、オフは任意の admin。監査ログ)
- GET/api/admin/exhibit/contextログイン必須出展の下書きの文脈: 主イベント・件数・会場図の版・各保存の expectedRevision・上限(exhibit scope・admin・現行規約)
- GET/api/admin/exhibit/referenceログイン必須ブース(出展主体・属する出展コンテンツ・割当つき)、出展コンテンツと既定の対応、選べる企業・学生団体・学生発ベンチャー(個人情報なし)
- POST/api/admin/exhibit/booths/previewログイン必須出展ブースの下書きを検証(書込みなし)。出展主体は企業 / 学生団体 / 学生発ベンチャーのちょうど 1 つを実 ID で
- POST/api/admin/exhibit/booths/upsertログイン必須出展ブースを下書きで作成・更新(非公開のまま。QR は無効または変更なし。公開中のブースは 409)
- POST/api/admin/exhibit/map/baseログイン必須会場図のベース(SVG)の新しい版。ブース枠の group は取り除き、取り込み元として添える(PDF は不可。手元で SVG へ変換)
- POST/api/admin/exhibit/map/layer/previewログイン必須ブース枠(SVG・取り込み済み・inline の矩形 / 多角形)を読み、検査の全件(誤り・重なりの警告)・読めなかった要素・現行の版との差分・仮割当の提案を返す(書込みなし。検査の誤りは 400 にせず本文で返す)
- POST/api/admin/exhibit/map/layerログイン必須ブース枠の新しい版を下書きで保存(差分を記録。現行にはしない)
- POST/api/admin/exhibit/map/layer/patch/previewログイン必須ブース枠の小さな変更(追加・移動・大きさ・番号・削除・区画)を元の版へ当てた結果: 当てられない操作・検査の全件・現行の版との差分・仮割当の提案(書込みなし)
- POST/api/admin/exhibit/map/layer/patchログイン必須ブース枠の小さな変更を新しい下書きの版として保存(当てた操作そのものと現行の版との差分を記録。現行にはしない)
- GET/api/admin/exhibit/map/readログイン必須会場図の今の状態を構造で読む: ベース図の版・枠の版の枠(形・番号・割当。offset / limit)・版の来歴と差分・まだ置いていないブース(SVG 本文・個人情報なし)
- POST/api/admin/exhibit/map/assignments/previewログイン必須ブース番号の仮割当の提案(既存を保ち、空き枠を決定的な順で埋める。書込みなし。day = その日の割当として扱う。省略 = 全日)
- POST/api/admin/exhibit/map/assignments/saveログイン必須指定した枠とブースの組を仮割当(draft)で保存(確定はしない。確定済みの行は 409。day = その日の割当。省略 = 全日。全日と日付つきは同じ枠・同じブースに並べられない = 409 assignment_day_conflict)
- GET/api/admin/exhibit/map/exportログイン必須会場図の書き出し(base / booths / composed)。既定は JSON の svg 文字列、format=svg は添付の image/svg+xml(nosniff・CSP sandbox)
- POST/api/admin/exhibit/map/layer/current同一originの本人ログイン下書きのブース枠の版を現行にする(運営のログインだけ。API トークン・MCP 不可)
- POST/api/admin/exhibit/map/assignments/confirm同一originの本人ログイン仮割当の確定・差し戻し・取り消し・全日の割当を日ごとに分ける(運営のログインだけ。API トークン・MCP 不可。1 回の呼び出しは 1 つの日の行だけを扱う。day 省略 = 全日の行)
- POST/api/admin/exhibit/booths/{id}/exhibitor同一originの本人ログインブースの出展主体(企業 / 学生団体 / 学生発ベンチャー)を実 ID で設定(運営のログインだけ)
- POST/api/admin/exhibit/exhibitors/{id}/move同一originの本人ログイン出展者を別の出展コンテンツへ移す(明示の操作。ブースの ID・QR・訪問記録は変えない。運営のログインだけ)
- GET/api/admin/exhibit/areasログイン必須会場とフロアの一覧(会場 → フロアの 2 段。leaf = 会場図を持てる単位。divided = false は会場を分けていないイベント)
- POST/api/admin/exhibit/areasログイン必須会場(parentId なし)またはフロア(parentId = 会場)を足す。最初の会場はイベントの今の図を、最初のフロアはその会場の図を引き継ぐ(API トークンからは、現行の枠の版を持つ図の引き継ぎは不可 = 409 area_live_locked)
- POST/api/admin/exhibit/areas/reorderログイン必須会場(parentId = null)またはその会場のフロアを並べ替える(その親の子すべてを 1 回で)
- POST/api/admin/exhibit/areas/{id}ログイン必須会場・フロアの名前・住所・メモを変える(API トークンからは、現行の枠の版を持つ会場・フロアは不可)
- POST/api/admin/exhibit/areas/{id}/delete同一originの本人ログイン会場・フロアを消す(運営のログインだけ。空のときだけ。最後の 1 つは図とステージを親へ戻して消す)
- GET/api/admin/exhibit/map/state同一originの本人ログイン画面用: 対象のブース枠の版・差分・割当の状態(運営のログインだけ。day = その日に効く割当で読む)
- POST/api/admin/partners/exhibition同一originの本人ログイン既存パートナーの出展公開と会場QRを切り替える(確定配置は保護・IDと訪問履歴は保持)
- POST/api/admin/partners/intakes同一originの本人ログインパートナー受付の原票を上限付きで追加読込する(読取り専用・ADMINの有効な4S資格が必要)
- POST/api/admin/partners/roster同一originの本人ログイン対象イベントのパートナー一覧へ追加・解除する(原票・申請・団体・出展は保持)
- POST/api/admin/partners/roster/search同一originの本人ログインパートナーへ追加する既存団体・企業を明示検索する(読取り専用・最大60件)
- GET/api/admin/venue/design/assignments同一originの本人ログイン会場ブースへ配置できる登録済み出展を読む
- POST/api/admin/venue/design/assignments同一originの本人ログイン会場ブースの出展配置を版・日付を照合して下書き保存
- GET/api/admin/venue/placement同一originの本人ログインブース配置の画面のデータ(公開中の会場案内図の枠・出展者・割当・版)を読む
- POST/api/admin/venue/placement同一originの本人ログイン出展者を枠へ置く・動かす・入れ替える・外す・ブースを作る・配置を公開する(画面の版と照合して 1 transaction)
- GET/api/admin/orgs/platform-intakes/{id}同一originの本人ログイン団体受付の確認Sheet用の非公開詳細(moderator閲覧、承認操作はADMIN/EDITOR)
- GET/api/admin/wall-consult/{eventId}/scheduleログイン必須運営の壁打ち管理時間割と席QR(私的)
- PUT/api/admin/wall-consult/{eventId}/scheduleログイン必須運営が壁打ち専用席・時間別担当をrevisionで保存(既存受付を保持)
- GET/api/admin/exhibit/map/kitログイン必須会場図制作キットと日付別の空き配置を読む
- POST/api/admin/exhibit/map/kitログイン必須会場図制作キットの図面を共有下書きへ保存
- POST/api/admin/exhibit/map/kit/prepareログイン必須保存済み図面のブース枠を明示操作で下書き登録
- POST/api/admin/exhibit/map/kit/random/previewログイン必須名前順または日付とseedを固定した空きブース配置を提案
- POST/api/admin/exhibit/map/kit/random/saveログイン必須確認した名前順・ランダム配置を原子的に下書き保存
MCP 接続(リモート MCP の本人確認・一時アップロード・接続リンク)
- GET/api/mcp/whoamiログイン必須MCP 接続の確認: 接続している本人の表示名・運営権限・トークンの scope と期限(cookie のログインは token = null)・対象イベント・4S 連携と規約同意の状態・領域ごとの capabilities(can と、できない理由 1 つ。upload は予約できる purposes)・本人が管理する manages(イベント・会社・団体・学生発ベンチャー・BOSHU の主体)。can は各 API と同じ判定で、公開は常に draft_only(どの scope の API トークンでも・ログインでも)
- POST/api/mcp/uploadsログイン必須画像・SVG の一時アップロードの受け口を作る(約 30 分・1 回限りの URL。バイト列は uploadUrl へ直接送る。公開なし)
- PUT/api/mcp/uploads/{id}認証なし受け口へ生のバイト列を送る(?k= の 1 回限りの秘密だけが権限。ラスタは 4MiB まで WebP へ固定、SVG は 1MiB まで無害化)
- POST/api/mcp/uploads/{id}認証なし受け口へ multipart の file で送る(PUT と同じ検査)
- POST/api/mcp/connect/{code}同一originの本人ログインMCP 接続リンクを受け取り、ログイン中の本人の API トークンを発行する(cookie のログインだけ・1 回限り・平文はこの応答だけ)
- GET/api/me/mcp-tokensログイン必須本人が接続リンクから受け取った MCP トークンの一覧(平文なし)
- DELETE/api/me/mcp-tokens/{id}ログイン必須本人が自分の MCP トークンを失効させる
契約
- GET/api/v1/openapi.json認証なしこの契約(OpenAPI 3.1)
企業ページ・メンバーの下書きと限定リンク(会社 scope の API トークン / ログイン。公開はしない)
- GET/api/companies/drafts/contextログイン必須下書きできる会社と上限(運営 admin は全社、会社の管理者は自社。公開なし)
- POST/api/companies/drafts/previewログイン必須会社ページの下書きを検証(書込みなし。ロゴの upload は消費しない)
- POST/api/companies/drafts/upsertログイン必須会社ページを非公開の下書きとして保存(新規は運営 admin、更新は自社の管理者も可。公開中は 409)
- GET/api/companies/drafts/{id}ログイン必須会社ページの下書き・版・公開状態・メンバー下書きの件数を読む
- GET/api/companies/{id}/member-draftsログイン必須自社のメンバー下書きの一覧(本文・リンクは返さない)
- POST/api/companies/{id}/member-drafts/previewログイン必須メンバー下書き(50 件まで)を検証(書込みなし)
- POST/api/companies/{id}/member-drafts/upsertログイン必須メンバー下書きを sourceKey で保存(アカウントは作らない・同意を代行しない・公開なし)
- POST/api/companies/{id}/member-drafts/{draftId}/linkログイン必須本人用の受け取りリンクを作る(応答で 1 度だけ返す。作り直すと前のリンクは無効。送信はしない)
- POST/api/companies/{id}/member-drafts/{draftId}/discardログイン必須メンバー下書きを破棄する(提案の本文を消す・リンクは無効)
- POST/api/companies/invite/{code}ログイン必須限定リンクを本人が確定して会社へ入る(ログイン必須・回数と期限つき)
- POST/api/companies/claim/{code}ログイン必須メンバー下書きを本人が確定する(選んだ項目だけ自分のプロフィールへ入れ、会社へ入る。1 回限り)
企業QR・明示共有名簿・公開企業への私的問い合わせ(イベントチケット不要)
- GET/api/company-network/qrログイン必須現在の企業メンバー本人の実One QRと5分企業署名contextを読む(券不要、代替本人・得点なし)
- GET/api/companies/{id}/networkログイン必須現在の企業管理者・受付担当だけが明示共有された全社員分の名簿を読む(メール・私的回答なし)
- POST/api/companies/{id}/networkログイン必須企業管理者が企業QRを発行・失効する。capはdigest保存、rotate時のみURLを返す
- GET/api/company-network/connect/{token}ログイン必須企業capの企業名と共有先の版だけを本人に確認表示(プロフィール・名簿は出さない)
- POST/api/company-network/connect/{token}ログイン必須本人が企業の共有先・cap世代を確認してプロフィール共有(ミート・得点なし)
- GET/api/companies/{id}/inquiriesログイン必須現在の企業管理者が企業専用の私的問い合わせを読む
- POST/api/companies/{id}/inquiriesログイン必須ログイン本人が明示公開済み企業に問い合わせる(個人DMの権限は変えない)
- POST/api/companies/{id}/inquiries/{inquiryId}/repliesログイン必須企業管理者が同一企業の問い合わせにrevision CASで返信(アプリ内通知のみ)
- GET/api/company-network/inquiriesログイン必須本人の企業への問い合わせ・現在閲覧可能な返信を読む
- GET/api/company-network/sharingログイン必須本人が企業名簿への共有先を確認する
- POST/api/company-network/sharingログイン必須本人が1企業への共有を停止する。他の企業・受信者・個人ミートは保持
コンテンツ企画(タイムテーブル・ライン・登壇者・サムネイル・コンテンツのチャット。そのイベントを企画できる人)
- POST/api/planning/{eventId}/stages/register同一originの本人ログイン運営 admin のブラウザ操作で active な主 Tokyo イベントの Stage A / B を登録する。同名の実ルームを再利用し、既存ステージと 4S 対応は保持する
- GET/api/planning/{eventId}ログイン必須ポーリング企画の全体(日・ステージ・ライン・全コンテンツ〔未配置と終日のブースを含む〕・登壇者の一覧・格子の設定・rev)を 1 回で
- POST/api/planning/{eventId}/blocksログイン必須下書きのコンテンツをステージと時刻に作る(kind は format から決まる。lineId を省くとステージの既定のライン)
- PATCH/api/planning/blocks/{contentId}ログイン必須コンテンツを動かす・伸ばす・ステージやラインを付け替える・題を変える(expectedRevision が違えば 409 で今の状態 = PlannerBlockConflictResponse を返す。公開中どうしが重なる置き方は 409 stage_overlap)
- DELETE/api/planning/blocks/{contentId}同一originの本人ログイン下書きのコンテンツを消す(一度でも公開したもの・募集が結んであるもの・出展者が属するもの・チャットのあるものは 409。ブラウザのログインだけ)
- POST/api/planning/{eventId}/validateログイン必須公開を止める指摘(同じステージの重なり・時刻やステージの不足・長さ)と注意(会期の外・刻みに乗らない・ラインなし・登壇者なし・未確定の登壇者)を返す(書込みなし)
- PUT/api/planning/blocks/{contentId}/speakersログイン必須コンテンツの登壇者の全文(並び・役割・大きく見せる人)。ここに無い人は外す
- GET/api/planning/{eventId}/linesログイン必須ラインの一覧(受け持つステージ・既定のスタッフ・コンテンツの数)
- GET/api/planning/{eventId}/staffログイン必須ラインの既定のスタッフに選べる人(運営と、そのイベントの管理者だけ。名前と id。参加者の一覧は出さない)
- POST/api/planning/{eventId}/linesログイン必須ラインを作る(名前はイベントの中で一意。色は点の色の名前 = lib/tint.ts の TINTS)
- PATCH/api/planning/lines/{id}ログイン必須ラインの名前・色・並びを変える
- DELETE/api/planning/lines/{id}ログイン必須ラインを消す(コンテンツは残り、ラインだけ外れる。既に在るチャットとそのメンバーは変わらない)
- PUT/api/planning/lines/{id}/membersログイン必須ラインの既定のスタッフの全文(autoJoin = コンテンツのチャットができるときに自動で入る)
- PUT/api/planning/lines/{id}/roomsログイン必須ラインが受け持つステージの全文
- GET/api/planning/{eventId}/speakersログイン必須登壇者の一覧(確認の段階・アカウントの有無・出るコンテンツ・生きている限定リンクの数)。主のイベントは全員、それ以外はそのイベントのコンテンツに出る人
- POST/api/planning/{eventId}/speaker-photosログイン必須運営が登壇者の写真を上げる(multipart の file。サーバで向きを当てて WebP に書き直し、メタデータを落とす。返った id を提案の photoImageId に指す。そのイベントを企画できる人)
- POST/api/planning/speakersログイン必須登壇者を作る(提案の流れに入る前の draft)。contentId でコンテンツへ結べる
- GET/api/planning/speakers/{id}ログイン必須登壇者 1 人: 今の掲載内容・開いている提案と本人の直し・結んだアカウント・出るコンテンツ・限定リンク・今の上限
- PATCH/api/planning/speakers/{id}ログイン必須運営の直接の修正(プロフィールは draft の人だけ。それ以外は提案を通す = 409 proposal_required)と、結ぶアカウントの変更
- PUT/api/planning/speakers/{id}/proposalログイン必須運営の提案を書く・書き直す(開いている提案を置き換える。本人の直しが入っていれば discardSpeakerEdits が要る)
- POST/api/planning/speakers/{id}/confirm同一originの本人ログイン提案(+ 本人の直し)を確定して掲載内容へ写す(ブラウザのログインだけ。API トークン・MCP 不可)
- POST/api/planning/speakers/{id}/preview-links同一originの本人ログイン登壇者の限定リンクを発行する(秘密の URL はこの応答だけ。期限はゲーム設定 speaker.previewTtlDays。ブラウザのログインだけ)
- DELETE/api/planning/preview-links/{id}同一originの本人ログイン限定リンクを取り消す(ブラウザのログインだけ)
- GET/api/planning/blocks/{contentId}/thumbnailログイン必須サムネイルのデザイン・使える形式 / テンプレート / テーマ・保存済みの PNG・絵に載る材料
- PUT/api/planning/blocks/{contentId}/thumbnailログイン必須サムネイルのデザインを保存する(テンプレート・テーマ・手で直した改行など。expectedRev が違えば 409)
- GET/api/planning/blocks/{contentId}/thumbnail/{format}ログイン必須今のデザインの PNG(その場で描く。下書きも見られる。企画できる人だけ。w を渡すとその幅へ縮めた見本、type=jpeg / webp で軽い見本〔応答は image/jpeg・image/webp〕)
- POST/api/planning/blocks/{contentId}/thumbnail/renderログイン必須今の版の全形式を描いて保存する(公開中のコンテンツなら公開の URL が付く)
- POST/api/planning/blocks/{contentId}/thumbnail/validateログイン必須保存せず・描かずに、渡したデザイン(テンプレート / 自分で組んだ配置)の形式ごとの配置と検算の指摘を返す(配置を直しながら何度も呼ぶ)
- POST/api/planning/blocks/{contentId}/thumbnail/duplicateログイン必須テンプレート(おまかせを含む)か取ってある配置を「自分で組む」配置へ写して返す(保存しない。白紙ではなく動く配置から始める)
- GET/api/planning/{eventId}/thumbnail-templatesログイン必須このイベントに取ってある配置(自分で組んだもの)と、最初から在る見本
- PUT/api/planning/{eventId}/thumbnail-templatesログイン必須配置に名前を付けてイベントに取っておく・上書きする・消す(layout = null で削除。見本の key は使えない)
- POST/api/planning/blocks/{contentId}/chat同一originの本人ログインコンテンツのチャットを作る、または既に在るものを返す(メンバー = ラインの既定のスタッフ + コンテンツのチーム + アカウントのある登壇者。ブラウザのログインだけ)
- GET/api/participation-visual/events/{eventId}ログイン必須管理するイベントの参加表明画像の下書きと版
- PUT/api/participation-visual/events/{eventId}ログイン必須参加表明画像の下書きだけを保存(content scope)
- POST/api/participation-visual/events/{eventId}/publish同一originの本人ログイン人の cookie 操作で公開・有効化
- POST/api/participation-visual/events/{eventId}/previewログイン必須固定の合成人物で PNG と問題を返す(実参加者は読まない)
- POST/api/participation-visual/events/{eventId}/preview-imageログイン必須固定の合成人物の PNG。問題は X-Visual-Issues
- POST/api/participation-visual/events/{eventId}/validateログイン必須合成見本で両用途のレイアウト・画像・フォントを検査
- POST/api/participation-visual/events/{eventId}/backgroundログイン必須本人の content_thumbnail staged upload をイベント素材へ一回だけ消費。cookie multipart file/expectedActorId も可
登壇者の限定リンク(トークンが資格。ログイン不要)
- GET/api/speaker-preview/{token}認証なし本人に見せる内容: 確定すると載るプロフィール・運営の提案・直せる欄と上限・出るコンテンツの題と時刻(ほかの情報は出さない)
- PUT/api/speaker-preview/{token}/profile認証なし本人が提案を直して確定を頼む(直せる文字の欄だけ。{} = 提案のままで頼む)
- GET/api/speaker-preview/{token}/photo認証なし確定すると載る写真(その登壇者のものだけ)
- POST/api/speaker-preview/{token}/photo認証なし本人が写真を上げる(multipart の file。サーバで向きを当てて WebP に書き直し、メタデータを落とす。4 MB maximum)
- POST/api/speaker-preview/{token}/claim同一originの本人ログインログイン中のアカウントをその登壇者へ結ぶ(ブラウザのログイン + 限定リンク)
公開の読み取り(匿名・CORS *・ETag。LP 向け)
- GET/api/v1/public/events/{slug}/program認証なし公開中のプログラム(版 1。画像と登壇者の詳細は null のまま。変えない)
- GET/api/v1/public/events/{slug}/sponsors認証なし公開中の協賛(ティアと会社)
- GET/api/v1/public/events/{slug}/plan認証なし公開中の企画の全体(版 2): 日・ステージ・ライン・登壇者・コンテンツ(サムネイル・結んだ募集・出展者とロゴ)・会場図(ベース図の URL・ブース枠・日ごとの確定した割当)。CORS *・ETag / If-None-Match・共有キャッシュ 15 秒
- GET/api/v1/public/images/{key}認証なし公開中のコンテンツの画像(今の版のサムネイル PNG・確定した登壇者の写真 WebP・公開中の出展者のロゴ WebP・現行の会場図のベース SVG)。URL は版 2 の応答が返す。呼ばれるたびに公開中かを確かめ、下書きへ戻すと 404(CDN に残るのは最長 1 時間)