openapi: 3.0.0 info: title: traQ v3 version: "3.0" description: traQ v3 API license: name: MIT url: "https://github.com/traPtitech/traQ/blob/master/LICENSE" contact: name: traP url: "https://github.com/traPtitech/traQ" servers: - url: "https://q.trap.jp/api/v3" description: production - url: "https://q-dev.trapti.tech/api/v3" description: staging - url: "http://localhost:3000/api/v3" description: local paths: "/channels/{channelId}/messages": parameters: - $ref: "#/components/parameters/channelIdInPath" post: summary: チャンネルにメッセージを投稿 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Message" "400": description: Bad Request "404": description: |- Not Found チャンネルが見つかりません。 description: |- 指定したチャンネルにメッセージを投稿します。 embedをtrueに指定すると、メッセージ埋め込みが自動で行われます。 アーカイブされているチャンネルに投稿することはできません。 operationId: postMessage requestBody: content: application/json: schema: $ref: "#/components/schemas/PostMessageRequest" description: "" tags: - message - channel get: summary: チャンネルメッセージのリストを取得 description: 指定したチャンネルのメッセージのリストを取得します。 operationId: getMessages tags: - channel - message parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/sinceInQuery" - $ref: "#/components/parameters/untilInQuery" - $ref: "#/components/parameters/inclusiveInQuery" - $ref: "#/components/parameters/orderInQuery" responses: "200": description: OK content: application/json: schema: type: array description: メッセージの配列 items: $ref: "#/components/schemas/Message" headers: X-TRAQ-MORE: $ref: "#/components/headers/X-TRAQ-MORE" "400": description: Bad Request "404": description: |- Not Found チャンネルが見つかりません。 "/messages": get: summary: メッセージを検索 description: メッセージを検索します。 operationId: searchMessages tags: - message parameters: - schema: type: string in: query name: word description: | 検索ワード Simple-Query-String-Syntaxをパースして検索します example: '"phrase match" +(foo | bar) -baz' - schema: type: string format: date-time in: query name: after description: 投稿日時が指定日時より後 example: 2006-01-02T15:04:05Z - schema: type: string format: date-time in: query name: before description: 投稿日時が指定日時より前 example: 2006-01-02T15:04:05Z - schema: type: string format: uuid in: query name: in description: メッセージが投稿されたチャンネル - schema: type: array items: type: string format: uuid in: query name: to description: メンションされたユーザー - schema: type: array items: type: string format: uuid in: query name: from description: メッセージを投稿したユーザー - schema: type: string format: uuid in: query name: citation description: 引用しているメッセージ - schema: type: boolean in: query name: bot description: メッセージを投稿したユーザーがBotかどうか - schema: type: boolean in: query name: hasURL description: メッセージがURLを含むか - schema: type: boolean in: query name: hasAttachments description: メッセージが添付ファイルを含むか - schema: type: boolean in: query name: hasImage description: メッセージが画像を含むか - schema: type: boolean in: query name: hasVideo description: メッセージが動画を含むか - schema: type: boolean in: query name: hasAudio description: メッセージが音声ファイルを含むか - schema: type: integer minimum: 1 maximum: 100 in: query name: limit description: 検索結果から取得するメッセージの最大件数 - schema: type: integer minimum: 0 maximum: 9900 in: query name: offset description: 検索結果から取得するメッセージのオフセット - in: query name: sort schema: type: string default: "-createdAt" enum: - createdAt - "-createdAt" - updatedAt - "-updatedAt" description: "ソート順 (作成日時が新しい `createdAt`, 作成日時が古い `-createdAt`, 更新日時が新しい `updatedAt`, 更新日時が古い `-updatedAt`)" responses: "200": description: OK content: application/json: schema: title: MessageSearchResult type: object description: メッセージ検索結果 properties: totalHits: type: integer format: int64 description: 検索にヒットしたメッセージ件数 hits: type: array items: $ref: "#/components/schemas/Message" description: 検索にヒットしたメッセージの配列 required: - totalHits - hits "400": description: Bad Request "503": description: search service is currently unavailable "/messages/{messageId}": parameters: - $ref: "#/components/parameters/messageIdInPath" get: summary: メッセージを取得 tags: - message responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Message" "404": description: Not Found operationId: getMessage description: 指定したメッセージを取得します。 put: summary: メッセージを編集 responses: "204": description: |- No Content メッセージを編集できました。 "400": description: Bad Request "403": description: |- Forbidden 指定されたメッセージを編集する権限がありません。 "404": description: Not Found description: |- 指定したメッセージを編集します。 自身が投稿したメッセージのみ編集することができます。 アーカイブされているチャンネルのメッセージを編集することは出来ません。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PostMessageRequest" tags: - message operationId: editMessage delete: summary: メッセージを削除 responses: "204": description: |- No Content 正常に削除できました。 "403": description: |- Forbidden 指定されたメッセージを削除する権限がありません。 "404": description: Not Found tags: - message operationId: deleteMessage description: |- 指定したメッセージを削除します。 自身が投稿したメッセージと自身が管理権限を持つWebhookとBOTが投稿したメッセージのみ削除することができます。 アーカイブされているチャンネルのメッセージを編集することは出来ません。 "/messages/{messageId}/pin": parameters: - $ref: "#/components/parameters/messageIdInPath" get: summary: ピン留めを取得 tags: - message - pin responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/MessagePin" "404": description: |- Not Found 指定したメッセージ、またはピン留めが見つかりません。 operationId: getPin description: 指定したメッセージのピン留め情報を取得します。 post: summary: ピン留めする responses: "201": description: |- Created 指定したメッセージがピン留めされました。 content: application/json: schema: $ref: "#/components/schemas/MessagePin" "400": description: Bad Request "404": description: |- Not Found メッセージが見つかりません。 tags: - message - pin operationId: createPin description: |- 指定したメッセージをピン留めします。 アーカイブされているチャンネルのメッセージ・存在しないメッセージ・チャンネル当たりの上限数を超えたメッセージのピン留めはできません。 delete: summary: ピン留めを外す responses: "204": description: |- No Content 指定したメッセージのピン留めが外されました。 "400": description: Bad Request "404": description: |- Not Found 指定したメッセージ、またはピン留めが見つかりません。 description: 指定したメッセージのピン留めを外します。 tags: - message - pin operationId: removePin "/channels/{channelId}/stats": parameters: - $ref: "#/components/parameters/channelIdInPath" - $ref: "#/components/parameters/excludeDeletedMessagesInQuery" get: summary: チャンネル統計情報を取得 tags: - channel responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ChannelStats" "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelStats description: 指定したチャンネルの統計情報を取得します。 "/channels/{channelId}/topic": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネルトピックを取得 tags: - channel responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ChannelTopic" "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelTopic description: 指定したチャンネルのトピックを取得します。 put: summary: チャンネルトピックを編集 responses: "204": description: |- No Content チャンネルトピックが編集されました "400": description: Bad Request "404": description: |- Not Found チャンネルが見つかりません。 tags: - channel description: |- 指定したチャンネルのトピックを編集します。 アーカイブされているチャンネルのトピックは編集できません。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PutChannelTopicRequest" operationId: editChannelTopic "/channels/{channelId}/viewers": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネル閲覧者リストを取得 tags: - channel responses: "200": description: OK content: application/json: schema: type: array description: チャンネル閲覧者の配列 items: $ref: "#/components/schemas/ChannelViewer" "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelViewers description: 指定したチャンネルの閲覧者のリストを取得します。 /files: post: summary: ファイルをアップロード responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/FileInfo" "400": description: Bad Request "411": description: Length Required "413": description: Request Entity Too Large tags: - file requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PostFileRequest" operationId: postFile description: |- 指定したチャンネルにファイルをアップロードします。 アーカイブされているチャンネルにはアップロード出来ません。 get: summary: ファイルメタのリストを取得 responses: "200": description: OK content: application/json: schema: type: array description: ファイルメタの配列 items: $ref: "#/components/schemas/FileInfo" headers: X-TRAQ-MORE: $ref: "#/components/headers/X-TRAQ-MORE" "400": description: Bad Request tags: - file operationId: getFiles parameters: - schema: type: string format: uuid in: query name: channelId description: アップロード先チャンネルUUID - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/sinceInQuery" - $ref: "#/components/parameters/untilInQuery" - $ref: "#/components/parameters/inclusiveInQuery" - $ref: "#/components/parameters/orderInQuery" - schema: type: boolean default: false in: query name: mine description: アップロード者が自分のファイルのみを取得するか description: |- 指定したクエリでファイルメタのリストを取得します。 クエリパラメータ`channelId`, `mine`の少なくともいずれかが必須です。 "/files/{fileId}/meta": parameters: - $ref: "#/components/parameters/fileIdInPath" get: summary: ファイルメタを取得 tags: - file responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/FileInfo" "403": description: Forbidden "404": description: |- Not Found ファイルが見つかりません。 operationId: getFileMeta description: |- 指定したファイルのメタ情報を取得します。 指定したファイルへのアクセス権限が必要です。 "/files/{fileId}/thumbnail": parameters: - $ref: "#/components/parameters/fileIdInPath" - schema: $ref: "#/components/schemas/ThumbnailType" in: query name: type description: 取得するサムネイルのタイプ get: summary: サムネイル画像を取得 tags: - file responses: "200": description: OK content: image/png: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/svg+xml: schema: type: string "403": description: Forbidden "404": description: |- Not Found ファイルが見つからない、またはサムネイル画像が存在しません。 operationId: getThumbnailImage description: |- 指定したファイルのサムネイル画像を取得します。 指定したファイルへのアクセス権限が必要です。 "/files/{fileId}": parameters: - $ref: "#/components/parameters/fileIdInPath" get: summary: ファイルをダウンロード tags: - file responses: "200": description: |- OK ファイル本体を返します。 application/octet-streamで返すことになっていますが、ファイルの形式によって変わります。 content: application/octet-stream: schema: type: string format: binary headers: Content-Disposition: schema: type: string description: "https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Disposition" "403": description: Forbidden "404": description: Not Found parameters: - schema: type: integer in: query name: dl description: 1を指定するとレスポンスにContent-Dispositionヘッダーが付与されます operationId: getFile description: |- 指定したファイル本体を取得します。 指定したファイルへのアクセス権限が必要です。 delete: summary: ファイルを削除 responses: "204": description: |- No Content ファイルが削除できました。 "403": description: Forbidden "404": description: Not Found tags: - file operationId: deleteFile description: |- 指定したファイルを削除します。 指定したファイルの削除権限が必要です。 "/channels/{channelId}/pins": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネルピンのリストを取得 tags: - channel - pin responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/Pin" "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelPins description: 指定したチャンネルにピン留めされているピンメッセージのリストを取得します。 "/messages/{messageId}/stamps": parameters: - $ref: "#/components/parameters/messageIdInPath" get: summary: メッセージのスタンプリストを取得 tags: - message - stamp responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/MessageStamp" "404": description: Not Found description: 指定したメッセージに押されているスタンプのリストを取得します。 operationId: getMessageStamps "/messages/{messageId}/stamps/{stampId}": parameters: - $ref: "#/components/parameters/messageIdInPath" - $ref: "#/components/parameters/stampIdInPath" post: summary: スタンプを押す responses: "204": description: |- No Content スタンプを押すことができました。 "400": description: Bad Request "404": description: |- Not Found メッセージ、またはスタンプが見つかりません。 operationId: addMessageStamp tags: - message - stamp requestBody: content: application/json: schema: $ref: "#/components/schemas/PostMessageStampRequest" description: "" description: 指定したメッセージに指定したスタンプを押します。 delete: summary: スタンプを消す responses: "204": description: |- No Content スタンプを消すことができました。 "404": description: |- Not Found メッセージ、またはスタンプが見つかりません。 operationId: removeMessageStamp tags: - message - stamp description: 指定したメッセージから指定した自身が押したスタンプを削除します。 "/stamps/{stampId}": parameters: - $ref: "#/components/parameters/stampIdInPath" get: summary: スタンプ情報を取得 tags: - stamp responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Stamp" "404": description: Not Found operationId: getStamp description: 指定したスタンプの情報を取得します。 delete: summary: スタンプを削除 responses: "204": description: |- No Content スタンプが削除されました。 "403": description: Forbidden "404": description: Not Found description: |- 指定したスタンプを削除します。 対象のスタンプの削除権限が必要です。 operationId: deleteStamp tags: - stamp patch: summary: スタンプ情報を変更 operationId: editStamp responses: "204": description: |- No Content スタンプ情報が変更されました。 "400": description: Bad Request "403": description: Forbidden "404": description: Not Found "409": description: Conflict tags: - stamp description: 指定したスタンプの情報を変更します。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchStampRequest" /stamps: post: summary: スタンプを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Stamp" "400": description: Bad Request "409": description: Conflict "413": description: Request Entity Too Large description: スタンプを新規作成します。 requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PostStampRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif, image/svg+xml" description: "" operationId: createStamp tags: - stamp get: summary: スタンプリストを取得 responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/StampWithThumbnail" operationId: getStamps tags: - stamp parameters: - schema: type: boolean default: true in: query name: include-unicode deprecated: true description: | Unicode絵文字を含ませるかどうか Deprecated: typeクエリを指定しなければ全てのスタンプを取得できるため、そちらを利用してください - schema: type: string enum: [unicode, original] in: query name: type description: 取得するスタンプの種類 description: スタンプのリストを取得します。 /users/me/stamp-history: get: summary: スタンプ履歴を取得 tags: - stamp - me responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/StampHistoryEntry" operationId: getMyStampHistory parameters: - schema: type: integer default: 100 maximum: 100 minimum: 1 in: query name: limit description: 件数 description: |- 自分のスタンプ履歴を最大100件まで取得します。 結果は降順で返されます。 このAPIが返すスタンプ履歴は厳密な履歴ではありません。 /users/me/stamp-recommendations: get: summary: スタンプレコメンドを取得 tags: - stamp - me responses: "200": description: OK content: application/json: schema: type: array items: type: object properties: stampId: type: string format: uuid description: スタンプUUID score: type: number format: double description: レコメンドスコア required: - stampId - score operationId: getMyStampRecommendations parameters: - schema: type: integer default: 100 maximum: 200 minimum: 1 in: query name: limit description: 件数 description: |- 自分のスタンプレコメンドを最大200件まで取得します。 結果は推薦度の高い順で返されます。 スタンプを使用したことがないユーザーの場合は空配列が返されます。 /users/me/qr-code: get: summary: QRコードを取得 tags: - me responses: "200": description: OK content: image/png: schema: type: string format: binary description: QRコード画像 text/plain: schema: type: string description: QRコードJWT description: |- 自身のQRコードを取得します。 返されたQRコードまたはトークンは、発行後の5分間のみ有効です operationId: getMyQRCode parameters: - schema: type: boolean default: false in: query name: token description: 画像でなくトークン文字列で返すかどうか "/stamps/{stampId}/stats": parameters: - $ref: "#/components/parameters/stampIdInPath" get: summary: スタンプ統計情報を取得 tags: - stamp responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/StampStats" "404": description: |- Not Found スタンプが見つかりません。 operationId: getStampStats description: 指定したスタンプの統計情報を取得します。 "/users/{userId}": parameters: - $ref: "#/components/parameters/userIdInPath" get: summary: ユーザー詳細情報を取得 tags: - user responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/UserDetail" "404": description: Not Found operationId: getUser description: 指定したユーザーの詳細情報を取得します。 patch: summary: ユーザー情報を変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "403": description: Forbidden "404": description: Not Found operationId: editUser tags: - user requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchUserRequest" description: |- 指定したユーザーの情報を変更します。 管理者権限が必要です。 "/groups/{groupId}": parameters: - $ref: "#/components/parameters/groupIdInPath" get: summary: ユーザーグループを取得 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/UserGroup" "404": description: Not Found operationId: getUserGroup tags: - group description: 指定したユーザーグループの情報を取得します。 delete: summary: ユーザーグループを削除 responses: "204": description: |- No Content ユーザーグループが削除されました。 "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: Not Found description: |- 指定したユーザーグループを削除します。 対象のユーザーグループの管理者権限が必要です。 operationId: deleteUserGroup tags: - group patch: summary: ユーザーグループを編集 responses: "204": description: |- No Content 編集されました。 "400": description: Bad Request "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: Not Found "409": description: |- Conflict 変更後のグループ名のグループは既に存在します。 tags: - group operationId: editUserGroup requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchUserGroupRequest" description: "" description: |- 指定したユーザーグループの情報を編集します。 対象のユーザーグループの管理者権限が必要です。 "/groups/{groupId}/icon": parameters: - $ref: "#/components/parameters/groupIdInPath" put: summary: ユーザーグループのアイコンを変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "404": description: |- Not Found ユーザーグループが見つかりません。 "413": description: Request Entity Too Large operationId: changeUserGroupIcon requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PutUserIconRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif" description: "" tags: - group description: |- ユーザーグループのアイコンを変更します。 対象のユーザーグループの管理者権限が必要です。 "/groups/{groupId}/members": parameters: - $ref: "#/components/parameters/groupIdInPath" get: summary: グループメンバーを取得 tags: - group responses: "200": description: OK content: application/json: schema: type: array description: ユーザーグループメンバーの配列 items: $ref: "#/components/schemas/UserGroupMember" "404": description: |- Not Found ユーザーグループが見つかりません。 operationId: getUserGroupMembers description: 指定したグループのメンバーのリストを取得します。 post: summary: グループメンバーを追加 responses: "204": description: |- No Content 追加されました。 "400": description: Bad Request "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 requestBody: content: application/json: schema: oneOf: - $ref: "#/components/schemas/UserGroupMember" - $ref: "#/components/schemas/UserGroupMembers" description: "" tags: - group operationId: addUserGroupMember description: |- 指定したグループにメンバーを追加します。 対象のユーザーグループの管理者権限が必要です。 delete: summary: グループメンバーを一括削除 responses: "204": description: |- No Content グループから全てのユーザーが削除されました。 "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 tags: - group operationId: removeUserGroupMembers description: |- 指定したグループから全てのメンバーを削除します。 対象のユーザーグループの管理者権限が必要です。 "/groups/{groupId}/members/{userId}": parameters: - $ref: "#/components/parameters/groupIdInPath" - $ref: "#/components/parameters/userIdInPath" delete: summary: グループメンバーを削除 responses: "204": description: |- No Content 指定したユーザーがユーザーグループから削除されました。 "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 tags: - group operationId: removeUserGroupMember description: |- 指定したユーザーグループから指定したユーザーを削除します。 既にグループから削除されているメンバーを指定した場合は204を返します。 対象のユーザーグループの管理者権限が必要です。 patch: summary: グループメンバーを編集 responses: "204": description: |- No Content 変更されました。 "400": description: |- Bad Request ユーザーがグループに存在しないか、リクエストが不正です。 "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 operationId: editUserGroupMember requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchGroupMemberRequest" tags: - group description: |- 指定したユーザーグループ内の指定したユーザーの属性を編集します。 対象のユーザーグループの管理者権限が必要です。 /groups: get: summary: ユーザーグループのリストを取得 tags: - group responses: "200": description: OK content: application/json: schema: type: array description: ユーザーグループの配列 items: $ref: "#/components/schemas/UserGroup" description: ユーザーグループのリストを取得します。 operationId: getUserGroups parameters: [] post: summary: ユーザーグループを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/UserGroup" "400": description: Bad Request "403": description: |- Forbidden 指定したグループを作成する権限がありません。 "409": description: |- Conflict 指定した名前のグループは既に存在します。 tags: - group description: |- ユーザーグループを作成します。 作成者は自動的にグループ管理者になります。 operationId: createUserGroup requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUserGroupRequest" /users/me: get: summary: 自分のユーザー詳細を取得 tags: - me responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/MyUserDetail" operationId: getMe description: 自身のユーザー詳細情報を取得します。 patch: summary: 自分のユーザー情報を変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request tags: - me operationId: editMe requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchMeRequest" description: 自身のユーザー情報を変更します。 "/users/me/oidc": get: summary: 自分のユーザー詳細を取得 (OIDC UserInfo) tags: - me responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/OIDCUserInfo" operationId: getOIDCUserInfo description: | OIDCトークンを用いてユーザー詳細を取得します。 OIDC UserInfo Endpointです。 "/users/{userId}/messages": parameters: - $ref: "#/components/parameters/userIdInPath" post: summary: ダイレクトメッセージを送信 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Message" "400": description: Bad Request "404": description: |- Not Found ユーザーが見つかりません。 tags: - message - user operationId: postDirectMessage requestBody: content: application/json: schema: $ref: "#/components/schemas/PostMessageRequest" description: 指定したユーザーにダイレクトメッセージを送信します。 get: summary: ダイレクトメッセージのリストを取得 operationId: getDirectMessages tags: - message - user responses: "200": description: OK headers: X-TRAQ-MORE: $ref: "#/components/headers/X-TRAQ-MORE" content: application/json: schema: type: array description: メッセージの配列 items: $ref: "#/components/schemas/Message" "400": description: Bad Request "404": description: |- Not Found ユーザーが見つかりません。 parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/sinceInQuery" - $ref: "#/components/parameters/untilInQuery" - $ref: "#/components/parameters/inclusiveInQuery" - $ref: "#/components/parameters/orderInQuery" description: 指定したユーザーとのダイレクトメッセージのリストを取得します。 "/users/{userId}/stats": parameters: - $ref: "#/components/parameters/userIdInPath" get: summary: ユーザー統計情報を取得 tags: - user responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/UserStats" "404": description: |- Not Found ユーザーが見つかりません。 operationId: getUserStats description: 指定したユーザーの統計情報を取得します。 "/channels/{channelId}/subscribers": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネルの通知購読者のリストを取得 tags: - channel - notification responses: "200": description: OK content: application/json: schema: type: array description: 購読者UUIDの配列 items: type: string format: uuid "403": description: |- Forbidden プライベートチャンネル・強制通知チャンネルの設定は取得できません。 "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelSubscribers description: 指定したチャンネルを通知購読しているユーザーのUUIDのリストを取得します。 patch: summary: チャンネルの通知購読者を編集 responses: "204": description: |- No Content 変更できました。 "400": description: Bad Request "403": description: |- Forbidden 指定したチャンネルの通知購読者は変更できません。 "404": description: |- Not Found チャンネルが見つかりません。 tags: - channel - notification operationId: editChannelSubscribers requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchChannelSubscribersRequest" description: "" description: |- 指定したチャンネルの通知購読者を編集します。 リクエストに含めなかったユーザーの通知購読状態は変更しません。 また、存在しないユーザーを指定した場合は無視されます。 put: summary: チャンネルの通知購読者を設定 responses: "204": description: |- No Content 変更されました。 headers: {} "400": description: Bad Request "403": description: |- Forbidden 指定したチャンネルの通知購読者は変更できません。 "404": description: |- Not Found チャンネルが見つかりません。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PutChannelSubscribersRequest" description: |- 指定したチャンネルの通知購読者を設定します。 リクエストに含めなかったユーザーの通知購読状態はオフになります。 また、存在しないユーザーを指定した場合は無視されます。 tags: - channel - notification operationId: setChannelSubscribers /users/me/subscriptions: get: summary: 自分のチャンネル購読状態を取得 tags: - me - notification responses: "200": description: OK content: application/json: schema: type: array description: チャンネル購読状態の配列 items: $ref: "#/components/schemas/UserSubscribeState" operationId: getMyChannelSubscriptions description: 自身のチャンネル購読状態を取得します。 "/users/me/subscriptions/{channelId}": parameters: - $ref: "#/components/parameters/channelIdInPath" put: summary: チャンネル購読レベルを設定 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "403": description: |- Forbidden 指定したチャンネルの通知購読レベルは変更できません。 "404": description: |- Not Found チャンネルが見つかりません。 tags: - me - notification operationId: setChannelSubscribeLevel requestBody: content: application/json: schema: $ref: "#/components/schemas/PutChannelSubscribeLevelRequest" description: 自身の指定したチャンネルの購読レベルを設定します。 /webhooks: get: summary: Webhook情報のリストを取得します responses: "200": description: OK content: application/json: schema: type: array description: Webhook情報の配列 items: $ref: "#/components/schemas/Webhook" tags: - webhook operationId: getWebhooks parameters: - schema: type: boolean default: false in: query name: all description: 全てのWebhookを取得します。権限が必要です。 description: |- Webhookのリストを取得します。 allがtrueで無い場合は、自分がオーナーのWebhookのリストを返します。 post: summary: Webhookを新規作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Webhook" "400": description: Bad Request operationId: createWebhook tags: - webhook requestBody: content: application/json: schema: $ref: "#/components/schemas/PostWebhookRequest" description: |- Webhookを新規作成します。 `secret`が空文字の場合、insecureウェブフックが作成されます。 "/webhooks/{webhookId}": parameters: - $ref: "#/components/parameters/webhookIdInPath" get: summary: Webhook情報を取得 tags: - webhook responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Webhook" "404": description: |- Not Found Webhookが見つかりません。 operationId: getWebhook description: 指定したWebhookの詳細を取得します。 post: summary: Webhookを送信 responses: "204": description: No Content "400": description: Bad Request "404": description: Not Found operationId: postWebhook parameters: - schema: type: string in: header name: X-TRAQ-Signature description: リクエストボディシグネチャ(Secretが設定されている場合は必須) - schema: type: string in: header name: X-TRAQ-Channel-Id description: 投稿先のチャンネルID(変更する場合) - schema: type: integer default: 0 in: query name: embed description: メンション・チャンネルリンクを自動埋め込みする場合に1を指定する requestBody: content: text/plain: schema: type: string description: メッセージ文字列 description: "" tags: - webhook description: |- Webhookにメッセージを投稿します。 secureなウェブフックに対しては`X-TRAQ-Signature`ヘッダーが必須です。 アーカイブされているチャンネルには投稿できません。 delete: summary: Webhookを削除 responses: "204": description: |- No Content 削除されました。 "404": description: |- Not Found Webhookが見つかりません。 tags: - webhook operationId: deleteWebhook description: |- 指定したWebhookを削除します。 Webhookによって投稿されたメッセージは削除されません。 patch: summary: Webhook情報を変更 responses: "204": description: |- No Content 編集できました。 "400": description: Bad Request "404": description: |- Not Found Webhookが見つかりません。 operationId: editWebhook requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchWebhookRequest" tags: - webhook description: 指定したWebhookの情報を変更します。 "/webhooks/{webhookId}/icon": parameters: - $ref: "#/components/parameters/webhookIdInPath" get: summary: Webhookのアイコンを取得 tags: - webhook responses: "200": description: OK content: image/jpeg: schema: type: string format: binary image/gif: schema: type: string format: binary image/png: schema: type: string format: binary "404": description: |- Not Found Webhookが見つかりません。 operationId: getWebhookIcon description: 指定したWebhookのアイコン画像を取得します put: summary: Webhookのアイコンを変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "404": description: |- Not Found Webhookが見つかりません。 "413": description: Request Entity Too Large operationId: changeWebhookIcon requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PutUserIconRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif" description: "" tags: - webhook description: 指定したWebhookのアイコン画像を変更します。 "/users/{userId}/icon": parameters: - $ref: "#/components/parameters/userIdInPath" get: summary: ユーザーのアイコン画像を取得 tags: - user responses: "200": description: OK content: image/jpeg: schema: type: string format: binary image/gif: schema: type: string format: binary image/png: schema: type: string format: binary "404": description: |- Not Found ユーザーが見つかりません。 operationId: getUserIcon description: 指定したユーザーのアイコン画像を取得します。 put: summary: ユーザーのアイコン画像を変更します responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found ユーザーが見つかりません。 "413": description: Request Entity Too Large operationId: changeUserIcon requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PutUserIconRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif" tags: - user description: |- 指定したユーザーのアイコン画像を変更します。 管理者権限が必要です。 /users/me/icon: get: summary: 自分のアイコン画像を取得 tags: - me responses: "200": description: OK content: image/jpeg: schema: type: string format: binary image/gif: schema: type: string format: binary image/png: schema: type: string format: binary "404": description: |- Not Found ユーザーが見つかりません。 operationId: getMyIcon description: 自分のアイコン画像を取得します。 put: summary: 自分のアイコン画像を変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "413": description: Request Entity Too Large description: 自分のアイコン画像を変更します。 operationId: changeMyIcon requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PutUserIconRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif" tags: - me /users/me/password: put: summary: 自分のパスワードを変更 responses: "204": description: |- No Content 変更できました。 "400": description: Bad Request "401": description: |- Unauthorized 現在のパスワードが違います。 tags: - me operationId: changeMyPassword requestBody: content: application/json: schema: $ref: "#/components/schemas/PutMyPasswordRequest" description: "" description: 自身のパスワードを変更します。 "/users/{userId}/password": parameters: - $ref: "#/components/parameters/userIdInPath" put: summary: ユーザーのパスワードを変更 responses: "204": description: |- No Content 変更できました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found ユーザーが見つかりません。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PutUserPasswordRequest" description: "" tags: - user operationId: changeUserPassword description: |- 指定したユーザーのパスワードを変更します。 管理者権限が必要です。 /users/me/fcm-device: post: summary: FCMデバイスを登録 responses: "204": description: |- No Content 登録できました。 "400": description: Bad Request tags: - me - notification operationId: registerFCMDevice description: 自身のFCMデバイスを登録します。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PostMyFCMDeviceRequest" /users/me/view-states: get: summary: 自身のチャンネル閲覧状態一覧を取得 responses: "200": description: OK content: application/json: schema: type: array description: チャンネル閲覧状態 items: $ref: "#/components/schemas/MyChannelViewState" operationId: getMyViewStates tags: - me - notification description: 自身のチャンネル閲覧状態一覧を取得します。 /users: post: summary: ユーザーを登録 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/UserDetail" "400": description: Bad Request "403": description: Forbidden "409": description: |- Conflict nameが重複しています。 operationId: createUser tags: - user requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUserRequest" description: "" description: |- ユーザーを登録します。 管理者権限が必要です。 get: summary: ユーザーのリストを取得 responses: "200": description: OK content: application/json: schema: type: array description: ユーザー情報の配列 items: $ref: "#/components/schemas/User" "400": description: Bad Request operationId: getUsers tags: - user parameters: - schema: type: boolean default: false in: query name: include-suspended description: アカウントがアクティブでないユーザーを含め、全てのユーザーを取得するかどうか - schema: type: string in: query name: name description: 名前が一致するアカウントのみを取得する description: |- ユーザーのリストを取得します。 `include-suspended`を指定しない場合、レスポンスにはユーザーアカウント状態が"1: 有効"であるユーザーのみが含まれます。 `include-suspended`と`name`を同時に指定することはできません。 /channels: post: summary: チャンネルを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Channel" "400": description: Bad Request "403": description: Forbidden "409": description: |- Conflict 指定した名前のチャンネルは既に存在しています。 operationId: createChannel tags: - channel requestBody: content: application/json: schema: $ref: "#/components/schemas/PostChannelRequest" description: |- チャンネルを作成します。 階層が6以上になるチャンネルは作成できません。 get: summary: チャンネルリストを取得 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ChannelList" operationId: getChannels tags: - channel description: チャンネルのリストを取得します。 parameters: - schema: type: boolean default: false in: query name: include-dm description: ダイレクトメッセージチャンネルをレスポンスに含めるかどうか - schema: type: string in: query name: path description: パスが一致するチャンネルのみを取得する "/users/{userId}/tags": parameters: - $ref: "#/components/parameters/userIdInPath" get: summary: ユーザーのタグリストを取得 tags: - user - user tag responses: "200": description: OK content: application/json: schema: type: array description: ユーザータグの配列 items: $ref: "#/components/schemas/UserTag" "404": description: |- Not Found ユーザーが見つかりません。 description: 指定したユーザーのタグリストを取得します。 operationId: getUserTags post: summary: ユーザーにタグを追加 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/UserTag" "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found ユーザーが見つかりません。 "409": description: |- Conflict 既に追加されています。 tags: - user - user tag operationId: addUserTag requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUserTagRequest" description: "" description: |- 指定したユーザーに指定したタグを追加します。 Webhookユーザーにタグを追加することは出来ません。 "/users/{userId}/tags/{tagId}": parameters: - $ref: "#/components/parameters/userIdInPath" - $ref: "#/components/parameters/tagIdInPath" patch: summary: ユーザーのタグを編集 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "404": description: |- Not Found ユーザーか、タグが見つかりません。 operationId: editUserTag requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchUserTagRequest" description: "" tags: - user - user tag description: |- 指定したユーザーの指定したタグの状態を変更します。 他人の状態は変更できません。 delete: summary: ユーザーからタグを削除します responses: "204": description: |- No Content 削除されました。 "403": description: |- Forbidden タグがロックされていました。 "404": description: |- Not Found ユーザーが見つかりません。 description: 既に存在しないタグを削除しようとした場合は204を返します。 operationId: removeUserTag tags: - user - user tag "/tags/{tagId}": parameters: - $ref: "#/components/parameters/tagIdInPath" get: summary: タグ情報を取得 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Tag" "404": description: Not Found operationId: getTag tags: - user tag description: 指定したタグの情報を取得します。 /users/me/tags: get: summary: 自分のタグリストを取得 tags: - me - user tag responses: "200": description: OK content: application/json: schema: type: array description: ユーザータグの配列 items: $ref: "#/components/schemas/UserTag" operationId: getMyUserTags description: 自分に付けられているタグの配列を取得します。 post: summary: 自分にタグを追加 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/UserTag" "400": description: Bad Request "409": description: |- Conflict 既に追加されています。 tags: - me - user tag operationId: addMyUserTag requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUserTagRequest" description: "" description: 自分に新しくタグを追加します。 "/users/me/tags/{tagId}": parameters: - $ref: "#/components/parameters/tagIdInPath" delete: summary: 自分からタグを削除します responses: "204": description: |- No Content 削除されました。 "403": description: |- Forbidden タグがロックされています。 description: 既に存在しないタグを削除しようとした場合は204を返します。 operationId: removeMyUserTag tags: - user tag - me patch: summary: 自分のタグを編集 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "404": description: |- Not Found タグが見つかりません。 operationId: editMyUserTag requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchUserTagRequest" description: "" tags: - user tag - me description: 自分の指定したタグの状態を変更します。 /users/me/stars: get: summary: スターチャンネルリストを取得 tags: - me - star responses: "200": description: OK content: application/json: schema: type: array description: スターしているチャンネルのUUID配列 items: type: string format: uuid operationId: getMyStars description: 自分がスターしているチャンネルのUUIDの配列を取得します。 post: summary: チャンネルをスターに追加 responses: "204": description: |- No Content スターしました。 "400": description: Bad Request tags: - me - star operationId: addMyStar requestBody: content: application/json: schema: $ref: "#/components/schemas/PostStarRequest" description: |- 指定したチャンネルをスターチャンネルに追加します。 スター済みのチャンネルIDを指定した場合、204を返します。 不正なチャンネルIDを指定した場合、400を返します。 "/users/me/stars/{channelId}": parameters: - $ref: "#/components/parameters/channelIdInPath" delete: summary: チャンネルをスターから削除します responses: "204": description: |- No Content 削除されました。 tags: - me - star description: 既にスターから削除されているチャンネルを指定した場合は204を返します。 operationId: removeMyStar /users/me/unread: get: summary: 未読チャンネルを取得 tags: - me - notification responses: "200": description: OK content: application/json: schema: type: array description: 未読チャンネル情報の配列 items: $ref: "#/components/schemas/UnreadChannel" operationId: getMyUnreadChannels description: 自分が現在未読のチャンネルの未読情報を取得します。 /version: get: summary: バージョンを取得 tags: - public responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Version" operationId: getServerVersion description: サーバーバージョン及びサーバーフラグ情報を取得します。 /login: post: summary: ログイン responses: "204": description: |- No Content ログインしました。 "302": description: |- Found ログインしました。リダイレクトします。 "400": description: Bad Request "401": description: |- Unauthorized 認証情報が間違っています。 "403": description: |- Forbidden ログインを試行したユーザーアカウントに問題があります。 tags: - authentication operationId: login parameters: - $ref: "#/components/parameters/redirectInQuery" requestBody: content: application/json: schema: $ref: "#/components/schemas/PostLoginRequest" description: ログインします。 /logout: post: summary: ログアウト responses: "204": description: |- No Content ログアウトしました。 "302": description: |- Found ログアウトしました。リダイレクトします。 tags: - authentication operationId: logout parameters: - $ref: "#/components/parameters/redirectInQuery" - schema: type: boolean default: false in: query name: all description: 全てのセッションでログアウトするかどうか description: ログアウトします。 /users/me/sessions: get: summary: 自分のログインセッションリストを取得 tags: - authentication - me responses: "200": description: OK content: application/json: schema: type: array description: 有効なログインセッションの配列 items: $ref: "#/components/schemas/LoginSession" operationId: getMySessions description: 自分のログインセッションのリストを取得します。 "/users/me/sessions/{sessionId}": parameters: - $ref: "#/components/parameters/sessionIdInPath" delete: summary: セッションを無効化 responses: "204": description: |- No Content 無効化しました。 operationId: revokeMySession tags: - authentication - me description: |- 指定した自分のセッションを無効化(ログアウト)します。 既に存在しない・無効化されているセッションを指定した場合も`204`を返します。 /activity/timeline: get: summary: アクテビティタイムラインを取得 tags: - activity responses: "200": description: OK content: application/json: schema: type: array description: メッセージの配列 items: $ref: "#/components/schemas/ActivityTimelineMessage" "400": description: Bad Request description: |- パブリックチャンネルの直近の投稿メッセージを作成日時の降順で取得します。 `all`が`true`でない場合、購読チャンネルのみのタイムラインを取得します parameters: - schema: type: integer minimum: 1 maximum: 50 default: 50 in: query name: limit description: 取得する件数 - schema: type: boolean default: false in: query name: all description: 全てのチャンネルのタイムラインを取得する - schema: type: boolean default: false in: query name: per_channel description: 同じチャンネルのメッセージは最新のもののみ取得するか operationId: getActivityTimeline /ws: get: summary: WebSocket通知ストリームに接続します tags: - notification responses: "101": description: Switching Protocols operationId: ws description: |- # WebSocketプロトコル ## 送信 `コマンド:引数1:引数2:...`のような形式のTextMessageをサーバーに送信することで、このWebSocketセッションに対する設定が実行できる。 ### `viewstate`コマンド このWebSocketセッションが見ているチャンネル(イベントを受け取るチャンネル)を設定する。 現時点では1つのセッションに対して1つのチャンネルしか設定できない。 `viewstate:{チャンネルID}:{閲覧状態}` + チャンネルID: 対象のチャンネルID + 閲覧状態: `none`, `monitoring`, `editing` 最初の`viewstate`コマンドを送る前、または`viewstate:null`, `viewstate:`を送信した後は、このセッションはどこのチャンネルも見ていないことになる。 ### `rtcstate`コマンド 自分のWebRTC状態を変更する。 他のコネクションが既に状態を保持している場合、変更することができません。 `rtcstate:{チャンネルID}:({状態}:{セッションID})*` コネクションが切断された場合、自分のWebRTC状態はリセットされます。 ### `timeline_streaming`コマンド 全てのパブリックチャンネルの`MESSAGE_CREATED`イベントを受け取るかどうかを設定する。 初期状態は`off`です。 `timeline_streaming:(on|off|true|false)` ## 受信 TextMessageとして各種イベントが`type`と`body`を持つJSONとして非同期に送られます。 例: ```json {"type":"USER_ONLINE","body":{"id":"7dd8e07f-7f5d-4331-9176-b56a4299768b"}} ``` ## イベント一覧 ### `USER_JOINED` ユーザーが新規登録された。 対象: 全員 + `id`: 登録されたユーザーのId ### `USER_UPDATED` ユーザーの情報が更新された。 対象: 全員 + `id`: 情報が更新されたユーザーのId ### `USER_TAGS_UPDATED` ユーザーのタグが更新された。 対象: 全員 + `id`: タグが更新されたユーザーのId + `tag_id`: 更新されたタグのId ### `USER_ICON_UPDATED` ユーザーのアイコンが更新された。 対象: 全員 + `id`: アイコンが更新されたユーザーのId ### `USER_WEBRTC_STATE_CHANGED` ユーザーのWebRTCの状態が変化した 対象: 全員 + `user_id`: 変更があったユーザーのId + `channel_id`: ユーザーの変更後の接続チャンネルのId + `sessions`: ユーザーの変更後の状態(配列) + `state`: 状態 + `sessionId`: セッションID ### `USER_VIEWSTATE_CHANGED` ユーザーのチャンネルの閲覧状態が変化した 対象: 変化したWSセッションを含めた、該当ユーザーのWSセッション全て + `view_states`: 変化したWSセッションを含めた、該当ユーザーの変更後の状態(配列) + `key`: WSセッションの識別子 + `channel_id`: 閲覧しているチャンネルId + `state`: 閲覧状態 ### `USER_ONLINE` ユーザーがオンラインになった。 対象: 全員 + `id`: オンラインになったユーザーのId ### `USER_OFFLINE` ユーザーがオフラインになった。 対象: 全員 + `id`: オフラインになったユーザーのId ### `USER_GROUP_CREATED` ユーザーグループが作成された 対象: 全員 + `id`: 作成されたユーザーグループのId ### `USER_GROUP_UPDATED` ユーザーグループが更新された 対象: 全員 + `id`: 作成されたユーザーグループのId ### `USER_GROUP_DELETED` ユーザーグループが削除された 対象: 全員 + `id`: 削除されたユーザーグループのId ### `CHANNEL_CREATED` チャンネルが新規作成された。 対象: 該当チャンネルを閲覧可能な全員 + `id`: 作成されたチャンネルのId + `dm_user_id`: (DMの場合のみ) DM相手のユーザーId ### `CHANNEL_UPDATED` チャンネルの情報が変更された。 対象: 該当チャンネルを閲覧可能な全員 + `id`: 変更があったチャンネルのId + `dm_user_id`: (DMの場合のみ) DM相手のユーザーId ### `CHANNEL_DELETED` チャンネルが削除された。 対象: 該当チャンネルを閲覧可能な全員 + `id`: 削除されたチャンネルのId + `dm_user_id`: (DMの場合のみ) DM相手のユーザーId ### `CHANNEL_STARED` 自分がチャンネルをスターした。 対象: 自分 + `id`: スターしたチャンネルのId ### `CHANNEL_UNSTARED` 自分がチャンネルのスターを解除した。 対象: 自分 + `id`: スターしたチャンネルのId ### `CHANNEL_VIEWERS_CHANGED` チャンネルの閲覧者が変化した。 対象: 該当チャンネルを閲覧しているユーザー + `id`: 変化したチャンネルのId + `viewers`: 変化後の閲覧者(配列) + `userId`: ユーザーId + `state`: 閲覧状態 + `updatedAt`: 閲覧状態の更新日時 ### `CHANNEL_SUBSCRIBERS_CHANGED` チャンネルの購読者が変化した。 対象: 該当チャンネルを閲覧しているユーザー + `id`: 変化したチャンネルのId ### `MESSAGE_CREATED` メッセージが投稿された。 対象: 投稿チャンネルを閲覧しているユーザー・投稿チャンネルに通知をつけているユーザー・メンションを受けたユーザー + `id`: 投稿されたメッセージのId + `is_citing`: 投稿されたメッセージがWebSocketを接続しているユーザーの投稿を引用しているかどうか ### `MESSAGE_UPDATED` メッセージが更新された。 対象: 投稿チャンネルを閲覧しているユーザー + `id`: 更新されたメッセージのId ### `MESSAGE_DELETED` メッセージが削除された。 対象: 投稿チャンネルを閲覧しているユーザー + `id`: 削除されたメッセージのId ### `MESSAGE_STAMPED` メッセージにスタンプが押された。 対象: 投稿チャンネルを閲覧しているユーザー + `message_id`: メッセージId + `user_id`: スタンプを押したユーザーのId + `stamp_id`: スタンプのId + `count`: そのユーザーが押した数 + `created_at`: そのユーザーがそのスタンプをそのメッセージに最初に押した日時 ### `MESSAGE_UNSTAMPED` メッセージからスタンプが外された。 対象: 投稿チャンネルを閲覧しているユーザー + `message_id`: メッセージId + `user_id`: スタンプを押したユーザーのId + `stamp_id`: スタンプのId ### `MESSAGE_PINNED` メッセージがピン留めされた。 対象: 投稿チャンネルを閲覧しているユーザー + `message_id`: ピンされたメッセージのID + `channel_id`: ピンされたメッセージのチャンネルID ### `MESSAGE_UNPINNED` ピン留めされたメッセージのピンが外された。 対象: 投稿チャンネルを閲覧しているユーザー + `message_id`: ピンが外されたメッセージのID + `channel_id`: ピンが外されたメッセージのチャンネルID ### `MESSAGE_READ` 自分があるチャンネルのメッセージを読んだ。 対象: 自分 + `id`: 読んだチャンネルId ### `STAMP_CREATED` スタンプが新しく追加された。 対象: 全員 + `id`: 作成されたスタンプのId ### `STAMP_UPDATED` スタンプが修正された。 対象: 全員 + `id`: 修正されたスタンプのId ### `STAMP_DELETED` スタンプが削除された。 対象: 全員 + `id`: 削除されたスタンプのId ### `STAMP_PALETTE_CREATED` スタンプパレットが新しく追加された。 対象: 自分 + `id`: 作成されたスタンプパレットのId ### `STAMP_PALETTE_UPDATED` スタンプパレットが修正された。 対象: 自分 + `id`: 修正されたスタンプパレットのId ### `STAMP_PALETTE_DELETED` スタンプパレットが削除された。 対象: 自分 + `id`: 削除されたスタンプパレットのId ### `CLIP_FOLDER_CREATED` クリップフォルダーが作成された。 対象:自分 + `id`: 作成されたクリップフォルダーのId ### `CLIP_FOLDER_UPDATED` クリップフォルダーが修正された。 対象: 自分 + `id`: 更新されたクリップフォルダーのId ### `CLIP_FOLDER_DELETED` クリップフォルダーが削除された。 対象: 自分 + `id`: 削除されたクリップフォルダーのId ### `CLIP_FOLDER_MESSAGE_DELETED` クリップフォルダーからメッセージが除外された。 対象: 自分 + `folder_id`: メッセージが除外されたクリップフォルダーのId + `message_id`: クリップフォルダーから除外されたメッセージのId ### `CLIP_FOLDER_MESSAGE_ADDED` クリップフォルダーにメッセージが追加された。 対象: 自分 + `folder_id`: メッセージが追加されたクリップフォルダーのId + `message_id`: クリップフォルダーに追加されたメッセージのId ### `QALL_ROOM_STATE_CHANGED` ルーム状態が変更された。 対象: 全員 + `room_id`: 変更されたルームのId + `state`: 変更後のルーム状態 + `roomId`: ルームのID + `participants`: ルーム内の参加者(配列) + `identity`: ユーザーID_RandomUUID + `name`: 表示名 + `joinedAt`: 参加した時刻 + `attributes`: ユーザーに関連付けられたカスタム属性 + `canPublish`: 発言権限 + `isWebinar`: ウェビナールームかどうか + `metadata`: ルームに関連付けられたカスタム属性 ### `QALL_SOUNDBOARD_ITEM_CREATED` サウンドボードアイテムが作成された。 対象: 全員 + `sound_id`: 作成されたサウンドのId + `name`: サウンド名 + `creator_id`: 作成者のId ### `QALL_SOUNDBOARD_ITEM_DELETED` サウンドボードアイテムが削除された。 対象: 全員 + `sound_id`: 削除されたサウンドのId /users/me/tokens: get: summary: 有効トークンのリストを取得 tags: - oauth2 - me responses: "200": description: OK content: application/json: schema: type: array description: トークン情報の配列 items: $ref: "#/components/schemas/ActiveOAuth2Token" operationId: getMyTokens description: 有効な自分に発行されたOAuth2トークンのリストを取得します。 "/users/me/tokens/{tokenId}": parameters: - $ref: "#/components/parameters/tokenIdInPath" delete: summary: トークンの認可を取り消す responses: "204": description: |- No Content 取り消しました。 "404": description: Not Found operationId: revokeMyToken description: 自分の指定したトークンの認可を取り消します。 tags: - oauth2 - me "/public/icon/{username}": parameters: - name: username in: path required: true description: ユーザー名 schema: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" get: summary: ユーザーのアイコン画像を取得 tags: - public responses: "200": description: OK content: image/jpeg: schema: type: string format: binary image/gif: schema: type: string format: binary image/png: schema: type: string format: binary "404": description: Not Found operationId: getPublicUserIcon description: ユーザーのアイコン画像を取得します。 "/clients/{clientId}": parameters: - $ref: "#/components/parameters/clientIdInPath" get: summary: OAuth2クライアント情報を取得 tags: - oauth2 responses: "200": description: OK content: application/json: schema: oneOf: - $ref: "#/components/schemas/OAuth2Client" - $ref: "#/components/schemas/OAuth2ClientDetail" "403": description: Forbidden "404": description: Not Found operationId: getClient parameters: - schema: type: boolean default: false in: query name: detail description: 詳細情報を含めるかどうか description: |- 指定したOAuth2クライアントの情報を取得します。 詳細情報の取得には対象のクライアントの管理権限が必要です。 delete: summary: OAuth2クライアントを削除 responses: "204": description: |- No Content 削除されました。 "403": description: Forbidden "404": description: |- Not Found OAuth2クライアントが見つかりません。 description: |- 指定したOAuth2クライアントを削除します。 対象のクライアントの管理権限が必要です。正常に削除された場合、このクライアントに対する認可は全て取り消されます。 operationId: deleteClient tags: - oauth2 patch: summary: OAuth2クライアント情報を変更 responses: "204": description: |- No Content 変更できました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found OAuth2クライアントが見つかりません。 tags: - oauth2 operationId: editClient requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchClientRequest" description: "" description: |- 指定したOAuth2クライアントの情報を変更します。 対象のクライアントの管理権限が必要です。 クライアント開発者UUIDを変更した場合は、変更先ユーザーにクライアント管理権限が移譲され、自分自身は権限を失います。 "/clients/{clientId}/tokens": delete: summary: OAuthクライアントのトークンを削除 parameters: - $ref: "#/components/parameters/clientIdInPath" responses: "204": description: |- No Content 削除できました。 "404": description: |- Not Found OAuth2クライアントが見つかりません。 tags: - oauth2 operationId: revokeClientTokens description: |- 自分が許可している指定したOAuthクライアントのアクセストークンを全てRevokeします。 /clients: get: summary: OAuth2クライアントのリストを取得 tags: - oauth2 responses: "200": description: OK content: application/json: schema: type: array description: OAuth2クライアント情報の配列 items: $ref: "#/components/schemas/OAuth2Client" operationId: getClients parameters: - schema: type: boolean default: false in: query name: all description: 全てのクライアントを取得するかどうか description: |- 自身が開発者のOAuth2クライアントのリストを取得します。 `all`が`true`の場合、全開発者の全クライアントのリストを返します。 post: summary: OAuth2クライアントを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/OAuth2ClientDetail" "400": description: Bad Request tags: - oauth2 operationId: createClient description: OAuth2クライアントを作成します。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PostClientRequest" /bots: post: summary: BOTを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/BotDetail" "400": description: Bad Request "409": description: |- Conflict 既に使われている名前です。 operationId: createBot description: |- BOTを作成します。 作成後に購読イベントの設定を行う必要があります。 さらにHTTP Modeの場合はアクティベーションを行う必要があります。 tags: - bot requestBody: content: application/json: schema: $ref: "#/components/schemas/PostBotRequest" get: summary: BOTリストを取得 responses: "200": description: OK content: application/json: schema: type: array description: BOT情報の配列 items: $ref: "#/components/schemas/Bot" operationId: getBots parameters: - schema: type: boolean default: false in: query name: all description: 全てのBOTを取得するかどうか tags: - bot description: |- BOT情報のリストを取得します。 allを指定しない場合、自分が開発者のBOTのみを返します。 /bots/ws: get: tags: - bot responses: "101": description: Switching Protocols operationId: connectBotWS summary: WebSocket Mode BOT用通知ストリームに接続します description: |- # BOT WebSocketプロトコル ## 送信 `コマンド:引数1:引数2:...` のような形式のTextMessageをサーバーに送信することで、このWebSocketセッションに対する設定が実行できます。 ### `rtcstate`コマンド 自分のWebRTC状態を変更します。 他のコネクションが既に状態を保持している場合、変更することができません。 `rtcstate:{チャンネルID}:({状態}:{セッションID})*` チャンネルIDにnullもしくは空文字を指定するか、状態にnullもしくは空文字を指定した場合、WebRTC状態はリセットされます。 `rtcstate:null`, `rtcstate:`, `rtcstate:channelId:null`, `rtcstate:channelId:` コネクションが切断された場合、自分のWebRTC状態はリセットされます。 ## 受信 TextMessageとして各種イベントが`type`、`reqId`、`body`を持つJSONとして非同期に送られます。 `body`の内容はHTTP Modeの場合のRequest Bodyと同様です。 例外として`ERROR`イベントは`reqId`を持ちません。 例: PINGイベント `{"type":"PING","reqId":"requestId","body":{"eventTime":"2019-05-07T04:50:48.582586882Z"}}` ### `ERROR` コマンドの引数が不正などの理由でコマンドが受理されなかった場合に送られます。 非同期に送られるため、必ずしもコマンドとの対応関係を確定できないことに注意してください。 本番環境ではERRORが送られないようにすることが望ましいです。 `{"type":"ERROR","body":"message"}` "/bots/{botId}/icon": parameters: - $ref: "#/components/parameters/botIdInPath" get: summary: BOTのアイコン画像を取得 responses: "200": description: OK content: image/jpeg: schema: type: string format: binary image/gif: schema: type: string format: binary image/png: schema: type: string format: binary "404": description: |- Not Found BOTが見つかりません。 operationId: getBotIcon tags: - bot description: 指定したBOTのアイコン画像を取得を取得します。 put: summary: BOTのアイコン画像を変更 responses: "204": description: |- No Content 変更されました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 "413": description: Request Entity Too Large operationId: changeBotIcon requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/PutUserIconRequest" encoding: file: contentType: "image/png, image/jpeg, image/gif" tags: - bot description: |- 指定したBOTのアイコン画像を変更を変更します。 対象のBOTの管理権限が必要です。 "/bots/{botId}": parameters: - $ref: "#/components/parameters/botIdInPath" get: summary: BOT情報を取得 tags: - bot responses: "200": description: OK content: application/json: schema: oneOf: - $ref: "#/components/schemas/Bot" - $ref: "#/components/schemas/BotDetail" "403": description: Forbidden "404": description: Not Found operationId: getBot parameters: - schema: type: boolean default: false in: query name: detail description: 詳細情報を含めるかどうか description: |- 指定したBOTのBOT情報を取得します。 BOT詳細情報を取得する場合は、対象のBOTの管理権限が必要です。 delete: summary: BOTを削除 responses: "204": description: |- No Content 削除しました。 "403": description: Forbidden "404": description: Not Found operationId: deleteBot tags: - bot description: |- 指定したBOTを削除します。 対象のBOTの管理権限が必要です。 patch: summary: BOT情報を変更 responses: "204": description: |- No Content 変更しました。 "400": description: Bad Request "403": description: Forbidden "404": description: Not Found operationId: editBot description: |- 指定したBOTの情報を変更します。 対象のBOTの管理権限が必要です。 BOT開発者UUIDを変更した場合は、変更先ユーザーにBOT管理権限が移譲され、自分自身は権限を失います。 tags: - bot requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchBotRequest" description: "" "/bots/{botId}/actions/activate": parameters: - $ref: "#/components/parameters/botIdInPath" post: summary: BOTをアクティベート responses: "202": description: Accepted "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 operationId: activateBot tags: - bot description: |- 指定したBOTを有効化します。 対象のBOTの管理権限が必要です。 "/bots/{botId}/actions/inactivate": parameters: - $ref: "#/components/parameters/botIdInPath" post: summary: BOTをインアクティベート responses: "204": description: |- No Content BOTがインアクティベートされました。 "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 tags: - bot operationId: inactivateBot description: 指定したBOTを無効化します。対象のBOTの管理権限が必要です。 "/bots/{botId}/actions/reissue": parameters: - $ref: "#/components/parameters/botIdInPath" post: summary: BOTのトークンを再発行 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/BotTokens" "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 operationId: reissueBot tags: - bot description: |- 指定したBOTの現在の各種トークンを無効化し、再発行を行います。 対象のBOTの管理権限が必要です。 "/bots/{botId}/logs": parameters: - $ref: "#/components/parameters/botIdInPath" get: summary: BOTのイベントログを取得 tags: - bot responses: "200": description: OK content: application/json: schema: type: array description: イベントログの配列 items: $ref: "#/components/schemas/BotEventLog" "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 operationId: getBotLogs parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" description: |- 指定したBOTのイベントログを取得します。 対象のBOTの管理権限が必要です。 "/bots/{botId}/actions/join": parameters: - $ref: "#/components/parameters/botIdInPath" post: summary: BOTをチャンネルに参加させる responses: "204": description: |- No Content BOTを参加させました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 description: |- 指定したBOTを指定したチャンネルに参加させます。 チャンネルに参加したBOTは、そのチャンネルの各種イベントを受け取るようになります。 対象のBOTの管理権限が必要です。 operationId: letBotJoinChannel tags: - bot requestBody: content: application/json: schema: $ref: "#/components/schemas/PostBotActionJoinRequest" "/bots/{botId}/actions/leave": parameters: - $ref: "#/components/parameters/botIdInPath" post: summary: BOTをチャンネルから退出させる responses: "204": description: |- No Content BOTを退出させました。 "400": description: Bad Request "403": description: Forbidden "404": description: |- Not Found BOTが見つかりません。 tags: - bot operationId: letBotLeaveChannel requestBody: content: application/json: schema: $ref: "#/components/schemas/PostBotActionLeaveRequest" description: |- 指定したBOTを指定したチャンネルから退出させます。 対象のBOTの管理権限が必要です。 "/channels/{channelId}/bots": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネル参加中のBOTのリストを取得 tags: - bot - channel responses: "200": description: OK content: application/json: schema: type: array description: BOTの配列 items: $ref: "#/components/schemas/BotUser" "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelBots description: 指定したチャンネルに参加しているBOTのリストを取得します。 /webrtc/authenticate: post: summary: Skyway用認証API responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/WebRTCAuthenticateResult" "400": description: Bad Request "503": description: |- Service Unavailable WebRTCは現在機能を停止しています description: Skyway WebRTC用の認証API operationId: postWebRTCAuthenticate tags: - webrtc requestBody: content: application/json: schema: $ref: "#/components/schemas/PostWebRTCAuthenticateRequest" "/channels/{channelId}": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネル情報を取得 tags: - channel responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Channel" "404": description: Not Found operationId: getChannel description: 指定したチャンネルの情報を取得します。 patch: summary: チャンネル情報を変更 responses: "204": description: No Content "400": description: Bad Request "403": description: Forbidden "404": description: Not Found "409": description: |- Conflict 変更後の名前のチャンネルが既に存在しています。 operationId: editChannel tags: - channel requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchChannelRequest" description: |- 指定したチャンネルの情報を変更します。 変更には権限が必要です。 ルートチャンネルに移動させる場合は、`parent`に`00000000-0000-0000-0000-000000000000`を指定してください。 /webrtc/state: get: summary: WebRTC状態を取得 tags: - webrtc responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/WebRTCUserStates" operationId: getWebRTCState description: 現在のWebRTC状態を取得します。 /clip-folders: post: summary: クリップフォルダを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/ClipFolder" "400": description: Bad Request operationId: createClipFolder tags: - clip requestBody: content: application/json: schema: $ref: "#/components/schemas/PostClipFolderRequest" description: |- クリップフォルダを作成します。 既にあるフォルダと同名のフォルダを作成することは可能です。 get: summary: クリップフォルダのリストを取得 responses: "200": description: OK content: application/json: schema: type: array description: クリップフォルダの配列 items: $ref: "#/components/schemas/ClipFolder" tags: - clip operationId: getClipFolders parameters: [] description: 自身が所有するクリップフォルダのリストを取得します。 "/clip-folders/{folderId}": parameters: - $ref: "#/components/parameters/folderIdInPath" get: summary: クリップフォルダ情報を取得 tags: - clip responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ClipFolder" "404": description: |- Not Found クリップフォルダが見つかりません。 operationId: getClipFolder description: 指定したクリップフォルダの情報を取得します。 delete: summary: クリップフォルダを削除 responses: "204": description: |- No Content 削除しました。 "404": description: |- Not Found クリップフォルダが見つかりません。 operationId: deleteClipFolder tags: - clip description: 指定したクリップフォルダを削除します。 patch: summary: クリップフォルダ情報を編集 responses: "204": description: |- No Content 編集しました。 "400": description: Bad Request "404": description: Not Found operationId: editClipFolder tags: - clip requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchClipFolderRequest" description: 指定したクリップフォルダの情報を編集します。 "/clip-folders/{folderId}/messages": parameters: - $ref: "#/components/parameters/folderIdInPath" post: summary: メッセージをクリップフォルダに追加 responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ClippedMessage" "400": description: Bad Request "404": description: |- Not Found クリップフォルダが見つかりません。 "409": description: |- Conflict 既に追加されています。 operationId: clipMessage tags: - clip requestBody: content: application/json: schema: $ref: "#/components/schemas/PostClipFolderMessageRequest" description: 指定したメッセージを指定したクリップフォルダに追加します。 get: summary: フォルダ内のクリップのリストを取得 responses: "200": description: OK content: application/json: schema: type: array description: クリップの配列 items: $ref: "#/components/schemas/ClippedMessage" "404": description: |- Not Found クリップフォルダが見つかりません。 operationId: getClips parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/orderInQuery" tags: - clip description: |- 指定したフォルダ内のクリップのリストを取得します。 `order`を指定しない場合、クリップした日時の新しい順で返されます。 "/clip-folders/{folderId}/messages/{messageId}": parameters: - $ref: "#/components/parameters/folderIdInPath" - $ref: "#/components/parameters/messageIdInPath" delete: summary: メッセージをクリップフォルダから除外 responses: "204": description: |- No Content 外しました。 "404": description: |- Not Found クリップフォルダが見つかりません。 operationId: unclipMessage description: |- 指定したフォルダから指定したメッセージのクリップを除外します。 既に外されているメッセージを指定した場合は204を返します。 tags: - clip "/webhooks/{webhookId}/messages": parameters: - $ref: "#/components/parameters/webhookIdInPath" get: summary: Webhookの投稿メッセージのリストを取得 tags: - webhook operationId: getWebhookMessages responses: "200": description: OK content: application/json: schema: type: array description: メッセージの配列 items: $ref: "#/components/schemas/Message" headers: X-TRAQ-MORE: $ref: "#/components/headers/X-TRAQ-MORE" "400": description: Bad Request "404": description: |- Not Found Webhookが見つかりません。 parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/sinceInQuery" - $ref: "#/components/parameters/untilInQuery" - $ref: "#/components/parameters/inclusiveInQuery" - $ref: "#/components/parameters/orderInQuery" description: 指定されたWebhookが投稿したメッセージのリストを返します。 "/webhooks/:webhookID/messages/:messageID": parameters: - $ref: "#/components/parameters/webhookIdInPath" - $ref: "#/components/parameters/messageIdInPath" delete: summary: Webhookの投稿メッセージを削除 tags: - webhook operationId: DeleteWebhookMessage responses: "204": description: |- No Content 正常に削除できました。 "403": description: |- Forbidden メッセージを削除する権限がありません。 "404": description: |- Not Found webhookまたはメッセージが見つかりません "/channels/{channelId}/events": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: チャンネルイベントのリストを取得 tags: - channel responses: "200": description: OK content: application/json: schema: type: array description: チャンネルイベントの配列 items: $ref: "#/components/schemas/ChannelEvent" headers: X-TRAQ-MORE: $ref: "#/components/headers/X-TRAQ-MORE" "400": description: Bad Request "404": description: |- Not Found チャンネルが見つかりません。 operationId: getChannelEvents parameters: - $ref: "#/components/parameters/limitInQuery" - $ref: "#/components/parameters/offsetInQuery" - $ref: "#/components/parameters/sinceInQuery" - $ref: "#/components/parameters/untilInQuery" - $ref: "#/components/parameters/inclusiveInQuery" - $ref: "#/components/parameters/orderInQuery" description: 指定したチャンネルのイベントリストを取得します。 /stamp-palettes: get: summary: スタンプパレットのリストを取得 tags: - stamp responses: "200": description: OK content: application/json: schema: type: array description: スタンプパレットの配列 items: $ref: "#/components/schemas/StampPalette" operationId: getStampPalettes description: 自身が所有しているスタンプパレットのリストを取得します。 post: summary: スタンプパレットを作成 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/StampPalette" "400": description: Bad Request tags: - stamp description: スタンプパレットを作成します。 operationId: createStampPalette requestBody: content: application/json: schema: $ref: "#/components/schemas/PostStampPaletteRequest" "/stamp-palettes/{paletteId}": parameters: - $ref: "#/components/parameters/paletteIdInPath" get: summary: スタンプパレットを取得 tags: - stamp responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/StampPalette" "404": description: Not Found operationId: getStampPalette description: 指定したスタンプパレットの情報を取得します。 delete: summary: スタンプパレットを削除 responses: "204": description: |- No Content 削除しました。 "403": description: |- Forbidden 対象のスタンプパレットを削除する権限がありません。 "404": description: Not Found operationId: deleteStampPalette description: |- 指定したスタンプパレットを削除します。 対象のスタンプパレットの管理権限が必要です。 tags: - stamp patch: summary: スタンプパレットを編集 responses: "204": description: |- No Content 変更しました。 "400": description: Bad Request "403": description: |- Forbidden 対象のスタンプパレットを編集する権限がありません。 "404": description: Not Found operationId: editStampPalette tags: - stamp requestBody: content: application/json: schema: $ref: "#/components/schemas/PatchStampPaletteRequest" description: |- 指定したスタンプパレットを編集します。 リクエストのスタンプの配列の順番は保存されて変更されます。 対象のスタンプパレットの管理権限が必要です。 /activity/onlines: get: summary: オンラインユーザーリストを取得 tags: - activity responses: "200": description: OK content: application/json: schema: type: array description: ユーザーのUUID配列 items: type: string operationId: getOnlineUsers description: 現在オンラインな(SSEまたはWSが接続中)ユーザーのUUIDのリストを返します。 "/stamps/{stampId}/image": parameters: - $ref: "#/components/parameters/stampIdInPath" get: summary: スタンプ画像を取得 tags: - stamp responses: "200": description: OK content: image/png: schema: type: string format: binary image/gif: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/svg+xml: schema: type: string "404": description: Not Found operationId: getStampImage description: 指定したIDのスタンプ画像を返します。 put: summary: スタンプ画像を変更 operationId: changeStampImage responses: "204": description: No Content "400": description: Bad Request "404": description: Not Found "413": description: Request Entity Too Large tags: - stamp description: 指定したスタンプの画像を変更します。 requestBody: content: multipart/form-data: schema: type: object format: binary properties: file: type: string format: binary description: "スタンプ画像(1MBまでのpng, jpeg, gif)" required: - file description: "" "/users/me/unread/{channelId}": parameters: - $ref: "#/components/parameters/channelIdInPath" delete: summary: チャンネルを既読にする operationId: readChannel responses: "204": description: |- No Content 既読にしました。 description: 自分が未読のチャンネルを既読にします。 tags: - me - notification "/groups/{groupId}/admins/{userId}": parameters: - $ref: "#/components/parameters/groupIdInPath" - $ref: "#/components/parameters/userIdInPath" delete: summary: グループ管理者を削除 responses: "204": description: |- No Content 指定したユーザーがユーザーグループ管理者から削除されました。 "400": description: Bad Request "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 tags: - group operationId: removeUserGroupAdmin description: |- 指定したユーザーグループから指定した管理者を削除します。 対象のユーザーグループの管理者権限が必要です。 グループから管理者が存在しなくなる場合は400エラーを返します。 "/groups/{groupId}/admins": parameters: - $ref: "#/components/parameters/groupIdInPath" post: summary: グループ管理者を追加 responses: "204": description: |- No Content 追加されました。 "400": description: Bad Request "403": description: |- Forbidden ユーザーグループを操作する権限がありません。 "404": description: |- Not Found ユーザーグループが見つかりません。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUserGroupAdminRequest" description: "" tags: - group operationId: addUserGroupAdmin description: |- 指定したグループに管理者を追加します。 対象のユーザーグループの管理者権限が必要です。 get: summary: グループ管理者を取得 tags: - group responses: "200": description: OK content: application/json: schema: type: array description: ユーザーグループ管理者のUUIDの配列 items: type: string format: uuid "404": description: |- Not Found ユーザーグループが見つかりません。 operationId: getUserGroupAdmins description: 指定したグループの管理者のリストを取得します。 /oauth2/token: post: tags: - oauth2 operationId: postOAuth2Token description: OAuth2 トークンエンドポイント requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/PostOAuth2Token" responses: "200": description: トークンが正常に発行されました。 content: application/json: schema: $ref: "#/components/schemas/OAuth2Token" "400": description: トークン発行に失敗しました。 "403": description: トークン発行に失敗しました。 summary: OAuth2 トークンエンドポイント /oauth2/authorize/decide: post: tags: - oauth2 operationId: postOAuth2AuthorizeDecide description: OAuth2 認可承諾 requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/OAuth2Decide" responses: "302": description: RedirectURIに結果をリダイレクトします。 "400": description: リクエストが不正です。 "403": description: リクエストが許可されていません。 summary: OAuth2 認可承諾API /oauth2/authorize: get: tags: - oauth2 operationId: getOAuth2Authorize description: OAuth2 認可エンドポイント parameters: - name: response_type in: query schema: $ref: "#/components/schemas/OAuth2ResponseType" - name: client_id in: query required: true schema: type: string - name: redirect_uri in: query schema: type: string - name: scope in: query schema: type: string - name: state in: query schema: type: string - name: code_challenge in: query schema: type: string - name: code_challenge_method in: query schema: type: string - name: nonce in: query schema: type: string - name: prompt in: query schema: $ref: "#/components/schemas/OAuth2Prompt" responses: "302": description: 結果に応じてリダイレクトします。 "400": description: リクエストが不正です。 "403": description: リクエストが許可されていません。 summary: OAuth2 認可エンドポイント post: tags: - oauth2 operationId: postOAuth2Authorize description: OAuth2 認可エンドポイント requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/OAuth2Authorization" responses: "302": description: 結果に応じてリダイレクトします。 "400": description: リクエストが不正です。 "403": description: リクエストが許可されていません。 summary: OAuth2 認可エンドポイント /oauth2/revoke: post: summary: OAuth2 トークン無効化エンドポイント operationId: revokeOAuth2Token responses: "200": description: OK description: OAuth2 トークン無効化エンドポイント tags: - oauth2 requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/OAuth2Revoke" /users/me/ex-accounts: get: summary: 外部ログインアカウント一覧を取得 tags: - authentication - me responses: "200": description: OK content: application/json: schema: type: array description: 紐付けられているアカウントの配列 items: $ref: "#/components/schemas/ExternalProviderUser" operationId: getMyExternalAccounts description: 自分に紐付けられている外部ログインアカウント一覧を取得します。 parameters: [] /users/me/ex-accounts/link: post: summary: 外部ログインアカウントを紐付ける operationId: linkExternalAccount responses: "302": description: |- Found 外部サービスの認証画面に遷移します。 "400": description: Bad Request tags: - authentication - me description: |- 自分に外部ログインアカウントを紐付けます。 指定した`providerName`がサーバー側で有効である必要があります。 リクエストが受理された場合、外部サービスの認証画面にリダイレクトされ、認証される必要があります。 requestBody: content: application/json: schema: $ref: "#/components/schemas/PostLinkExternalAccount" /users/me/ex-accounts/unlink: post: summary: 外部ログインアカウントの紐付けを解除 operationId: unlinkExternalAccount responses: "204": description: |- No Content 紐付けを解除しました。 "400": description: Bad Request description: 自分に紐付けられている外部ログインアカウントの紐付けを解除します。 tags: - authentication - me requestBody: content: application/json: schema: $ref: "#/components/schemas/PostUnlinkExternalAccount" "/users/{userId}/dm-channel": parameters: - schema: type: string format: uuid name: userId in: path required: true get: summary: DMチャンネル情報を取得 tags: - user - channel responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/DMChannel" "404": description: | Not Found ユーザーが見つかりません。 operationId: getUserDMChannel description: |- 指定したユーザーとのダイレクトメッセージチャンネルの情報を返します。 ダイレクトメッセージチャンネルが存在しなかった場合、自動的に作成されます。 "/messages/{messageId}/clips": parameters: - $ref: "#/components/parameters/messageIdInPath" get: summary: 自分のクリップを取得 tags: - message - clip responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/MessageClip" "404": description: | Not Found operationId: getMessageClips description: 対象のメッセージの自分のクリップの一覧を返します。 /ogp: get: summary: OGP情報を取得 tags: - ogp responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Ogp" "400": description: 指定したURLが不正です。 operationId: getOgp description: | 指定されたURLのOGP情報を取得します。 指定されたURLに対するOGP情報が見つからなかった場合、typeがemptyに設定された空のOGP情報を返します。 parameters: - schema: type: string in: query required: true name: url description: OGPを取得したいURL /ogp/cache: delete: summary: OGP情報のキャッシュを削除 tags: - ogp responses: "204": description: No Content "400": description: 指定したURLが不正です。 operationId: deleteOgpCache description: 指定されたURLのOGP情報のキャッシュを削除します。 parameters: - schema: type: string in: query required: true name: url description: OGPのキャッシュを削除したいURL /users/me/settings: get: summary: ユーザー設定を取得 description: ユーザー設定を取得します。 operationId: getUserSettings tags: - me responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/UserSettings" /users/me/settings/notify-citation: get: summary: メッセージ引用通知の設定情報を取得 description: メッセージ引用通知の設定情報を変更します。 operationId: getMyNotifyCitation tags: - me responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/GetNotifyCitation" put: summary: メッセージ引用通知の設定情報を変更 responses: "204": description: 変更できました。 "400": description: Bad Request requestBody: content: application/json: schema: $ref: "#/components/schemas/PutNotifyCitationRequest" description: "" tags: - me operationId: changeMyNotifyCitation description: メッセージ引用通知の設定情報を変更します "/channels/{channelId}/path": parameters: - $ref: "#/components/parameters/channelIdInPath" get: summary: 指定したチャンネルパスを取得 tags: - channel responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ChannelPath" "404": description: Not Found operationId: getChannelPath /qall/endpoints: get: summary: LiveKitエンドポイントを取得 description: > 接続可能なLiveKitエンドポイントを取得します。 operationId: getQallEndpoints tags: - qall responses: "200": description: 成功 - LiveKitエンドポイントの取得 content: application/json: schema: $ref: "#/components/schemas/qallEndpointResponse" "404": description: Not Found "500": description: Internal Server Error /qall/token: get: summary: LiveKitトークンを取得 description: > 指定したルームに参加するためのLiveKitトークンを取得します。 operationId: getLiveKitToken tags: - qall parameters: - $ref: "#/components/parameters/roomIdInQuery" - $ref: "#/components/parameters/isWebinarInQuery" responses: "200": description: 成功 - LiveKitトークンを返します content: application/json: schema: $ref: "#/components/schemas/qallTokenResponse" "400": description: Bad Request "401": description: Unauthorized "500": description: Internal Server Error /qall/rooms: get: summary: ルームと参加者の一覧を取得 description: > 現在存在する(またはアクティブな)ルームと、そのルームに所属している参加者情報を取得します。 operationId: getRooms tags: - qall responses: "200": description: 成功 - ルームと参加者一覧の取得 content: application/json: schema: $ref: "#/components/schemas/qallRoomsListResponse" "404": description: Not Found "500": description: Internal Server Error /qall/rooms/{roomId}/metadata: get: summary: ルームのメタデータを取得 description: > ルームのメタデータを取得します。 operationId: getRoomMetadata tags: - qall parameters: - $ref: "#/components/parameters/roomIdInPath" responses: "200": description: 成功 - ルームのメタデータを取得 content: application/json: schema: $ref: "#/components/schemas/qallMetadataResponse" "404": description: Not Found "500": description: Internal Server Error patch: summary: ルームのメタデータを更新 description: > ルームのメタデータを更新します。 operationId: updateRoomMetadata tags: - qall parameters: - $ref: "#/components/parameters/roomIdInPath" requestBody: description: ルームのメタデータ required: true content: application/json: schema: $ref: "#/components/schemas/qallMetadataRequest" responses: "200": description: 成功 - ルームのメタデータを更新 "400": description: Bad Request "401": description: Unauthorized "500": description: Internal Server Error /qall/rooms/{roomId}/participants: patch: summary: ルームでの発言権限を変更 description: > ルーム内の参加者の発言権限を変更します。 operationId: changeParticipantRole tags: - qall parameters: - $ref: "#/components/parameters/roomIdInPath" requestBody: description: 発言権限を変更する参加者の情報 required: true content: application/json: schema: type: array items: $ref: "#/components/schemas/qallParticipantRequest" responses: "200": description: 成功 - 発言権限を変更(部分的成功含む) content: application/json: schema: $ref: "#/components/schemas/qallParticipantResponse" "400": description: Bad Request "401": description: Unauthorized "500": description: Internal Server Error /qall/webhook: post: summary: LiveKit Webhook受信 description: > LiveKit側で設定したWebhookから呼び出されるエンドポイントです。 参加者の入室・退出などのイベントを受け取り、サーバ内で処理を行います。 operationId: liveKitWebhook tags: - qall requestBody: required: true content: application/webhook+json: schema: type: object description: LiveKit Webhook イベントのペイロード responses: "200": description: Webhookを正常に受信 "400": description: Invalid payload "500": description: Internal Server Error /qall/soundboard: get: summary: サウンドボード用の音声一覧を取得 description: > DBに保存されたサウンドボード情報を取得します。 各アイテムには soundId, soundName, stampId が含まれます。 operationId: getSoundboardList tags: - qall responses: "200": description: サウンド一覧の取得に成功 content: application/json: schema: $ref: "#/components/schemas/soundboardListResponse" "500": description: サーバエラー post: summary: サウンドボード用の短い音声ファイルをアップロード description: > 15秒程度の短い音声ファイルを multipart/form-data で送信し、S3(互換ストレージ)にアップロードします。 クライアントは「soundName」というフィールドを送信し、それをDBに保存して関連付けを行います。 また、サーバ側で soundId を自動生成し、S3のファイル名に使用します。 operationId: postSoundboard tags: - qall requestBody: required: true content: multipart/form-data: schema: $ref: "#/components/schemas/soundboardUploadRequest" responses: "200": description: アップロード成功 content: application/json: schema: $ref: "#/components/schemas/soundboardUploadResponse" "400": description: ファイルが提供されていない等 "500": description: アップロードエラーなどのサーバエラー /qall/soundboard/play: post: summary: アップロード済み音声を LiveKit ルームで再生 description: > S3上にある音声ファイルの署名付きURLを生成し、 Ingressを介して指定ルームに音声を流します。 該当ルームに参加しているユーザであれば再生可能とします。 operationId: postSoundboardPlay tags: - qall requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/soundboardPlayRequest" responses: "200": description: Ingressの作成に成功 content: application/json: schema: $ref: "#/components/schemas/soundboardPlayResponse" "400": description: パラメータ不足 or ユーザが部屋にいない等 "401": description: 認証エラー "500": description: Ingress作成失敗などのサーバエラー components: securitySchemes: cookieAuth: type: apiKey in: cookie name: r_session OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: /api/v3/oauth2/authorize tokenUrl: /api/v3/oauth2/token scopes: read: 読み取りスコープ write: 書き込みスコープ manage_bot: bot関連読み書きスコープ bearerAuth: type: http scheme: bearer schemas: Message: title: Message type: object description: メッセージ properties: id: type: string format: uuid description: メッセージUUID userId: type: string description: 投稿者UUID format: uuid channelId: type: string description: チャンネルUUID format: uuid content: type: string description: メッセージ本文 createdAt: type: string format: date-time description: 投稿日時 updatedAt: type: string format: date-time description: 編集日時 pinned: description: ピン留めされているかどうか type: boolean stamps: type: array description: 押されているスタンプの配列 items: $ref: "#/components/schemas/MessageStamp" threadId: type: string format: uuid description: スレッドUUID nullable: true nonce: type: string pattern: "^[a-zA-Z0-9_-]{1,32}$" description: メッセージ送信の確認に使うことができる任意の識別子(投稿でのみ使用可) required: - id - userId - channelId - content - createdAt - updatedAt - pinned - stamps - threadId MessageStamp: title: MessageStamp type: object description: メッセージに押されたスタンプ properties: userId: type: string format: uuid description: ユーザーUUID stampId: type: string format: uuid description: スタンプUUID count: type: integer description: スタンプ数 format: int32 createdAt: type: string description: スタンプが最初に押された日時 format: date-time updatedAt: type: string format: date-time description: スタンプが最後に押された日時 required: - userId - stampId - count - createdAt - updatedAt StampStats: title: StampStats type: object description: スタンプ統計情報 properties: count: type: integer format: int64 description: スタンプ使用総数(同じユーザによって同じメッセージに貼られたものは複数カウントしない) totalCount: type: integer format: int64 description: スタンプ使用総数(全てカウント) required: - count - totalCount Pin: title: Pin type: object description: ピン情報(メッセージ本体付き) properties: userId: type: string format: uuid description: ピン留めしたユーザーUUID pinnedAt: type: string format: date-time description: ピン留めされた日時 message: $ref: "#/components/schemas/Message" required: - userId - pinnedAt - message Channel: title: Channel type: object description: チャンネル properties: id: type: string description: チャンネルUUID format: uuid parentId: type: string format: uuid description: 親チャンネルUUID nullable: true archived: type: boolean description: チャンネルがアーカイブされているかどうか force: type: boolean description: 強制通知チャンネルかどうか topic: type: string description: チャンネルトピック name: type: string description: チャンネル名 pattern: "^[a-zA-Z0-9-_]{1,20}$" children: type: array description: 子チャンネルのUUID配列 items: type: string format: uuid required: - id - parentId - archived - force - topic - name - children PostMessageRequest: title: PostMessageRequest type: object description: メッセージ投稿リクエスト properties: content: type: string description: メッセージ本文 minLength: 1 maxLength: 10000 embed: type: boolean default: false description: メンション・チャンネルリンクを自動埋め込みするか nonce: type: string pattern: "^[a-zA-Z0-9_-]{1,32}$" description: メッセージ送信の確認に使うことができる任意の識別子(投稿でのみ使用可) required: - content ChannelStats: title: ChannelStats type: object description: チャンネル統計情報 properties: totalMessageCount: type: integer format: int64 description: チャンネルの総投稿メッセージ数(削除されたものも含む) stamps: type: array description: チャンネル上のスタンプ統計情報 items: $ref: "#/components/schemas/ChannelStatsStamp" users: type: array description: チャンネル上のユーザー統計情報 items: $ref: "#/components/schemas/ChannelStatsUser" datetime: type: string format: date-time description: 統計情報日時 required: - totalMessageCount - stamps - users - datetime ChannelStatsStamp: title: ChannelStatsStamp type: object description: チャンネル上の特定スタンプ統計情報 properties: id: type: string format: uuid description: スタンプID count: type: integer format: int64 description: スタンプ数(同一メッセージ上のものは複数カウントしない) total: type: integer format: int64 description: スタンプ数(同一メッセージ上のものも複数カウントする) required: - id - count - total ChannelStatsUser: title: ChannelStatsUser type: object description: チャンネル上の特定ユーザー統計情報 properties: id: type: string format: uuid description: ユーザーID messageCount: type: integer format: int64 description: メッセージ数 required: - id - messageCount ChannelTopic: title: ChannelTopic type: object description: チャンネルトピック properties: topic: type: string description: トピック required: - topic PutChannelTopicRequest: title: PutChannelTopicRequest type: object description: チャンネルトピック編集リクエスト properties: topic: type: string description: トピック maxLength: 200 required: - topic ChannelViewer: title: ChannelViewer type: object description: チャンネル閲覧者情報 properties: userId: type: string format: uuid description: ユーザーUUID state: $ref: "#/components/schemas/ChannelViewState" updatedAt: type: string format: date-time description: 更新日時 required: - userId - state - updatedAt MyChannelViewState: title: MyChannelViewState type: object description: 自身のチャンネル閲覧状態 properties: key: type: string description: WSセッションの識別子 channelId: type: string format: uuid description: チャンネルUUID state: $ref: "#/components/schemas/ChannelViewState" required: - key - channelId - state ChannelViewState: type: string title: ChannelViewState enum: - none - stale_viewing - monitoring - editing x-enum-descriptions: - バックグラウンド表示中 - 古いメッセージを表示中 - メッセージ表示中 - メッセージ入力中 description: 閲覧状態 PostFileRequest: title: PostFileRequest type: object description: ファイルアップロードリクエスト properties: file: type: string format: binary description: ファイル本体 channelId: type: string format: uuid description: アップロード先チャンネルUUID required: - file - channelId ThumbnailType: title: ThumbnailType type: string default: image description: | サムネイル画像のタイプ enum: - image - waveform x-enum-descriptions: - アップロード画像に対して生成される通常のサムネイル - アップロード音声ファイルに対して生成される波形画像 ThumbnailInfo: type: object properties: type: $ref: "#/components/schemas/ThumbnailType" mime: type: string description: MIMEタイプ width: type: integer format: int32 description: サムネイル幅 height: type: integer format: int32 description: サムネイル高さ required: - type - mime FileInfo: title: FileInfo type: object description: ファイル情報 properties: id: type: string description: ファイルUUID format: uuid name: type: string description: ファイル名 mime: type: string description: MIMEタイプ size: type: integer format: int64 description: ファイルサイズ md5: type: string description: MD5ハッシュ isAnimatedImage: type: boolean description: アニメーション画像かどうか createdAt: type: string format: date-time description: アップロード日時 thumbnails: type: array items: $ref: "#/components/schemas/ThumbnailInfo" thumbnail: deprecated: true type: object description: |- サムネイル情報 サムネイルが存在しない場合はnullになります Deprecated: thumbnailsを参照してください nullable: true properties: mime: deprecated: true type: string description: MIMEタイプ width: deprecated: true type: integer format: int32 description: サムネイル幅 height: deprecated: true type: integer description: サムネイル高さ format: int32 required: - mime channelId: type: string description: 属しているチャンネルUUID nullable: true format: uuid uploaderId: type: string description: アップロード者UUID format: uuid nullable: true required: - id - name - mime - size - md5 - isAnimatedImage - createdAt - thumbnail - channelId - uploaderId - thumbnails PostMessageStampRequest: title: PostMessageStampRequest type: object description: スタンプを押すリクエスト properties: count: type: integer description: 押す数 format: int32 minimum: 1 maximum: 100 required: - count Stamp: title: Stamp type: object description: スタンプ情報 properties: id: type: string format: uuid description: スタンプUUID name: type: string description: スタンプ名 pattern: "^[a-zA-Z0-9_-]{1,32}$" creatorId: type: string description: 作成者UUID format: uuid createdAt: type: string description: 作成日時 format: date-time updatedAt: type: string description: 更新日時 format: date-time fileId: type: string format: uuid description: ファイルUUID isUnicode: type: boolean description: Unicode絵文字か required: - id - name - creatorId - createdAt - updatedAt - fileId - isUnicode PostStampRequest: title: PostStampRequest type: object description: スタンプ作成リクエスト properties: name: type: string description: スタンプ名 pattern: "^[a-zA-Z0-9_-]{1,32}$" file: type: string format: binary description: "スタンプ画像(1MBまでのpng, jpeg, gif)" required: - name - file StampHistoryEntry: title: StampHistoryEntry type: object description: スタンプ履歴の1項目 properties: stampId: type: string format: uuid description: スタンプUUID datetime: type: string description: 使用日時 format: date-time required: - stampId - datetime StampWithThumbnail: title: StampWithThumbnail type: object description: スタンプ情報とサムネイルの有無 properties: id: type: string format: uuid description: スタンプUUID name: type: string description: スタンプ名 pattern: "^[a-zA-Z0-9_-]{1,32}$" creatorId: type: string description: 作成者UUID format: uuid createdAt: type: string description: 作成日時 format: date-time updatedAt: type: string description: 更新日時 format: date-time fileId: type: string format: uuid description: ファイルUUID isUnicode: type: boolean description: Unicode絵文字か hasThumbnail: type: boolean description: サムネイルの有無 required: - id - name - creatorId - createdAt - updatedAt - fileId - isUnicode - hasThumbnail User: title: User type: object description: ユーザー情報 properties: id: type: string description: ユーザーUUID format: uuid name: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" description: ユーザー名 displayName: type: string description: ユーザー表示名 minLength: 0 maxLength: 32 iconFileId: type: string format: uuid description: アイコンファイルUUID bot: type: boolean description: BOTかどうか state: $ref: "#/components/schemas/UserAccountState" updatedAt: type: string description: 更新日時 format: date-time required: - id - name - displayName - iconFileId - bot - state - updatedAt UserDetail: title: UserDetail type: object description: ユーザー詳細情報 properties: id: type: string format: uuid description: ユーザーUUID state: $ref: "#/components/schemas/UserAccountState" bot: type: boolean description: BOTかどうか iconFileId: type: string format: uuid description: アイコンファイルUUID displayName: type: string description: ユーザー表示名 minLength: 0 maxLength: 32 name: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" description: ユーザー名 twitterId: type: string description: Twitter ID pattern: "^[a-zA-Z0-9_]{0,15}$" lastOnline: type: string description: 最終オンライン日時 format: date-time nullable: true updatedAt: type: string format: date-time description: 更新日時 tags: type: array description: タグリスト items: $ref: "#/components/schemas/UserTag" groups: type: array description: 所属グループのUUIDの配列 items: type: string format: uuid bio: type: string description: 自己紹介(biography) maxLength: 1000 homeChannel: type: string format: uuid description: ホームチャンネル nullable: true required: - id - state - bot - iconFileId - displayName - name - twitterId - lastOnline - updatedAt - tags - groups - bio - homeChannel UserTag: title: UserTag type: object description: ユーザータグ properties: tagId: type: string description: タグUUID format: uuid tag: type: string description: タグ文字列 isLocked: type: boolean description: タグがロックされているか createdAt: type: string description: タグ付与日時 format: date-time updatedAt: type: string format: date-time description: タグ更新日時 required: - tagId - tag - isLocked - createdAt - updatedAt UserAccountState: type: integer title: UserAccountState description: |- ユーザーアカウント状態 0: 停止 1: 有効 2: 一時停止 enum: - 0 - 1 - 2 x-enum-varnames: - deactivated - active - suspended x-enum-descriptions: - 停止 - 有効 - 一時停止 format: int32 UserGroup: title: UserGroup type: object description: ユーザーグループ properties: id: type: string format: uuid description: グループUUID name: type: string description: グループ名 description: type: string description: グループ説明 type: type: string description: グループタイプ icon: type: string format: uuid description: グループアイコンUUID members: type: array description: グループメンバーの配列 items: $ref: "#/components/schemas/UserGroupMember" createdAt: type: string description: 作成日時 format: date-time updatedAt: type: string format: date-time description: 更新日時 admins: type: array description: グループ管理者のUUIDの配列 items: type: string format: uuid required: - id - name - description - type - icon - members - createdAt - updatedAt - admins UserGroupMember: title: UserGroupMember type: object description: ユーザーグループメンバー properties: id: type: string format: uuid description: ユーザーUUID role: type: string description: ユーザーの役割 maxLength: 100 required: - id - role UserGroupMembers: title: UserGroupMembers type: array description: ユーザーグループメンバーの配列 items: $ref: "#/components/schemas/UserGroupMember" UserStats: title: UserStats type: object description: ユーザー統計情報 properties: totalMessageCount: type: integer format: int64 description: ユーザーの総投稿メッセージ数(削除されたものも含む) stamps: type: array description: ユーザーのスタンプ統計情報 items: $ref: "#/components/schemas/UserStatsStamp" datetime: type: string format: date-time description: 統計情報日時 required: - totalMessageCount - stamps - datetime UserStatsStamp: title: UserStatsStamp type: object description: ユーザーの特定スタンプ統計情報 properties: id: type: string format: uuid description: スタンプID count: type: integer format: int64 description: スタンプ数(同一メッセージ上のものは複数カウントしない) total: type: integer format: int64 description: スタンプ数(同一メッセージ上のものも複数カウントする) required: - id - count - total PatchGroupMemberRequest: title: PatchGroupMemberRequest type: object description: ユーザーグループメンバー編集リクエスト properties: role: type: string description: ユーザーの役割 maxLength: 100 required: - role PatchUserGroupRequest: title: PatchUserGroupRequest type: object description: ユーザーグループ編集リクエスト properties: name: type: string description: グループ名 description: type: string description: グループ説明 maxLength: 100 type: type: string description: グループタイプ PostUserGroupRequest: title: PostUserGroupRequest type: object description: ユーザーグループ作成リクエスト properties: name: type: string description: グループ名 description: type: string description: 説明 maxLength: 100 type: type: string description: グループタイプ required: - name - description - type MyUserDetail: title: MyUserDetail type: object description: 自分のユーザー詳細情報 properties: id: type: string description: ユーザーUUID format: uuid bio: type: string description: 自己紹介(biography) maxLength: 1000 groups: type: array description: 所属グループのUUIDの配列 items: type: string format: uuid tags: type: array description: タグリスト items: $ref: "#/components/schemas/UserTag" updatedAt: type: string format: date-time description: 更新日時 lastOnline: type: string description: 最終オンライン日時 format: date-time nullable: true twitterId: type: string description: Twitter ID pattern: "^[a-zA-Z0-9_]{1,15}$" name: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" description: ユーザー名 displayName: type: string description: ユーザー表示名 minLength: 0 maxLength: 32 iconFileId: type: string format: uuid description: アイコンファイルUUID bot: type: boolean description: BOTかどうか state: $ref: "#/components/schemas/UserAccountState" permissions: type: array description: 所有している権限の配列 items: $ref: "#/components/schemas/UserPermission" homeChannel: type: string format: uuid description: ホームチャンネル nullable: true required: - id - bio - groups - tags - updatedAt - lastOnline - twitterId - name - displayName - iconFileId - bot - state - permissions - homeChannel OIDCUserInfo: title: OIDCUserInfo type: object description: 自分のユーザー詳細情報 properties: sub: type: string description: ユーザーUUID format: uuid name: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" description: ユーザー名 preferred_username: type: string pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" description: ユーザー名 picture: type: string description: アイコン画像URL updated_at: type: integer format: int64 description: 更新日時 traq: $ref: "#/components/schemas/OIDCTraqUserInfo" required: - sub - name - preferred_username - picture OIDCTraqUserInfo: title: OIDCTraqUserInfo type: object description: traQ特有のユーザー詳細情報 properties: bio: type: string description: 自己紹介(biography) maxLength: 1000 groups: type: array description: 所属グループのUUIDの配列 items: type: string format: uuid tags: type: array description: タグリスト items: $ref: "#/components/schemas/UserTag" last_online: type: string description: 最終オンライン日時 format: date-time nullable: true twitter_id: type: string description: Twitter ID pattern: "^[a-zA-Z0-9_]{1,15}$" display_name: type: string description: ユーザー表示名 minLength: 0 maxLength: 32 icon_file_id: type: string format: uuid description: アイコンファイルUUID bot: type: boolean description: BOTかどうか state: $ref: "#/components/schemas/UserAccountState" permissions: type: array description: 所有している権限の配列 items: $ref: "#/components/schemas/UserPermission" home_channel: type: string format: uuid description: ホームチャンネル nullable: true required: - bio - groups - tags - updated_at - last_online - twitter_id - display_name - icon_file_id - bot - state - permissions - home_channel PatchChannelSubscribersRequest: title: PatchChannelSubscribersRequest type: object description: チャンネル購読者編集リクエスト properties: "on": type: array description: 通知をオンにするユーザーのUUID配列 items: type: string format: uuid "off": type: array description: 通知をオフにするユーザーのUUID配列 items: type: string format: uuid PutChannelSubscribersRequest: title: PutChannelSubscribersRequest type: object description: 通知をオンにするユーザーのUUID配列 properties: "on": type: array format: uuid description: 通知をオンにするユーザーのUUID配列 items: type: string format: uuid required: - "on" UserSubscribeState: title: UserSubscribeState type: object description: ユーザーのチャンネル購読状態 properties: channelId: type: string description: チャンネルUUID format: uuid level: $ref: "#/components/schemas/ChannelSubscribeLevel" required: - channelId - level ChannelSubscribeLevel: type: integer title: ChannelSubscribeLevel description: |- チャンネル購読レベル 0:無し 1:未読管理 2:未読管理+通知 enum: - 0 - 1 - 2 x-enum-varnames: - none - subscribed - notified x-enum-descriptions: - 無し - 未読管理 - 未読管理+通知 PutChannelSubscribeLevelRequest: title: PutChannelSubscribeLevelRequest type: object description: チャンネル購読レベル変更リクエスト properties: level: $ref: "#/components/schemas/ChannelSubscribeLevel" required: - level Webhook: title: Webhook type: object description: Webhook情報 properties: id: type: string format: uuid description: WebhookUUID botUserId: type: string description: WebhookユーザーUUID format: uuid displayName: type: string description: Webhookユーザー表示名 description: type: string description: 説明 secure: type: boolean description: セキュアWebhookかどうか channelId: type: string description: デフォルトの投稿先チャンネルUUID format: uuid ownerId: type: string description: オーナーUUID format: uuid createdAt: type: string description: 作成日時 format: date-time updatedAt: type: string description: 更新日時 format: date-time required: - id - botUserId - displayName - description - secure - channelId - ownerId - createdAt - updatedAt PatchWebhookRequest: title: PatchWebhookRequest type: object description: Webhook情報変更リクエスト properties: name: type: string description: Webhookユーザー表示名 minLength: 1 maxLength: 32 description: type: string description: 説明 maxLength: 1000 channelId: type: string format: uuid description: デフォルトの投稿先チャンネルUUID secret: type: string description: Webhookシークレット maxLength: 50 ownerId: type: string format: uuid description: 移譲先のユーザーUUID PostWebhookRequest: title: PostWebhookRequest type: object description: Webhook作成リクエスト properties: name: type: string description: Webhookユーザーの表示名 minLength: 1 maxLength: 32 description: type: string description: 説明 minLength: 1 maxLength: 1000 channelId: type: string format: uuid description: デフォルトの投稿先チャンネルUUID secret: type: string description: Webhookシークレット maxLength: 50 required: - name - description - channelId - secret PutUserIconRequest: title: PutUserIconRequest type: object description: アイコン画像変更リクエスト properties: file: type: string format: binary description: "アイコン画像(2MB,`Config.Imaging.MaxPixels`(default: 2560*1600)までのpng, jpeg, gif)" required: - file PutMyPasswordRequest: title: PutMyPasswordRequest type: object description: パスワード変更リクエスト properties: password: type: string pattern: "^[\\x20-\\x7E]{10,32}$" description: 現在のパスワード newPassword: type: string pattern: "^[\\x20-\\x7E]{10,32}$" description: 新しいパスワード required: - password - newPassword PatchMeRequest: title: PatchMeRequest type: object description: 自分のユーザー情報変更リクエスト properties: displayName: type: string minLength: 0 maxLength: 32 description: 新しい表示名 twitterId: type: string pattern: "^[a-zA-Z0-9_]{1,15}$" description: TwitterID bio: type: string description: 自己紹介(biography) maxLength: 1000 homeChannel: type: string description: |- ホームチャンネルのUUID `00000000-0000-0000-0000-000000000000`を指定すると、ホームチャンネルが`null`に設定されます format: uuid PutUserPasswordRequest: title: PutUserPasswordRequest type: object properties: newPassword: type: string description: 新しいパスワード pattern: "^[\\x20-\\x7E]{10,32}$" required: - newPassword description: ユーザーパスワード変更リクエスト PatchUserRequest: title: PatchUserRequest type: object description: ユーザー情報編集リクエスト properties: displayName: type: string description: 新しい表示名 maxLength: 32 twitterId: type: string description: TwitterID pattern: "^[a-zA-Z0-9_]{1,15}$" state: $ref: "#/components/schemas/UserAccountState" role: type: string description: ユーザーロール PostMyFCMDeviceRequest: title: PostMyFCMDeviceRequest type: object description: FCMデバイス登録リクエスト properties: token: type: string description: FCMのデバイストークン example: "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1" required: - token PostUserRequest: title: PostUserRequest type: object description: ユーザー登録リクエスト properties: name: type: string description: ユーザー名 pattern: "^[a-zA-Z0-9_-]{1,32}$" password: type: string pattern: "^[\\x20-\\x7E]{10,32}$" description: パスワード required: - name PostChannelRequest: title: PostChannelRequest type: object description: チャンネル作成リクエスト properties: name: type: string pattern: "^[a-zA-Z0-9-_]{1,20}$" description: チャンネル名 parent: type: string format: uuid description: |- 親チャンネルのUUID ルートに作成する場合はnullを指定 nullable: true required: - name - parent PostUserTagRequest: title: PostUserTagRequest type: object description: ユーザータグ追加リクエスト properties: tag: type: string description: タグ文字列 minLength: 1 maxLength: 30 required: - tag PatchUserTagRequest: title: PatchUserTagRequest type: object description: ユーザーのタグの編集リクエスト properties: isLocked: type: boolean description: タグのロック状態 required: - isLocked Tag: title: Tag type: object description: タグ情報 properties: id: type: string description: タグUUID format: uuid tag: type: string description: タグ文字列 minLength: 1 maxLength: 30 users: type: array description: タグがつけられているユーザーのUUID配列 items: type: string format: uuid required: - id - tag - users PostStarRequest: title: PostStarRequest type: object description: スター追加リクエスト properties: channelId: type: string description: チャンネルUUID format: uuid required: - channelId UnreadChannel: title: UnreadChannel type: object description: 未読チャンネル情報 properties: channelId: type: string description: チャンネルUUID format: uuid count: type: integer description: 未読メッセージ数 format: int32 noticeable: type: boolean description: 自分宛てメッセージが含まれているかどうか since: type: string format: date-time description: チャンネルの最古の未読メッセージの日時 updatedAt: type: string description: チャンネルの最新の未読メッセージの日時 format: date-time oldestMessageId: type: string description: そのチャンネルの未読の中で最も古いメッセージのid format: uuid required: - channelId - count - noticeable - since - until - updatedAt - oldestMessageId PostLoginRequest: title: PostLoginRequest type: object description: ログインリクエスト properties: name: type: string description: ユーザー名 pattern: "^([a-zA-Z0-9_-]{1,32}|Webhook#[a-zA-Z0-9_-]{22})$" password: type: string description: パスワード pattern: "^[\\x20-\\x7E]{10,32}$" required: - name - password LoginSession: title: LoginSession type: object description: ログインセッション情報 properties: id: type: string description: セッションUUID format: uuid issuedAt: type: string description: 発行日時 format: date-time required: - id - issuedAt ActiveOAuth2Token: title: ActiveOAuth2Token type: object description: 有効なOAuth2トークン情報 properties: id: type: string description: トークンUUID format: uuid clientId: type: string description: OAuth2クライアントUUID scopes: type: array description: スコープ items: $ref: "#/components/schemas/OAuth2Scope" issuedAt: type: string description: 発行日時 format: date-time required: - id - clientId - scopes - issuedAt OAuth2Scope: type: string title: OAuth2Scope description: OAuth2スコープ enum: - openid - profile - read - write - manage_bot OAuth2Client: title: OAuth2Client type: object description: OAuth2クライアント情報 properties: id: type: string description: クライアントUUID name: type: string description: クライアント名 minLength: 1 maxLength: 32 description: type: string description: 説明 maxLength: 1000 developerId: type: string description: クライアント開発者UUID format: uuid scopes: type: array description: 要求スコープの配列 items: $ref: "#/components/schemas/OAuth2Scope" confidential: type: boolean description: confidential client なら true, public client なら false required: - id - name - description - developerId - scopes - confidential PatchClientRequest: title: PatchClientRequest type: object description: OAuth2クライアント情報変更リクエスト properties: name: type: string description: クライアント名 minLength: 1 maxLength: 32 description: type: string description: 説明 maxLength: 1000 callbackUrl: type: string description: コールバックURL format: uri developerId: type: string description: クライアント開発者UUID format: uuid confidential: type: boolean description: confidential client なら true, public client なら false OAuth2ClientDetail: title: OAuth2ClientDetail description: OAuth2クライアント詳細情報 type: object properties: id: type: string description: クライアントUUID developerId: type: string description: クライアント開発者UUID format: uuid description: type: string description: 説明 maxLength: 1000 name: type: string description: クライアント名 minLength: 1 maxLength: 32 scopes: type: array description: 要求スコープの配列 items: $ref: "#/components/schemas/OAuth2Scope" callbackUrl: type: string description: コールバックURL format: uri secret: type: string description: クライアントシークレット confidential: type: boolean description: confidential client なら true, public client なら false required: - id - developerId - description - name - scopes - callbackUrl - secret - confidential PostClientRequest: title: PostClientRequest type: object description: OAuth2クライアント作成リクエスト properties: name: type: string maxLength: 32 minLength: 1 description: クライアント名 callbackUrl: type: string description: コールバックURL format: uri scopes: type: array description: 要求スコープの配列 items: $ref: "#/components/schemas/OAuth2Scope" description: type: string description: 説明 maxLength: 1000 confidential: type: boolean description: confidential client なら true, public cleint なら false default: false required: - name - callbackUrl - scopes - description BotMode: type: string title: BotMode description: |- BOT動作モード HTTP: HTTP Mode WebSocket: WebSocket Mode enum: - HTTP - WebSocket x-enum-varnames: - HTTP - WebSocket x-enum-descriptions: - HTTP Mode - WebSocket Mode BotState: type: integer title: BotState description: |- BOT状態 0: 停止 1: 有効 2: 一時停止 enum: - 0 - 1 - 2 x-enum-varnames: - deactivated - active - suspended x-enum-descriptions: - 停止 - 有効 - 一時停止 format: int32 Bot: title: Bot type: object description: BOT情報 properties: id: type: string description: BOT UUID format: uuid botUserId: type: string description: BOTユーザーUUID format: uuid description: type: string description: 説明 maxLength: 1000 developerId: type: string description: BOT開発者UUID format: uuid subscribeEvents: type: array description: BOTが購読しているイベントの配列 items: type: string mode: $ref: "#/components/schemas/BotMode" state: $ref: "#/components/schemas/BotState" createdAt: type: string description: 作成日時 format: date-time updatedAt: type: string description: 更新日時 format: date-time required: - id - botUserId - description - developerId - subscribeEvents - mode - state - createdAt - updatedAt PatchBotRequest: title: PatchBotRequest type: object description: BOT情報変更リクエスト properties: displayName: type: string maxLength: 32 description: BOTユーザー表示名 description: type: string description: BOTの説明 maxLength: 1000 privileged: type: boolean description: 特権 mode: $ref: "#/components/schemas/BotMode" endpoint: type: string description: BOTサーバーエンドポイント format: uri developerId: type: string description: 移譲先の開発者UUID format: uuid subscribeEvents: type: array description: 購読するイベント uniqueItems: false items: type: string bio: type: string description: 自己紹介(biography) maxLength: 1000 BotTokens: title: BotTokens type: object description: BOTのトークン情報 properties: verificationToken: type: string description: Verification Token accessToken: type: string description: BOTアクセストークン required: - verificationToken - accessToken BotDetail: title: BotDetail type: object description: BOT詳細情報 properties: id: type: string format: uuid description: BOT UUID updatedAt: type: string description: 更新日時 format: date-time createdAt: type: string description: 作成日時 format: date-time mode: $ref: "#/components/schemas/BotMode" state: $ref: "#/components/schemas/BotState" subscribeEvents: type: array description: BOTが購読しているイベントの配列 items: type: string developerId: type: string description: BOT開発者UUID format: uuid description: type: string description: 説明 maxLength: 1000 botUserId: type: string description: BOTユーザーUUID format: uuid tokens: $ref: "#/components/schemas/BotTokens" endpoint: type: string description: BOTサーバーエンドポイント format: uri privileged: type: boolean description: 特権BOTかどうか channels: type: array description: BOTが参加しているチャンネルのUUID配列 items: type: string format: uuid required: - id - updatedAt - createdAt - mode - state - subscribeEvents - developerId - description - botUserId - tokens - endpoint - privileged - channels - bio BotEventLog: title: BotEventLog type: object description: BOTイベントログ properties: botId: type: string description: BOT UUID format: uuid requestId: type: string format: uuid description: リクエストUUID event: type: string description: イベントタイプ result: $ref: "#/components/schemas/BotEventResult" code: type: integer description: ステータスコード format: int32 datetime: type: string format: date-time description: イベント日時 required: - botId - requestId - event - code - datetime BotEventResult: title: BotEventResult type: string description: イベント配送結果 enum: - ok - ng - ne - dp x-enum-varnames: - OK - NG - NetworkError - Dropped x-enum-descriptions: - 成功 - 失敗(不正なレスポンス) - ネットワークエラー - (WebSocket Modeのみ)接続しているセッションが存在しなかった PostBotRequest: title: PostBotRequest type: object description: BOT作成リクエスト properties: name: type: string description: |- BOTユーザーID 自動的に接頭辞"BOT_"が付与されます maxLength: 16 pattern: "^[a-zA-Z0-9_-]{1,16}$" displayName: type: string maxLength: 32 description: BOTユーザー表示名 description: type: string description: BOTの説明 maxLength: 1000 mode: $ref: "#/components/schemas/BotMode" endpoint: type: string description: |- BOTサーバーエンドポイント BOT動作モードがHTTPの場合必須です format: uri required: - name - displayName - description - mode PostBotActionJoinRequest: title: PostBotActionJoinRequest type: object properties: channelId: type: string description: チャンネルUUID format: uuid required: - channelId description: BOTチャンネル参加リクエスト PostBotActionLeaveRequest: title: PostBotActionLeaveRequest type: object properties: channelId: type: string description: チャンネルUUID format: uuid required: - channelId description: BOTチャンネル退出リクエスト BotUser: title: BotUser type: object description: BOTユーザー対 properties: id: type: string description: BOT UUID format: uuid botUserId: type: string description: BOTユーザーUUID format: uuid required: - id - botUserId PostWebRTCAuthenticateRequest: title: PostWebRTCAuthenticateRequest type: object description: skyway用認証リクエスト properties: peerId: type: string description: ピアID required: - peerId WebRTCAuthenticateResult: title: WebRTCAuthenticateResult type: object description: skyway用認証リクエストリザルト properties: peerId: type: string description: ピアID ttl: type: integer description: TTL format: int32 timestamp: type: integer format: int64 description: タイムスタンプ authToken: type: string description: 認証トークン required: - peerId - ttl - timestamp - authToken PatchChannelRequest: title: PatchChannelRequest type: object description: チャンネル情報変更リクエスト properties: name: type: string description: チャンネル名 pattern: "^[a-zA-Z0-9-_]{1,20}$" archived: type: boolean description: アーカイブされているかどうか force: type: boolean description: 強制通知チャンネルかどうか parent: type: string description: 親チャンネルUUID format: uuid WebRTCUserStates: title: WebRTCUserStates type: array description: WebRTC状態の配列 items: $ref: "#/components/schemas/WebRTCUserState" ClipFolder: title: ClipFolder type: object description: クリップフォルダ情報 properties: id: type: string description: フォルダUUID format: uuid name: type: string description: フォルダ名 minLength: 1 maxLength: 30 createdAt: type: string description: 作成日時 format: date-time ownerId: type: string format: uuid description: フォルダ所有者UUID description: type: string description: 説明 maxLength: 1000 required: - id - name - createdAt - ownerId - description PatchClipFolderRequest: title: PatchClipFolderRequest type: object description: クリップフォルダ情報編集リクエスト properties: name: type: string minLength: 1 maxLength: 30 description: フォルダ名 description: type: string description: 説明 maxLength: 1000 PostClipFolderRequest: title: PostClipFolderRequest type: object description: クリップフォルダ作成リクエスト properties: name: type: string description: フォルダ名 minLength: 1 maxLength: 30 description: type: string description: 説明 maxLength: 1000 required: - name - description PostClipFolderMessageRequest: title: PostClipFolderMessageRequest type: object properties: messageId: type: string description: メッセージUUID format: uuid required: - messageId description: クリップ追加リクエスト ClippedMessage: title: ClippedMessage type: object description: クリップされたメッセージ properties: message: $ref: "#/components/schemas/Message" clippedAt: type: string description: クリップした日時 format: date-time required: - folderId - message - clippedAt ChannelEvent: title: ChannelEvent type: object description: チャンネルイベント properties: type: type: string enum: - TopicChanged - SubscribersChanged - PinAdded - PinRemoved - NameChanged - ParentChanged - VisibilityChanged - ForcedNotificationChanged - ChildCreated description: イベントタイプ datetime: type: string description: イベント日時 format: date-time detail: description: イベント内容 oneOf: - $ref: "#/components/schemas/TopicChangedEvent" - $ref: "#/components/schemas/SubscribersChangedEvent" - $ref: "#/components/schemas/PinAddedEvent" - $ref: "#/components/schemas/PinRemovedEvent" - $ref: "#/components/schemas/NameChangedEvent" - $ref: "#/components/schemas/ParentChangedEvent" - $ref: "#/components/schemas/VisibilityChangedEvent" - $ref: "#/components/schemas/ForcedNotificationChangedEvent" - $ref: "#/components/schemas/ChildCreatedEvent" required: - type - datetime - detail TopicChangedEvent: title: TopicChangedEvent type: object description: トピック変更イベント properties: userId: type: string description: 変更者UUID format: uuid before: type: string description: 変更前トピック after: type: string description: 変更後トピック required: - userId - before - after SubscribersChangedEvent: title: SubscribersChangedEvent type: object description: 購読者変更イベント properties: userId: type: string description: 変更者UUID format: uuid "on": type: array description: オンにされたユーザーのUUID配列 items: type: string format: uuid "off": type: array description: オフにされたユーザーのUUID配列 items: type: string format: uuid required: - userId - "on" - "off" PinAddedEvent: title: PinAddedEvent type: object description: ピン追加イベント properties: userId: type: string description: 変更者UUID format: uuid messageId: type: string description: メッセージUUID format: uuid required: - userId - messageId PinRemovedEvent: title: PinRemovedEvent type: object description: ピン削除イベント properties: userId: type: string description: 変更者UUID format: uuid messageId: type: string description: メッセージUUID format: uuid required: - userId - messageId NameChangedEvent: title: NameChangedEvent type: object description: チャンネル名変更イベント properties: userId: type: string description: 変更者UUID format: uuid before: type: string description: 変更前チャンネル名 after: type: string description: 変更後チャンネル名 required: - userId - before - after ParentChangedEvent: title: ParentChangedEvent type: object description: 親チャンネル変更イベント properties: userId: type: string description: 変更者UUID format: uuid before: type: string description: 変更前親チャンネルUUID format: uuid after: type: string description: 変更後親チャンネルUUID format: uuid required: - userId - before - after VisibilityChangedEvent: title: VisibilityChangedEvent type: object description: チャンネル可視状態変更イベント properties: userId: type: string description: 変更者UUID format: uuid visibility: type: boolean description: 変更後可視状態 required: - userId - visibility ForcedNotificationChangedEvent: title: ForcedNotificationChangedEvent type: object description: チャンネル強制通知状態変更イベント properties: userId: type: string description: 変更者UUID format: uuid force: type: boolean description: 変更後強制通知状態 required: - userId - force ChildCreatedEvent: title: ChildCreatedEvent type: object description: 子チャンネル作成イベント properties: userId: type: string description: 作成者UUID format: uuid channelId: type: string description: チャンネルUUID format: uuid required: - userId - channelId QallRoomStateChangedEvent: title: QallRoomStateChangedEvent type: object description: Qallのルーム状態が変更された properties: roomStates: type: array items: type: object properties: roomId: type: string format: uuid description: ルームのID participants: type: array items: type: object properties: identity: type: string description: ユーザーID_RandomUUID name: type: string description: 表示名 joinedAt: type: string format: date-time description: 参加した時刻 attributes: type: object additionalProperties: type: string description: ユーザーに関連付けられたカスタム属性 canPublish: type: boolean description: 発言権限 required: - identity - name - joinedAt - canPublish isWebinar: type: boolean description: ウェビナールームかどうか metadata: type: string description: ルームに関連付けられたカスタム属性 required: - roomId - participants - isWebinar required: - roomStates QallSoundboardItemCreatedEvent: title: QallSoundboardItemCreatedEvent type: object description: Qallのサウンドボードアイテムが作成された properties: soundId: type: string format: uuid description: 作成されたサウンドボードアイテムのId name: type: string description: 作成されたサウンドボードアイテムの名前 creatorId: type: string format: uuid description: 作成者のId required: - soundId - name - creatorId QallSoundboardItemDeletedEvent: title: QallSoundboardItemDeletedEvent type: object description: Qallのサウンドボードアイテムが削除された properties: soundId: type: string format: uuid description: 削除されたサウンドボードアイテムのId required: - soundId StampPalette: title: StampPalette type: object description: スタンプパレット情報 properties: id: type: string description: スタンプパレットUUID format: uuid name: type: string description: パレット名 maxLength: 30 stamps: type: array description: パレット内のスタンプのUUID配列 uniqueItems: true maxItems: 200 items: type: string format: uuid creatorId: type: string description: 作成者UUID format: uuid createdAt: type: string format: date-time description: パレット作成日時 updatedAt: type: string description: パレット更新日時 format: date-time description: type: string description: パレット説明 maxLength: 1000 required: - id - name - stamps - creatorId - createdAt - updatedAt - description PostStampPaletteRequest: title: PostStampPaletteRequest type: object description: スタンプパレット作成リクエスト properties: stamps: type: array description: パレット内のスタンプのUUID配列 uniqueItems: true maxItems: 200 items: type: string format: uuid name: type: string description: パレット名 maxLength: 30 description: type: string description: 説明 maxLength: 1000 required: - stamps - name - description PatchStampPaletteRequest: title: PatchStampPaletteRequest type: object description: スタンプパレット情報変更リクエスト properties: name: type: string description: パレット名 minLength: 1 maxLength: 30 description: type: string description: 説明 maxLength: 1000 stamps: type: array description: パレット内のスタンプUUIDの配列 uniqueItems: true maxItems: 200 items: type: string format: uuid PatchStampRequest: title: PatchStampRequest type: object description: スタンプ情報変更リクエスト properties: name: type: string pattern: "^[a-zA-Z0-9_-]{1,32}$" description: スタンプ名 creatorId: type: string description: 作成者UUID format: uuid MessagePin: title: MessagePin type: object description: ピン情報 properties: userId: type: string format: uuid description: ピン留めしたユーザーUUID pinnedAt: type: string format: date-time description: ピン留めされた日時 required: - userId - pinnedAt PostUserGroupAdminRequest: title: PostUserGroupAdmin type: object description: グループ管理者追加リクエスト properties: id: type: string format: uuid description: 追加するユーザーのUUID required: - id ChannelList: title: ChannelList type: object description: GET /channelsレスポンス properties: public: type: array description: パブリックチャンネルの配列 items: $ref: "#/components/schemas/Channel" dm: type: array description: ダイレクトメッセージチャンネルの配列 items: $ref: "#/components/schemas/DMChannel" required: - public DMChannel: title: DMChannel type: object description: ダイレクトメッセージチャンネル properties: id: type: string format: uuid description: チャンネルUUID userId: type: string description: 送信先相手のUUID format: uuid required: - id - userId ActivityTimelineMessage: title: ActivityTimelineMessage type: object description: Timelineアクテビティ用メッセージ properties: id: type: string format: uuid description: メッセージUUID userId: type: string description: 投稿者UUID format: uuid channelId: type: string description: チャンネルUUID format: uuid content: type: string description: メッセージ本文 createdAt: type: string format: date-time description: 投稿日時 updatedAt: type: string format: date-time description: 編集日時 required: - id - userId - channelId - content - createdAt - updatedAt OAuth2Decide: type: object required: - submit properties: submit: type: string description: '承諾する場合は"approve"' PostOAuth2Token: type: object required: - grant_type properties: grant_type: type: string code: type: string redirect_uri: type: string client_id: type: string code_verifier: type: string username: type: string password: type: string format: password scope: type: string refresh_token: type: string client_secret: type: string OAuth2Token: type: object required: - access_token - token_type properties: access_token: type: string token_type: type: string expires_in: type: integer refresh_token: type: string scope: type: string id_token: type: string OAuth2Authorization: type: object required: - client_id properties: response_type: $ref: "#/components/schemas/OAuth2ResponseType" client_id: type: string redirect_uri: type: string scope: type: string state: type: string code_challenge: type: string code_challenge_method: type: string nonce: type: string prompt: $ref: "#/components/schemas/OAuth2Prompt" OAuth2Prompt: type: string enum: - none OAuth2ResponseType: type: string enum: - code - token - none OAuth2Revoke: title: OAuth2Revoke type: object required: - token description: POST /oauth2/revoke 用リクエストボディ properties: token: type: string description: 無効化するOAuth2トークンまたはOAuth2リフレッシュトークン ExternalProviderUser: title: ExternalProviderUser type: object description: 外部認証アカウントユーザー properties: providerName: type: string description: 外部サービス名 linkedAt: type: string description: 紐付けた日時 externalName: type: string description: 外部アカウント名 required: - providerName - linkedAt - externalName PostLinkExternalAccount: title: PostLinkExternalAccount type: object description: POST /users/me/ex-accounts/link 用リクエストボディ properties: providerName: type: string description: 外部サービス名 required: - providerName PostUnlinkExternalAccount: title: PostUnlinkExternalAccount type: object description: POST /users/me/ex-accounts/unlink 用リクエストボディ properties: providerName: type: string description: 外部サービス名 required: - providerName UserPermission: type: string title: UserPermission description: ユーザー権限 enum: - get_webhook - create_webhook - edit_webhook - delete_webhook - access_others_webhook - get_bot - create_bot - edit_bot - delete_bot - access_others_bot - bot_action_join_channel - bot_action_leave_channel - create_channel - get_channel - edit_channel - delete_channel - change_parent_channel - edit_channel_topic - get_channel_star - edit_channel_star - get_my_tokens - revoke_my_token - get_clients - create_client - edit_my_client - delete_my_client - manage_others_client - upload_file - download_file - delete_file - get_message - post_message - edit_message - delete_message - report_message - get_message_reports - create_message_pin - delete_message_pin - get_channel_subscription - edit_channel_subscription - connect_notification_stream - register_fcm_device - get_stamp - create_stamp - edit_stamp - edit_stamp_created_by_others - delete_stamp - delete_my_stamp - add_message_stamp - remove_message_stamp - get_my_stamp_history - get_my_stamp_recommendations - get_stamp_palette - create_stamp_palette - edit_stamp_palette - delete_stamp_palette - get_user - register_user - get_me - get_oidc_userinfo - edit_me - change_my_icon - change_my_password - edit_other_users - get_user_qr_code - get_user_tag - edit_user_tag - get_user_group - create_user_group - create_special_user_group - edit_user_group - delete_user_group - edit_others_user_group - web_rtc - get_my_sessions - delete_my_sessions - get_my_external_account - edit_my_external_account - get_unread - delete_unread - get_clip_folder - create_clip_folder - edit_clip_folder - delete_clip_folder x-enum-varnames: - GetWebhook - CreateWebhook - EditWebhook - DeleteWebhook - AccessOthersWebhook - GetBot - CreateBot - EditBot - DeleteBot - AccessOthersBot - BotActionJoinChannel - BotActionLeaveChannel - CreateChannel - GetChannel - EditChannel - DeleteChannel - ChangeParentChannel - EditChannelTopic - GetChannelStar - EditChannelStar - GetMyTokens - RevokeMyToken - GetClients - CreateClient - EditMyClient - DeleteMyClient - ManageOthersClient - UploadFile - DownloadFile - DeleteFile - GetMessage - PostMessage - EditMessage - DeleteMessage - ReportMessage - GetMessageReports - CreateMessagePin - DeleteMessagePin - GetChannelSubscription - EditChannelSubscription - ConnectNotificationStream - RegisterFCMDevice - GetStamp - CreateStamp - EditStamp - EditStampCreatedByOthers - DeleteStamp - DeleteMyStamp - AddMessageStamp - RemoveMessageStamp - GetMyStampHistory - GetMyStampRecommendations - GetStampPalette - CreateStampPalette - EditStampPalette - DeleteStampPalette - GetUser - RegisterUser - GetMe - GetOIDCUserInfo - EditMe - ChangeMyIcon - ChangeMyPassword - EditOtherUsers - GetUserQRCode - GetUserTag - EditUserTag - GetUserGroup - CreateUserGroup - CreateSpecialUserGroup - EditUserGroup - DeleteUserGroup - AllUserGroupsAdmin - WebRTC - GetMySessions - DeleteMySessions - GetMyExternalAccount - EditMyExternalAccount - GetUnread - DeleteUnread - GetClipFolder - CreateClipFolder - EditClipFolder - DeleteClipFolder Version: title: Version type: object description: バージョン・サーバーフラグ情報 properties: revision: type: string description: traQ(サーバー)リビジョン version: type: string description: traQ(サーバー)バージョン flags: type: object required: - externalLogin - signUpAllowed properties: externalLogin: type: array description: 有効な外部ログインプロバイダ items: type: string signUpAllowed: type: boolean description: ユーザーが自身で新規登録(POST /api/v3/users)可能か required: - revision - version - flags WebRTCUserState: title: WebRTCUserState type: object description: WebRTC状態 properties: userId: type: string description: ユーザーUUID format: uuid channelId: type: string description: チャンネルUUID format: uuid sessions: type: array description: セッションの配列 items: $ref: "#/components/schemas/Session" required: - userId - channelId - sessions MessageClip: title: MessageClip type: object properties: folderId: type: string format: uuid description: クリップされているフォルダのID clippedAt: type: string format: date-time description: クリップされた日時 required: - folderId - clippedAt description: メッセージクリップ Ogp: title: Ogp type: object x-tags: - ogp description: OGPの情報 properties: type: type: string title: type: string url: type: string images: type: array items: $ref: "#/components/schemas/OgpMedia" description: type: string videos: type: array items: $ref: "#/components/schemas/OgpMedia" required: - type - title - url - images - description - videos OgpMedia: title: OgpMedia type: object x-tags: - ogp description: OGPに含まれる画像の情報 properties: url: type: string secureUrl: type: string nullable: true type: type: string nullable: true width: type: integer nullable: true height: type: integer nullable: true required: - url - secureUrl - type - width - height x-examples: {} GetNotifyCitation: title: GetNotifyCitation type: object description: メッセージ引用通知の設定情報 properties: notifyCitation: type: boolean required: - notifyCitation UserSettings: title: UserSettings type: object description: ユーザー設定の情報 properties: id: type: string description: ユーザーUUID format: uuid notifyCitation: type: boolean description: メッセージ引用通知の設定情報 required: - id - notifyCitation PutNotifyCitationRequest: title: PutNotifyCitationRequest type: object description: メッセージ引用通知設定リクエスト properties: notifyCitation: type: boolean description: メッセージ引用通知の設定情報 required: - notifyCitation ChannelPath: title: ChannelPath type: object description: チャンネルパス properties: path: type: string description: チャンネルパス pattern: '^(\/[a-zA-Z0-9-_]+)+$' required: - path example: path: "/general" Session: type: object properties: state: type: string description: 状態 sessionId: type: string description: セッションID required: - state - sessionId soundboardPlayResponse: type: object properties: ingressId: type: string description: 作成された Ingress のID url: type: string description: 作成された Ingress のストリームURL等 streamKey: type: string description: RTMP配信の場合のstream key required: - ingressId qallEndpointResponse: type: object properties: endpoint: type: string description: LiveKitのエンドポイント required: - endpoint soundboardListResponse: type: array items: $ref: "#/components/schemas/soundboardItem" soundboardItem: type: object properties: soundId: type: string description: サーバが発行したサウンドID soundName: type: string description: ユーザが指定した表示用のサウンド名 stampId: type: string description: 任意のスタンプID等、サウンドに紐づく拡張情報 creatorId: type: string description: 作成者のユーザID required: - soundId - soundName - stampId - creatorId soundboardUploadResponse: type: object properties: soundId: type: string description: 登録されたサウンドID (ファイル名) required: - soundId qallRoomsListResponse: type: array items: $ref: "#/components/schemas/qallRoomWithParticipants" qallTokenResponse: type: object properties: token: type: string description: LiveKit用のJWTトークン required: - token qallRoomWithParticipants: type: object properties: roomId: type: string format: uuid description: ルームのID participants: type: array items: $ref: "#/components/schemas/qallParticipant" isWebinar: type: boolean description: ウェビナールームかどうか metadata: type: string description: ルームに関連付けられたカスタム属性 required: - roomId - participants qallParticipant: description: ルーム内の参加者一覧 type: object properties: identity: type: string description: ユーザーID_RandomUUID name: type: string description: 表示名 joinedAt: type: string format: date-time description: 参加した時刻 attributes: type: object additionalProperties: type: string description: ユーザーに関連付けられたカスタム属性 canPublish: type: boolean description: 発言権限 qallParticipantRequest: type: object properties: users: type: array items: type: object properties: userId: type: string description: ユーザーID canPublish: type: boolean description: 発言権限 required: - users qallMetadataRequest: type: object properties: metadata: type: string description: ルームに関連付けられたカスタム属性 qallMetadataResponse: type: object properties: metadata: type: string description: ルームに関連付けられたカスタム属性 qallParticipantResponse: type: object properties: results: type: array items: type: object properties: participantId: type: string description: 対象参加者ID status: type: string description: "success もしくは error" errorMessage: type: string description: エラーがある場合の詳細 example: results: - participantId: "user1" status: "success" - participantId: "user2" status: "error" errorMessage: "Invalid participant ID" soundboardUploadRequest: type: object properties: audio: type: string format: binary description: アップロードする音声ファイル(20秒以内) soundName: type: string description: ユーザが自由につけるサウンド名 stampId: type: string description: アイコンスタンプID required: - audio - soundName soundboardPlayRequest: type: object properties: soundId: type: string description: サウンドID (DB登録済み) roomName: type: string format: uuid description: 再生させたいルームのUUID required: - soundId - roomName headers: X-TRAQ-MORE: schema: type: boolean description: 指定した範囲に要素がさらに存在するかどうか parameters: paletteIdInPath: name: paletteId in: path required: true description: スタンプパレットUUID schema: type: string format: uuid folderIdInPath: name: folderId in: path required: true description: クリップフォルダUUID schema: type: string format: uuid botIdInPath: name: botId in: path required: true description: BOTUUID schema: type: string format: uuid clientIdInPath: name: clientId in: path required: true description: OAuth2クライアントUUID schema: type: string tokenIdInPath: name: tokenId in: path required: true description: OAuth2トークンUUID schema: type: string format: uuid sessionIdInPath: name: sessionId in: path required: true description: セッションUUID schema: type: string format: uuid redirectInQuery: schema: type: string format: uri description: リダイレクト先 name: redirect in: query tagIdInPath: name: tagId in: path required: true description: タグUUID schema: type: string format: uuid webhookIdInPath: name: webhookId in: path required: true description: WebhookUUID schema: type: string format: uuid groupIdInPath: name: groupId in: path required: true description: ユーザーグループUUID schema: type: string format: uuid userIdInPath: name: userId in: path required: true description: ユーザーUUID schema: type: string format: uuid stampIdInPath: name: stampId in: path required: true description: スタンプUUID schema: type: string format: uuid fileIdInPath: name: fileId in: path required: true description: ファイルUUID schema: type: string format: uuid messageIdInPath: name: messageId in: path required: true description: メッセージUUID schema: type: string format: uuid limitInQuery: in: query name: limit schema: type: integer minimum: 1 maximum: 200 description: 取得する件数 example: 50 offsetInQuery: in: query name: offset schema: type: integer default: 0 description: 取得するオフセット example: 150 sinceInQuery: in: query name: since schema: type: string format: date-time default: "0000-01-01T00:00:00.000000Z" description: 取得する時間範囲の開始日時 example: "2016-10-12T11:00:00.000000Z" untilInQuery: in: query name: until schema: type: string format: date-time description: 取得する時間範囲の終了日時 example: "2016-10-12T11:00:00.0000000Z" inclusiveInQuery: in: query name: inclusive schema: type: boolean default: false description: 範囲の端を含めるかどうか orderInQuery: in: query name: order schema: type: string enum: - asc - desc default: desc description: 昇順か降順か channelIdInPath: name: channelId in: path required: true description: チャンネルUUID schema: type: string format: uuid roomIdInPath: name: roomId in: path required: true description: ルームUUID schema: type: string format: uuid roomIdInQuery: in: query name: roomId schema: type: string format: uuid description: ルームUUID isWebinarInQuery: in: query name: isWebinar schema: type: boolean required: false description: ウェビナールームかどうか(デフォルト false) excludeDeletedMessagesInQuery: in: query name: exclude-deleted-messages schema: type: boolean required: false description: 削除されたメッセージを除外するかどうか(デフォルト false) tags: - name: user description: ユーザーAPI - name: me description: マイユーザーAPI - name: message description: メッセージAPI - name: channel description: チャンネルAPI - name: file description: ファイルAPI - name: user tag description: ユーザータグAPI - name: notification description: 通知API - name: stamp description: スタンプAPI - name: webhook description: traQ Webhook API - name: star description: スターAPI - name: pin description: ピンAPI - name: group description: ユーザーグループAPI - name: public description: 外部公開API - name: authentication description: 認証API - name: activity description: アクテビティAPI - name: oauth2 description: OAuth2に関するAPI - name: bot description: traQ BOT API - name: webrtc description: WebRTC API - name: clip description: クリップAPI - name: ogp description: OGP API - name: qall description: Qall API security: - OAuth2: [] - bearerAuth: []