openapi: '3.0.2' info: title: traP knoQ description: | This is a sample knoQ server. version: 2.2.0 servers: - url: http://knoq.trap.jp/api description: Production server - url: http://ec2-54-238-146-214.ap-northeast-1.compute.amazonaws.com/api description: Development server tags: - name: rooms description: traPが借りている講義室 - name: events description: 予約 - name: draft-events description: 日程調整中のdraftイベント - name: availability description: 参加可能時間の投票 - name: groups description: グループの情報 - name: users description: ユーザー - name: tags description: タグ - name: activity description: activity - name: authentication description: 認証 - name: iCal description: ics出力 - name: public description: 外部公開API paths: /rooms: get: tags: - rooms operationId: getRooms summary: 進捗部屋の情報を取得 description: 進捗部屋の情報を取得 parameters: - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' - $ref: '#/components/parameters/excludeEventID' responses: '200': $ref: '#/components/responses/RoomArray' post: tags: - rooms operationId: addRooms summary: 部屋の情報追加 description: 部屋の情報追加 requestBody: $ref: '#/components/requestBodies/Room' responses: '201': $ref: '#/components/responses/Room' '400': description: Bad Request '403': description: Forbidden /rooms/{roomID}: parameters: - $ref: '#/components/parameters/excludeEventID' - $ref: '#/components/parameters/roomID' get: tags: - rooms operationId: getRoom summary: 一件取得する description: 一件取得する responses: '200': $ref: '#/components/responses/Room' delete: tags: - rooms summary: 部屋の情報を削除 description: (関連する予約を削除する) エラーを出して削除を促す予定 operationId: deleteRoom responses: '200': description: successful operation '400': description: Bad Request '403': description: Forbidden /rooms/{roomID}/verified: parameters: - $ref: '#/components/parameters/roomID' post: tags: - rooms operationId: verifyRoom summary: 部屋を確認する description: 特権が必要。部屋が使用できることを確認する responses: '200': description: successful operation '400': description: Bad Request delete: tags: - rooms operationId: unverifyRoom summary: 部屋を未確認にする description: 特権が必要。部屋が使用できることの確認を取り消す。 responses: '200': description: successful operation '403': description: Forbidden '400': description: Bad Request /rooms/all: post: tags: - rooms operationId: addAllRooms summary: traPで確保した部屋の情報追加 description: 特権が必要。 requestBody: description: 進捗部屋情報 required: true content: text/csv: schema: type: array items: type: object properties: Subject: type: string Start date: type: string End date: type: string Start time: type: string End time: type: string Location: type: string example: 'Subject, Start date, End date, Start time, End time, Location\n, 2006/01/02, 2006/01/02, 15:04, 15:04, S516\n' responses: '201': $ref: '#/components/responses/RoomArray' '403': description: Forbidden /events: get: tags: - events summary: 使用宣言の情報を取得 description: 使用宣言の情報を取得。 operationId: getEvents parameters: - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' - $ref: '#/components/parameters/eventFilter' responses: '200': $ref: '#/components/responses/EventArray' post: tags: - events summary: 部屋の使用宣言を行う description: 部屋の使用宣言を行う。 operationId: addEvents requestBody: $ref: '#/components/requestBodies/Event' responses: '201': $ref: '#/components/responses/Event' '400': description: Bad Request '403': description: Forbidden /events/{eventID}: parameters: - $ref: '#/components/parameters/eventID' get: tags: - events summary: 一件取得 description: 一件取得 operationId: getEventDetail responses: '200': $ref: '#/components/responses/Event' put: tags: - events summary: 部屋の使用宣言を更新 description: adminsのみ。 operationId: updateEvent requestBody: $ref: '#/components/requestBodies/Event' responses: '200': $ref: '#/components/responses/Event' '400': description: Bad Request '403': description: Forbidden delete: tags: - events summary: 使用宣言を削除 description: adminsのみ。 operationId: deleteEvent responses: '204': $ref: '#/components/responses/Nocontent' '403': description: Forbidden '404': description: Not Found /events/{eventID}/attendees/me: parameters: - $ref: '#/components/parameters/eventID' put: tags: - events operationId: updateSchedule summary: 自分の参加予定を編集 requestBody: $ref: '#/components/requestBodies/Schedule' responses: '204': $ref: '#/components/responses/Nocontent' /events/{eventID}/tags: parameters: - $ref: '#/components/parameters/eventID' post: tags: - events operationId: addEventTag summary: タグを追加 description: タグを追加 requestBody: $ref: '#/components/requestBodies/EventTag' responses: '204': $ref: '#/components/responses/Nocontent' /events/{eventID}/tags/{tagName}: parameters: - $ref: '#/components/parameters/eventID' - name: tagName in: path required: true schema: type: string delete: tags: - events operationId: deleteEventTag summary: タグを削除 description: locked=falseだけ responses: '204': $ref: '#/components/responses/Nocontent' /draft-events: post: tags: - draft-events operationId: addDraftEvent summary: draftイベント作成 description: 日程調整用のdraftイベントを作成する requestBody: $ref: '#/components/requestBodies/DraftEvent' responses: '201': $ref: '#/components/responses/DraftEvent' '400': description: Bad Request '403': description: Forbidden /draft-events/{draftEventID}: parameters: - $ref: '#/components/parameters/draftEventID' get: tags: - draft-events operationId: getDraftEvent summary: draftイベント取得 responses: '200': $ref: '#/components/responses/DraftEventDetail' '404': description: Not Found put: tags: - draft-events operationId: updateDraftEvent summary: draftイベント編集 description: | 締切日までは全項目編集可能。 ただし,候補日時(candidateSlots)については追加のみ可能で,削除はできない。 adminsのみ。 requestBody: $ref: '#/components/requestBodies/DraftEventUpdate' responses: '200': $ref: '#/components/responses/DraftEventDetail' '400': description: Bad Request '403': description: Forbidden(権限なし,または締切日を過ぎている) '404': description: Not Found delete: tags: - draft-events operationId: deleteDraftEvent summary: draftイベント削除 description: adminsのみ responses: '204': $ref: '#/components/responses/Nocontent' '403': description: Forbidden '404': description: Not Found /draft-events/{draftEventID}/results: parameters: - $ref: '#/components/parameters/draftEventID' get: tags: - draft-events operationId: getDraftEventResults summary: 日程調整結果取得 description: 各候補日時に対する参加可能人数と詳細を取得する responses: '200': $ref: '#/components/responses/SchedulingResults' '404': description: Not Found /draft-events/{draftEventID}/availability: parameters: - $ref: '#/components/parameters/draftEventID' get: tags: - availability operationId: getMyAvailability summary: 自分の参加可能時間を取得 responses: '200': $ref: '#/components/responses/Availability' '404': description: Not Found(draftイベントが存在しない,または未回答) post: tags: - availability operationId: addAvailability summary: 参加可能時間を登録 requestBody: $ref: '#/components/requestBodies/Availability' responses: '201': $ref: '#/components/responses/Availability' '400': description: Bad Request '403': description: Forbidden(締切日を過ぎている) '409': description: Conflict(既に回答済み。PUTで更新してください) put: tags: - availability operationId: updateAvailability summary: 参加可能時間を更新 requestBody: $ref: '#/components/requestBodies/Availability' responses: '200': $ref: '#/components/responses/Availability' '400': description: Bad Request '403': description: Forbidden(締切日を過ぎている) '404': description: Not Found(未回答。POSTで登録してください) /draft-events/{draftEventID}/availability/all: parameters: - $ref: '#/components/parameters/draftEventID' get: tags: - availability operationId: getAllAvailabilities summary: 全員の参加可能時間を取得 description: adminsのみ responses: '200': $ref: '#/components/responses/AvailabilityArray' '403': description: Forbidden '404': description: Not Found /users/me/draft-events: get: tags: - draft-events parameters: - $ref: '#/components/parameters/userRelation' - $ref: '#/components/parameters/draftEventStatus' operationId: getMyDraftEvents description: 自分が関係するdraftイベントを返す responses: '200': $ref: '#/components/responses/DraftEventArray' /users/{userID}/draft-events: parameters: - $ref: '#/components/parameters/userID' get: tags: - draft-events parameters: - $ref: '#/components/parameters/userRelation' - $ref: '#/components/parameters/draftEventStatus' operationId: getUserDraftEvents description: ユーザーが関係するdraftイベントを返す responses: '200': $ref: '#/components/responses/DraftEventArray' /users/me/events: get: tags: - events parameters: - $ref: '#/components/parameters/userRelation' - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' operationId: getMyEvents description: 所属しているイベントを返す responses: '200': $ref: '#/components/responses/EventArray' /users/{userID}/events: parameters: - $ref: '#/components/parameters/userID' get: tags: - events parameters: - $ref: '#/components/parameters/userRelation' - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' operationId: getUserEvents description: 所属しているイベントを返す responses: '200': $ref: '#/components/responses/EventArray' /rooms/{roomID}/events: parameters: - $ref: '#/components/parameters/roomID' get: tags: - events parameters: - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' operationId: getEventsOfRoom description: 指定した部屋で行われるイベントを返す responses: '200': $ref: '#/components/responses/EventArray' /groups/{groupID}/events: parameters: - $ref: '#/components/parameters/groupID' get: tags: - events parameters: - $ref: '#/components/parameters/dateBegin' - $ref: '#/components/parameters/dateEnd' operationId: getEventsOfGroup description: groupIdのeventsを取得 responses: '200': $ref: '#/components/responses/EventArray' /groups: get: tags: - groups operationId: getGroups summary: グループを全て取得 description: すべてのグループを取得する responses: '200': $ref: '#/components/responses/GroupArray' '400': description: Bad Request post: tags: - groups operationId: createGroup summary: グループ作成 description: グループを作成します。traQのグループとは無関係です。 requestBody: $ref: '#/components/requestBodies/Group' responses: '201': $ref: '#/components/responses/Group' '400': description: Bad Request /groups/{groupID}: parameters: - $ref: '#/components/parameters/groupID' get: tags: - groups summary: 一件取得 description: 一件取得 operationId: getGroup responses: '200': $ref: '#/components/responses/Group' put: tags: - groups description: adminsのみ変更可能 operationId: updateGroup requestBody: $ref: '#/components/requestBodies/Group' responses: '200': $ref: '#/components/responses/Group' '400': description: Bad Request '403': description: Forbidden delete: tags: - groups summary: Delete group description: グループの削除 operationId: deleteGroup responses: '204': $ref: '#/components/responses/Nocontent' '403': description: Forbidden '404': description: Groupid not found /groups/{groupID}/members/me: parameters: - $ref: '#/components/parameters/groupID' put: tags: - groups operationId: addMeToGroup summary: 自分を追加。open=true description: 自分をメンバーに追加する responses: '204': $ref: '#/components/responses/Nocontent' delete: tags: - groups operationId: deleteMeFromGroup summary: 自分しか削除出来ない。open=true description: 自分しか削除出来ない。open=true responses: '204': $ref: '#/components/responses/Nocontent' /users/me/groups: get: tags: - groups parameters: - $ref: '#/components/parameters/userRelation' operationId: getMyGroups description: 自分の所属しているグループのIDを返す responses: '200': $ref: '#/components/responses/UUIDArray' /users/{userID}/groups: parameters: - $ref: '#/components/parameters/userID' get: tags: - groups parameters: - $ref: '#/components/parameters/userRelation' operationId: getUserGroups description: ユーザーが所属しているグループのIDを返す responses: '200': $ref: '#/components/responses/UUIDArray' /users: get: tags: - users operationId: getUsers description: ユーザー一覧を返す parameters: - $ref: '#/components/parameters/include-suspended' responses: '200': $ref: '#/components/responses/UserArray' /users/sync: post: tags: - users operationId: syncUsers description: | 管理者権限が必要。 traQのuserと同期します。 存在していないユーザーは作成されます。 stateが同期されます。 responses: '201': description: OK /users/me: get: tags: - users operationId: getMe summary: 自分のユーザー情報を取得 description: 自分のユーザー情報を取得 responses: '200': $ref: '#/components/responses/User' /users/me/ical: get: tags: - users - iCal operationId: getIcalSecret description: /ical で使う`secret`を取得 responses: '200': $ref: '#/components/responses/icalSecret' put: tags: - users - iCal operationId: resetIcalSecret description: /ical で使う`secret`を再生成 responses: '200': $ref: '#/components/responses/icalSecret' /users/{userID}/privileged: parameters: - $ref: '#/components/parameters/userID' patch: tags: - users operationId: grantPrivilege description: 管理者権限を付与したいuserのuserIDをパラメータに入れる. APIを叩く本人が管理者権限を持っている必要がある. responses: '204': $ref: '#/components/responses/Nocontent' '400': description: Bad Request '403': description: Forbidden '404': description: Not Found /tags: get: tags: - tags summary: タグを全て取得 description: タグを全て取得 operationId: getTag responses: '200': $ref: '#/components/responses/TagArray' '400': description: Bad Request post: tags: - tags summary: タグを作成。 description: すでにある場合は,error operationId: postTag requestBody: $ref: '#/components/requestBodies/Tag' responses: '201': $ref: '#/components/responses/Tag' /activity/events: get: deprecated: true tags: - activity - events operationId: getEventActivities description: | 最近7日間に作成変更削除があったイベントを取得。 削除されたものを含んで返す。 responses: '200': $ref: '#/components/responses/EventArray' /authParams: post: tags: - authentication - public operationId: getAuthParams description: リクエストに必要な情報を返す responses: '201': description: リクエストに必要な情報を返す content: application/json: schema: $ref: '#/components/schemas/AuthParams' /callback: get: tags: - authentication operationId: getCallback description: コールバックを検知して,トークンを取得します。 parameters: - $ref: '#/components/parameters/session' - name: code in: query required: true description: OAuth2.0のcode schema: type: string responses: '302': description: 成功。/callbackにリダイレクト。(その後はuiがリダイレクトする) /ical/v1/{icalToken}: get: tags: - iCal operationId: getIcal description: Icalを取得 parameters: - $ref: '#/components/parameters/icalToken' - $ref: '#/components/parameters/eventFilter' responses: '200': description: | iCal形式でイベントを出力 外部カレンダーを想定 content: text/calendar: schema: type: string /version: get: tags: - public operationId: getVersion description: version情報を取得 responses: '200': description: versionを出力 content: application/json: schema: type: object properties: version: type: string example: v2.2.0 revision: type: string example: 587c185 components: schemas: UUID: type: string format: uuid example: '3fa85f64-5717-4562-b3fc-2c963f66afa6' UUIDs: type: array description: UUIDの配列 items: $ref: '#/components/schemas/UUID' DateTime: type: string format: date-time example: '2006-01-02T15:04:05Z' UserIdArray: type: array description: ユーザーIDの配列 items: $ref: '#/components/schemas/UUID' Duration: type: object properties: timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' required: - timeStart - timeEnd ResponseUser: type: object properties: userId: $ref: '#/components/schemas/UUID' name: type: string example: fuji displayName: type: string example: ふじ icon: type: string format: url example: https://q.trap.jp/api/v3/public/icon/fuji privileged: type: boolean state: type: integer description: 'ユーザーアカウント状態 0: 停止 1: 有効 2: 一時停止' required: - userId - name - displayName - icon - privileged - state ResponseRoom: type: object properties: roomId: $ref: '#/components/schemas/UUID' place: type: string example: S516 timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' verified: type: boolean description: 部屋が使えることを保証する freeTimes: description: どのイベントも使用していない時間帯 type: array items: $ref: '#/components/schemas/Duration' sharedTimes: description: 部屋を共用すれば,使用できる時間帯 type: array items: $ref: '#/components/schemas/Duration' admins: $ref: '#/components/schemas/UserIdArray' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - roomId - place - timeStart - timeEnd - verified - admins - createdBy - createdAt - updatedAt RequestRoom: type: object properties: place: type: string example: S516 timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' admins: $ref: '#/components/schemas/UserIdArray' required: - place - timeStart - timeEnd - admins ResponseGroup: type: object properties: groupId: $ref: '#/components/schemas/UUID' name: type: string example: room description: type: string example: Sysad班room開発グループ open: type: boolean isTraQGroup: type: boolean example: false members: $ref: '#/components/schemas/UserIdArray' admins: $ref: '#/components/schemas/UserIdArray' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - groupId - name - description - open - isTraQGroup - members - admins - createdBy - createdAt - updatedAt RequestGroup: type: object properties: name: type: string example: room description: type: string example: Sysad班room開発グループ open: type: boolean members: $ref: '#/components/schemas/UserIdArray' admins: $ref: '#/components/schemas/UserIdArray' required: - name - description - open - admins ResponseTag: type: object properties: tagId: $ref: '#/components/schemas/UUID' name: type: string example: Vue createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - tagId - name - createdAt - updatedAt RequestTag: type: object properties: name: type: string example: Vue required: - name EventTag: type: object description: イベントに紐づくタグ properties: tagId: $ref: '#/components/schemas/UUID' name: type: string example: Vue locked: type: boolean required: - tagId - name RequestEventTag: type: object properties: name: type: string example: Vue locked: type: boolean required: - name Schedule: type: string enum: - pending - absent - attendance description: pending or absent or attendance Attendee: type: object description: ユーザの参加状況 properties: userId: $ref: '#/components/schemas/UUID' schedule: $ref: '#/components/schemas/Schedule' required: - userId - schedule RequestSchedule: type: object properties: schedule: $ref: '#/components/schemas/Schedule' required: - schedule ResponseEvent: type: object properties: eventId: $ref: '#/components/schemas/UUID' name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 sharedRoom: type: boolean description: 部屋の共用をするか timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' place: type: string example: S516 roomId: $ref: '#/components/schemas/UUID' groupId: $ref: '#/components/schemas/UUID' open: type: boolean description: グループ外のユーザーが参加予定を出来るか admins: $ref: '#/components/schemas/UserIdArray' tags: type: array items: $ref: '#/components/schemas/EventTag' attendees: $ref: '#/components/schemas/UserIdArray' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - eventId - name - description - sharedRoom - timeStart - timeEnd - place - open - roomId - groupId - admins - tags - attendees - createdBy - createdAt - updatedAt ResponseEventDetail: type: object properties: eventId: $ref: '#/components/schemas/UUID' name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 sharedRoom: type: boolean description: 部屋の共用をするか timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' place: type: string example: S516 groupName: type: string example: room open: type: boolean description: グループ外のユーザーが参加予定を出来るか room: $ref: '#/components/schemas/ResponseRoom' group: $ref: '#/components/schemas/ResponseGroup' admins: $ref: '#/components/schemas/UserIdArray' tags: type: array items: $ref: '#/components/schemas/EventTag' attendees: type: array items: $ref: '#/components/schemas/Attendee' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - eventId - name - description - sharedRoom - timeStart - timeEnd - place - groupName - open - room - group - admins - tags - attendees - createdBy - createdAt - updatedAt RequestEventInstant: type: object description: 部屋を作る properties: name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 sharedRoom: type: boolean timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' place: type: string example: S516 groupId: $ref: '#/components/schemas/UUID' open: type: boolean admins: $ref: '#/components/schemas/UserIdArray' tags: type: array items: $ref: '#/components/schemas/RequestEventTag' required: - name - description - sharedRoom - timeStart - timeEnd - place - groupId - admins RequestEventStock: type: object description: 既存の部屋を使う properties: name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 sharedRoom: type: boolean timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' roomId: $ref: '#/components/schemas/UUID' groupId: $ref: '#/components/schemas/UUID' open: type: boolean admins: $ref: '#/components/schemas/UserIdArray' tags: type: array items: $ref: '#/components/schemas/RequestEventTag' required: - name - description - sharedRoom - timeStart - timeEnd - roomId - groupId - admins RequestEvent: oneOf: - $ref: '#/components/schemas/RequestEventInstant' - $ref: '#/components/schemas/RequestEventStock' DraftEventStatus: type: string enum: - open - closed - confirmed description: ステータス(open=調整中, closed=締切済み, confirmed=イベント確定済み) RequestCandidateSlot: type: object description: 候補日時の枠 properties: date: type: string format: date description: 候補日 example: '2024-12-20' startTime: type: string pattern: '^([01]?[0-9]|2[0-3]):[0-5][0-9]$' description: 開始時刻 (HH:mm) example: '10:00' endTime: type: string pattern: '^([01]?[0-9]|2[0-3]):[0-5][0-9]$' description: 終了時刻 (HH:mm) example: '18:00' required: - date - startTime - endTime CandidateSlot: type: object description: 候補スロット properties: slotId: $ref: '#/components/schemas/UUID' timeStart: $ref: '#/components/schemas/DateTime' timeEnd: $ref: '#/components/schemas/DateTime' required: - slotId - timeStart - timeEnd ResponseDraftEvent: type: object description: draftイベント一覧用 properties: draftEventId: $ref: '#/components/schemas/UUID' name: type: string example: 第n回進捗回 deadline: $ref: '#/components/schemas/DateTime' status: $ref: '#/components/schemas/DraftEventStatus' respondedCount: type: integer description: 回答済み人数 totalInvitees: type: integer description: 招待者総数 admins: $ref: '#/components/schemas/UserIdArray' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - draftEventId - name - deadline - status - respondedCount - totalInvitees - admins - createdBy - createdAt - updatedAt ResponseDraftEventDetail: type: object description: draftイベント詳細 properties: draftEventId: $ref: '#/components/schemas/UUID' name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 open: type: boolean description: グループ外のユーザーが参加予定を出来るか deadline: $ref: '#/components/schemas/DateTime' candidateSlots: type: array items: $ref: '#/components/schemas/CandidateSlot' description: 候補スロットの一覧 status: $ref: '#/components/schemas/DraftEventStatus' respondedCount: type: integer totalInvitees: type: integer admins: $ref: '#/components/schemas/UserIdArray' invitees: $ref: '#/components/schemas/UserIdArray' createdBy: $ref: '#/components/schemas/UUID' createdAt: $ref: '#/components/schemas/DateTime' updatedAt: $ref: '#/components/schemas/DateTime' required: - draftEventId - name - deadline - candidateSlots - status - respondedCount - totalInvitees - admins - invitees - createdBy - createdAt - updatedAt RequestDraftEvent: type: object properties: name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 open: type: boolean deadline: $ref: '#/components/schemas/DateTime' candidateSlots: type: array items: $ref: '#/components/schemas/RequestCandidateSlot' description: 候補日時の枠 admins: $ref: '#/components/schemas/UserIdArray' invitees: $ref: '#/components/schemas/UserIdArray' tags: type: array items: $ref: '#/components/schemas/RequestEventTag' required: - name - deadline - candidateSlots - admins RequestDraftEventUpdate: type: object description: | 締切日までは全項目編集可能。 candidateSlotsは追加のみ可能(既存の候補は削除不可) properties: name: type: string example: 第n回進捗回 description: type: string example: 第n回の進捗会です。 open: type: boolean deadline: $ref: '#/components/schemas/DateTime' additionalCandidateSlots: type: array items: $ref: '#/components/schemas/RequestCandidateSlot' description: 追加する候補日時の枠 invitees: $ref: '#/components/schemas/UserIdArray' ResponseAvailability: type: object properties: userId: $ref: '#/components/schemas/UUID' draftEventId: $ref: '#/components/schemas/UUID' slotIds: type: array items: $ref: '#/components/schemas/UUID' description: 参加可能なスロットIDの配列 comment: type: string nullable: true description: コメント updatedAt: $ref: '#/components/schemas/DateTime' required: - userId - draftEventId - slotIds - updatedAt RequestAvailability: type: object properties: slotIds: type: array items: $ref: '#/components/schemas/UUID' description: 参加可能なスロットIDの配列 comment: type: string nullable: true maxLength: 500 required: - slotIds SlotResult: type: object description: スロットごとの集計結果 properties: slotId: $ref: '#/components/schemas/UUID' availableCount: type: integer description: 参加可能人数 availableUsers: $ref: '#/components/schemas/UserIdArray' availabilityRate: type: number format: float minimum: 0 maximum: 1 description: 参加可能率 required: - slotId - availableCount - availableUsers - availabilityRate RespondentSummary: type: object description: 回答者情報 properties: userId: $ref: '#/components/schemas/UUID' respondedAt: $ref: '#/components/schemas/DateTime' comment: type: string nullable: true required: - userId - respondedAt ResponseSchedulingResults: type: object properties: draftEventId: $ref: '#/components/schemas/UUID' results: type: array items: $ref: '#/components/schemas/SlotResult' description: 各時間帯ごとの集計結果 respondents: type: array items: $ref: '#/components/schemas/RespondentSummary' description: 回答者一覧 nonRespondents: $ref: '#/components/schemas/UserIdArray' required: - draftEventId - results - respondents - nonRespondents AuthParams: type: object properties: url: type: string format: url example: 'https://q.trap.jp/api/v3/oauth2/authorize' required: - url IcalSecret: type: object properties: secret: type: string required: - secret IcalToken: type: string description: userIdとicalのsecretをつなげたもの requestBodies: Group: description: グループの追加 required: true content: application/json: schema: $ref: '#/components/schemas/RequestGroup' Room: description: 部屋の追加 required: true content: application/json: schema: $ref: '#/components/schemas/RequestRoom' Tag: description: タグ自体の追加 required: true content: application/json: schema: $ref: '#/components/schemas/RequestTag' Event: description: 予約の編集 required: true content: application/json: schema: $ref: '#/components/schemas/RequestEvent' EventTag: description: イベントにタグを追加 required: true content: application/json: schema: $ref: '#/components/schemas/RequestTag' Schedule: description: イベントの参加予定を更新 required: true content: application/json: schema: $ref: '#/components/schemas/RequestSchedule' DraftEvent: description: draftイベントの作成 required: true content: application/json: schema: $ref: '#/components/schemas/RequestDraftEvent' DraftEventUpdate: description: draftイベントの更新 required: true content: application/json: schema: $ref: '#/components/schemas/RequestDraftEventUpdate' Availability: description: 参加可能時間 required: true content: application/json: schema: $ref: '#/components/schemas/RequestAvailability' responses: Nocontent: description: Nocontent UUIDArray: description: successful operation content: application/json: schema: $ref: '#/components/schemas/UUIDs' Room: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseRoom' RoomArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseRoom' Event: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseEventDetail' EventArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseEvent' Group: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseGroup' GroupArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseGroup' User: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseUser' UserArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseUser' icalSecret: description: successful operation content: application/json: schema: $ref: '#/components/schemas/IcalSecret' Tag: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseTag' TagArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseTag' DraftEvent: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseDraftEvent' DraftEventDetail: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseDraftEventDetail' DraftEventArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseDraftEvent' Availability: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseAvailability' AvailabilityArray: description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ResponseAvailability' SchedulingResults: description: successful operation content: application/json: schema: $ref: '#/components/schemas/ResponseSchedulingResults' parameters: session: name: session in: cookie required: true schema: type: string icalToken: name: icalToken in: path required: true schema: $ref: '#/components/schemas/IcalToken' eventFilter: name: q in: query schema: type: string description: "Syntax: top: ε | expr, expr: term (('||' | '&&') term)*, term: cmp | '(' expr ')', cmp: Attr ('==' | '!=') UUID, Attr: 'event' | 'user' | 'group' | 'tag'" dateBegin: name: dateBegin in: query description: 特定の日時から。 required: false schema: type: string format: date-time example: '2006-01-02T15:04:05Z' dateEnd: name: dateEnd in: query description: 特定の日時まで。 required: false schema: type: string format: date-time example: '2006-01-02T15:04:05Z' excludeEventID: name: excludeEventID in: query description: 除外するイベントのID。 required: false schema: type: string format: uuid example: '3fa85f64-5717-4562-b3fc-2c963f66afa6' include-suspended: name: include-suspended in: query description: アカウントがアクティブでないユーザーを含めるかどうか。 required: false schema: type: boolean example: false userRelation: name: relation in: query required: false description: | どのような関係性でユーザーと結びつけるか。 取り得る値は,admins(ユーザーが管理者), belongs(ユーザーが所属している), belongs-or-admins(ユーザーが管理者または所属している) イベントはさらに,attendees(not absent) 値がない場合は,belongs として振る舞う schema: type: string enum: - admins - belongs - belongs-or-admins - attendees userID: name: userID in: path required: true schema: type: string format: uuid groupID: name: groupID in: path required: true schema: type: string format: uuid roomID: name: roomID in: path required: true schema: type: string format: uuid eventID: name: eventID in: path required: true schema: type: string format: uuid draftEventID: name: draftEventID in: path required: true description: draftイベントID schema: type: string format: uuid draftEventStatus: name: status in: query description: ステータスでフィルタ schema: $ref: '#/components/schemas/DraftEventStatus' externalDocs: description: Find out more about Swagger url: http://swagger.io