開発者
Welleyで作る
Welley APIを使って、クライアント、スクリプト、コミュニティ向けのツール、連携を作れます。使える操作とスキーマは、最新のSwaggerリファレンスで確認できます。
将来、Welley をオープンソースとして公開する予定です。公開日やライセンスは、まだ発表されていません。
公開APIへのリクエストから始める
APIはHTTPS上で動き、ほとんどの操作はJSONを受け取り、JSONを返します。公開されている情報の読み取りは、アカウントなしでも使えることがあります。
サーバー情報を読み取る
このリクエストは、サーバーの公開メタデータを返します。サーバーのデータは変更しません。
curl --fail --silent --show-error "https://welley.social/api/v1/instance"
Swaggerで操作を調べる
クライアントを書く前に、パラメーター、リクエストのスキーマ、レスポンスのスキーマ、必要な権限を確認してください。
連携を認証する
保護された操作には、Authorizationヘッダーに有効なトークンが必要です。公式のCLIは、Bearerプレフィックスを付けてトークンを送ります。
サーバーでの自分の有効な権限を読み取る
WELLEY_TOKENには、普段シークレットを扱う方法で、自分の有効なトークンを設定してください。この例はデータを読み取るだけです。
curl --fail --silent --show-error \ -H "Authorization: Bearer $WELLEY_TOKEN" \ "https://welley.social/api/v1/rbac/permissions"
- 連携用には、アカウント設定でパーソナルアクセストークンを作成します。
- 名前と有効期限を付けます。APIはexpiresInDays=0も受け付け、その場合は保存された有効期限のないトークンになります。
- トークンで使えるグローバル権限、グループ権限、グループを絞り込みます。
- 許可リストを空にした項目は、現在のあなたのアクセス権の範囲だけで制限されます。トークンが、あなたにない権限を与えることはありません。
- トークンのシークレットが表示されるのは一度だけです。作成結果を閉じる前に保存してください。
- トークンを管理するには、アカウントのログインセッションが必要です。パーソナルアクセストークンでは、トークンの作成、一覧表示、コピー、取り消しはできません。
権限とスコープを確認する
認証は、誰が呼び出しているかをAPIに伝えます。その呼び出し元がどの操作を使えるかは、ロールの権限で決まります。
- 保護されたリクエストに有効な認証がない場合、APIは401を返します。
- 呼び出し元に必要な権限がない場合、APIは403を返します。
- 権限名はResource.Actionの形式です。例: GroupSettings.Manage
- スコープ付きのWebhookや権限の操作では、scopeを省略するとサーバースコープになります。グループスコープにするには、グループのTypeIdを渡します。
- 各操作の説明を読んでください。一部のエンドポイントは、アカウントのトークンではなく、HTTP署名や別のプロトコルを使います。
APIの分野を選ぶ
リファレンスには、ソーシャル機能、連携、サーバー管理が載っています。ここにある例は、APIのごく一部です。
アカウントとプロフィール
プロフィールの読み取り、アカウントのアイデンティティの管理、アカウントのエクスポートや移行の操作ができます。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| GET | /api/v1/users | ユーザー名で、ローカルまたはリモートのプロフィールを読み取ります。 | 公開、またはトークンは任意 |
| POST | /api/v1/users | サーバーの上限まで、現在のアカウントにプロフィールを追加します。 | トークンが必要 |
投稿とフィード
フィードの読み取りと投稿の作成ができます。ほかの操作では、返信、投票、リアクション、下書き、保存した投稿を扱います。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| GET | /api/v1/posts | ゲストとして公開投稿を読み取れます。認証済みの場合は、あなた向けのフィードを読み取れます。 | 公開、またはトークンは任意 |
| POST | /api/v1/posts | 内容と公開範囲を指定して、投稿を作成します。 | トークンが必要 |
グループとイベント
グループ、メンバーシップ、チャンネル、モデレーション、イベントを使って、コミュニティ向けのツールを作れます。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| POST | /api/v1/groups | 認証済みユーザーの権限で、グループを作成します。 | トークンが必要 |
| GET | /api/v1/events | 公開イベント、または認証済みユーザーが見られるイベントを一覧にします。 | 公開、またはトークンは任意 |
| POST | /api/v1/events | イベントを作成します。グループのイベントには、GroupEvents.Createが必要です。 | トークンが必要 |
会話と通知
会話ルームとそのメッセージを読み取ります。通知のコレクションを読み取り、既読かどうかを更新します。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| GET | /api/v1/rooms | 現在のユーザーのルームを一覧にします。一覧の続きを取得するには、レスポンスボディのnextCursorを使います。 | トークンが必要 |
| GET | /api/v1/user-notifications | 現在のユーザーの通知を一覧にします。 | トークンが必要 |
メディア、検索、翻訳
メディアのアップロード、見られるコンテンツの検索、テキストの翻訳の依頼ができます。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| POST | /api/v1/uploads | アップロードエントリーを作成し、返されたアップロードURLにファイルの内容をPUTします。 | トークンが必要 |
| GET | /api/v1/search | 呼び出し元が見られるコンテンツを検索するか、対応しているURLを解決します。 | 公開、またはトークンは任意 |
| POST | /api/v1/translate/text | テキストを、指定した言語に翻訳します。 | トークンが必要 |
WebhookとAIエージェント
Webhookで外部のサービスとつなげます。AIエージェントは、エージェントAPIで設定します。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| GET | /api/v1/webhooks/events | 対応しているWebhookのイベントタイプの一覧を取得します。 | トークンが必要 |
| POST | /api/v1/webhooks | 権限のあるサーバースコープまたはグループスコープで、Webhookを作成します。HTTP署名のシークレットが表示されるのは一度だけです。 | トークンが必要 |
| GET | /api/v1/ai-agents | 呼び出し元が見られるAIエージェントを一覧にします。 | トークンが必要 |
サーバーとグループの管理
設定、通報、モデレーション、連合の制御、クォータ、デプロイの管理にAPIを使えます。
| メソッド | パス | 操作 | アクセス |
|---|---|---|---|
| GET | /api/v1/rbac/permissions | 現在のユーザーとスコープで有効な権限を読み取ります。 | トークンが必要 |
| GET | /api/v1/settings | アカウントに必要な権限があれば、プラットフォーム設定を読み取ります。 | 公開、またはトークンは任意 |
レスポンスとメディアを扱う
ページ送りとアップロードの流れは、各操作の説明に従ってください。
- カーソル式のフィードでは、サーバーが返すページ送りのリンクをたどってください。IDの推測でカーソルを作らないでください。
- ルームでは、レスポンスボディに不透明なnextCursorが返されます。一覧の続きを取得するときは、同じフィルターを使い続けてください。
- メディアをアップロードするには、アップロードエントリーを作成し、返されたURLに内容を送ります。
- 各操作のエラーレスポンスと上限を確認してください。ドキュメントに載っている操作でも、ロール、サーバーの設定、外部プロバイダーが必要な場合があります。