takosサーバーではfoundation apiを試用して相互に通信します。 takosサーバーはこれらのapiを試用して、メッセージをリアルタイムで共有します。
API は、各サーバー間の HTTPS リクエストを使用して実装されます。これらの HTTPS リクエストは、TLS トランスポート層での公開キー署名と、HTTP 層での HTTP 認証ヘッダー内の公開キー署名を使用して強力に認証されます。
サーバーの実装名とバージョンを取得します。
レート制限: なし 認証: なし
リクエストパラメータまたはリクエスト本文がありません。
状態 | 説明 |
---|---|
200 | 実装バージョン |
{
"version": "1.0.0",
"name": "takos"
}
サーバーの公開鍵を取得します。
サーバーの公開された署名キーを取得します。
レート制限: なし 認証: なし
query
パラメータ | 説明 |
---|---|
expire |
キーの有効期限 |
状態 | 説明 |
---|---|
200 | サーバーの公開鍵 |
{
"key": "PUBLIC_KEY"
}
他のサーバーの公開鍵を取得します。
レート制限: なし 認証: なし
query
パラメータ | 説明 |
---|---|
expires |
キーの有効期限 |
serverName |
サーバー名(domain) |
状態 | 説明 |
---|---|
200 | サーバーの公開鍵 |
{
"key": "PUBLIC_KEY"
}
サーバーによって行われるすべてのHTTPリクエストは、公開鍵署名を使用して認証されます。bodyの署名は、Authorization
ヘッダーに含まれ、X-Takos-Signature
ヘッダーに含まれます。
Authorization
ヘッダーは、公開鍵署名を含むベアラートークンです。
Authorization: X-Takos-Signature sign="<署名>", Expires="<有効期限>, origin="<ドメイン>"
example:
{
"method": "POST",
"path": "path(example)",
"body": "body(example)",
"Content-Type": "application/json",
"Authorization": "X-Takos-Signature sign=\"<署名>\", Expires=\"<有効期限>\", origin=\"<ドメイン>\""
}
Authorization ヘッダーの形式は、 RFC 9110 のセクション 11.4で規定されています。
origin: 送信サーバーのサーバー名 expires: 有効期限 sign: 署名
応答は TLS サーバー証明書によって認証されます。
イベントを送信します。
レート制限: あり 認証: あり
body
パラメータ | 型 | 説明 |
---|---|---|
event |
string |
イベント名 |
eventId |
string |
イベントID |
payload |
object |
イベントデータ |
payload
は、イベントデータを含むオブジェクトです。
レスポンスの内容はありません。 成功かどうかは、HTTP ステータスコードで判断します。
友達リクエストを送信します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
friendId |
string |
友達ID |
友達リクエストをキャンセルします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
friendId |
string |
友達ID |
友達リクエストを受け入れます。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
friendId |
string |
友達ID |
友達を削除します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
friendId |
string |
友達ID |
メッセージを送信します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
messageId |
string |
メッセージID |
roomId |
string |
ルームID |
roomType |
friend or group or publicGroup |
ルームタイプ |
channelId |
string |
チャンネルID |
グループに招待します。 privateのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
inviteUserId |
string |
招待ユーザーID |
グループ招待を受け入れます。 privateのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
グループ招待を削除します。 privateのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string |
グループID |
userId |
string |
ユーザーID |
inviteUserId |
string |
招待ユーザーID |
友達にグループに招待されたことを通知します。 privateのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
inviteUserId |
string |
招待ユーザーID |
グループを退出します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
グループチャンネルを作成/上書きします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
channelId |
string |
チャンネルID |
channelName |
string |
チャンネル名 |
categoryId |
string or undefind |
カテゴリー |
permission |
object[] |
権限 |
object
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
permissions |
string[] |
権限 |
グループチャンネルを削除します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
channelId |
string |
チャンネルID |
グループカテゴリーを作成/上書きします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
categoryId |
string |
カテゴリーID |
categoryName |
string |
カテゴリー名 |
permissions |
object[] |
権限 |
object
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
permission |
string[] |
権限 |
グループカテゴリーを削除します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
categoryId |
string |
カテゴリーID |
グループロールを作成/上書きします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
roleId |
string |
ロールID |
roleName |
string |
ロール名 |
permission |
string[] |
権限 |
color |
string |
カラーコード |
グループロールを削除します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
roleId |
string |
ロールID |
グループロールを割り当てます。 (上書き)
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
roleId |
string[] |
ロールID |
assignUserId |
string |
割り当てユーザーID |
グループのチャンネル/カテゴリーの順番を変更します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
order |
object [] |
順番 |
object
パラメータ | 型 | 説明 |
---|---|---|
id |
string |
ID |
type |
category or channel |
タイプ |
グループに参加リクエストを送信します。 publicGroupのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
グループ参加リクエストを受け入れます。 publicGroupのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
requestUserId |
string |
リクエストユーザーID |
友達にグループ参加リクエストを受け入れたことを通知します。 publicGroupのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
requestUserId |
string |
リクエストユーザーID |
グループ参加リクエストを削除します。 publicGroupのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
requestUserId |
string |
リクエストユーザーID |
グループ参加リクエストをキャンセルします。 publicGroupのみ
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
グループからユーザーをキックします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
kickUserId |
string |
キックユーザーID |
グループからユーザーをBANします。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
banUserId |
string |
BANユーザーID |
グループからユーザーのBANを解除します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
banUserId |
string |
BANユーザーID |
グループのデフォルトチャンネルを変更します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
channelId |
string |
チャンネルID |
グループのオーナーの変更情報を共有します。
payload
パラメータ | 型 | 説明 |
---|---|---|
userId |
string |
ユーザーID |
groupId |
string |
グループID |
ユーザーの追加情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
userId |
string | ユーザーID |
beforeEventId |
string | 前のイベントID |
ユーザーの削除情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
userId |
string | ユーザーID |
beforeEventId |
string | 前のイベントID |
ロールの割り当て情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
roleId |
string[] | ロールID |
userId |
string | 割り当てユーザーID |
beforeEventId |
string | 前のイベントID |
チャンネルの追加情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
channelId |
string | チャンネルID |
category |
string | カテゴリー |
permissions |
{ roleId: string, permissions: string[]}[] | 権限リスト |
beforeEventId |
string | 前のイベントID |
チャンネルの削除情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
channelId |
string | チャンネルID |
beforeEventId |
string | 前のイベントID |
カテゴリーの追加情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
categoryId |
string | カテゴリーID |
permissions |
string[] | 権限リスト |
beforeEventId |
string | 前のイベントID |
カテゴリーの削除情報を共有するイベント。
payload
パラメータ | 型 | 説明 |
---|---|---|
groupId |
string | グループID |
categoryId |
string | カテゴリーID |
beforeEventId |
string | 前のイベントID |
ユーザーのデータを取得します。
レート制限: なし 認証: なし
keys
- icon - ユーザーアイコン
- nickName - ニックネーム
- description - ユーザーの説明
params
パラメータ | 説明 |
---|---|
userId |
ユーザーID |
状態 | 説明 |
---|---|
200 |
{
`key`: `data`,
}
グループのデータを取得します。
レート制限: なし 認証: なし
keys
- icon - グループアイコン
- name - グループ名
- description - グループの説明
- owner - オーナーのユーザーID
- defaultChannel - デフォルトチャンネルID
- beforeEventId: string
- channels - チャンネルとcategoryのリスト
- role - ロールのカラーコード
- order - channel/カテゴリーの順番
- members - メンバーのリスト
- all - すべてのデータ
params
パラメータ | 説明 |
---|---|
groupId |
グループID |
状態 | 説明 |
---|---|
200 |
icon: base64
name: string
description: string
owner: string
defaultChannel: string
beforeEventId: string
channels: {
categories: {
id: string;
name: string;
permissions: {
roleId: string;
permission: string
}[];
}[]
channels: {
category: string;
id: string;
name: string;
permissions: {
roleId: string;
permission: string
}[];
}[]
}
order: string[]
role: { color: string; id: string; name: string; permission: string[] }[]
members: { id: string; role: string[] }[]
type: "private" | "public"
all: {
icon: string;
name: string;
description: string;
owner: string;
defaultChannel: string;
beforeEventId: string;
channels: {
categories: {
id: string;
name: string;
permissions: {
roleId: string;
permission: string[]
}[];
}[]
channels: {
category: string;
id: string;
name: string;
permissions: {
roleId: string;
permissions: string[]
}[];
}[]
}
order: string[]
role: { color: string; id: string; name: string; permission: string[] }[]
members: { id: string; role: string[] }[]
}
{
`key`: `data`,
}
ユーザーの鍵を取得するエンドポイントです。
リクエストはクエリパラメーターにて送信します。
パラメーター | 型 | 説明 |
---|---|---|
userId |
string | ユーザーID。serverKey以外必須。 |
expire |
number | serverKeyのみ |
hash |
string | identityKey と roomKey の場合に必須となるハッシュ値。 |
roomId |
string | roomKey の場合かつGroup に必要なルームID。 |
targetUserId |
string | roomKey の場合に必要な相手のユーザーID。 |
状態 | 説明 |
---|---|
200 | 鍵が正常に取得できた場合 |
{
"key": "data",
"signature": "signature"
}
グループを検索するエンドポイントです。
パラメーター | 型 | 説明 |
---|---|---|
query |
string | キーワード |
limit |
number | 取得する最大数 |
状態 | 説明 |
---|---|
200 | 検索結果 |
{
"groups": string[]
}
サーバーのデータを取得します。
レート制限: なし 認証: なし
items
- name - サーバー名
- description - サーバーの説明
- icon - サーバーアイコン
- version - サーバーバージョン
メッセージのデータを取得します。
レート制限: なし 認証: なし
params
パラメータ | 説明 |
---|---|
messageId |
メッセージID |
状態 | 説明 |
---|---|
200 |
{
message: message.message,
signature: message.sign,
timestamp: message.timestamp,
userName: message.userName,
}