コンテンツにスキップ

コミュニティ API

コミュニティの JSON は /api/v1/community の下にあります。公開コンテンツの読み取りにセッションは不要です。変更には Better Auth のセッション、確認済みのメールアドレス、有効なコミュニティプロフィール、同一オリジンのリクエストが必要です。

公開の GET レスポンスは、サーバーからでも Haneoka 上のページからでも読めます。現在のコミュニティのレスポンスはほかのサイトのブラウザーに CORS の許可を出さないため、クロスオリジンでの直接の fetch はブロックされます。セッション、非公開データ、変更は下記の同一オリジンの要件に従います。

メソッドパス認証用途
GET/api/v1/community/posts任意フィード、検索、タグ、カーソルによるページ分割。
POST/api/v1/community/posts必須投稿を作成する。
GET/api/v1/community/posts/{postId}任意投稿とコメントを読む。
PATCH / DELETE/api/v1/community/posts/{postId}投稿者投稿を編集・削除する。
POST/api/v1/community/posts/{postId}/comments必須コメントや返信を作成する。
PUT/api/v1/community/posts/{postId}/reaction必須いいねを切り替える。
PUT/api/v1/community/posts/{postId}/bookmark必須ブックマークを切り替える。
PUT/api/v1/community/posts/{postId}/pin投稿者固定・固定解除する。
POST/api/v1/community/posts/{postId}/archive投稿者アーカイブする。
POST/api/v1/community/posts/{postId}/restore投稿者復元する。
GET/api/v1/community/notifications必須通知を一覧・件数取得する。
PUT/api/v1/community/notifications/{notificationId}/read必須通知を 1 件既読にする。
PUT/api/v1/community/notifications/read-all必須表示中の通知をすべて既読にする。
GET/api/v1/community/tags任意表示可能な投稿数付きでタグを一覧する。
GET/api/v1/community/tags/preferences必須タグの設定を一覧する。
PUT/api/v1/community/tags/{tag}/preference必須follow、mute、null を設定する。
PUT/api/v1/community/users/{uid}/{follow|block|mute}必須ユーザーとの関係を設定する。
PUT/api/v1/community/posts/{postId}/feedback必須おすすめへのフィードバックを設定する。
DELETE/api/v1/community/me/post-feedback必須おすすめへのフィードバックを消去する。
POST/api/v1/community/reports必須投稿、コメント、ユーザーを通報する。
PATCH / DELETE/api/v1/community/comments/{commentId}投稿者コメントを編集・削除する。
PUT/api/v1/community/comments/{commentId}/reaction必須コメントのいいねを切り替える。
GET/api/v1/community/me/comments必須ログイン中のユーザーのコメントを一覧する。

リクエストとレスポンスの各フィールドは投稿、プロフィール、アップロードを参照してください。

投稿のレスポンスには、正規のコミュニティ DTO のフィールドが含まれます。

{
"id": "post-uuid-from-the-service",
"title": "A post title",
"body": "Post body",
"visibility": "public",
"moderationStatus": "allow",
"state": "active",
"version": 1,
"createdAt": 1730000000000,
"updatedAt": 1730000000000,
"lastEditedAt": 1730000000000,
"commentCount": 0,
"likeCount": 0,
"pinnedAt": null,
"archivedAt": null,
"commentsLockedAt": null,
"authorUid": 1001,
"authorName": "Example user",
"authorImage": null,
"avatarSeed": "opaque-avatar-seed",
"device": null,
"ipLocation": null,
"tags": [],
"attachments": []
}

この例の ID とアバターのシードはレスポンスのフィールドを示すラベルで、クライアントが組み立てる値ではありません。 投稿詳細のエンベロープは閲覧者ごとのフラグを viewer に分けて持ち、一覧の項目は一覧レスポンスの中にそれぞれの閲覧者フラグを持ちます。

利用者が書いた文章は公開前に確認されます。レスポンスは 201 か、moderationQueued 付きの 202 です。投稿やコメントはモデレーションが終わるまで pending のままのことがあります。書き込みが成功しても、すぐに検索に出るとは限りません。返されたオブジェクトとその状態を表示してください。