Tags API
タグ管理に関するAPIエンドポイントです。
GET /tags
タグ一覧を取得します。
概要
項目 | 内容 |
---|---|
説明 | 全てのタグ一覧を取得 |
認証 | 不要 |
メソッド | GET |
パス | /v1/tags |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"tags": [
{
"id": "tag_001",
"name": "Go"
},
{
"id": "tag_002",
"name": "マイクロサービス"
}
]
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | リクエストパラメータが不正 |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/tag/list.go
internal/infrastructure/http/echo/handler/tag/list.go
POST /tags
新規タグを作成します。
概要
項目 | 内容 |
---|---|
説明 | 新規タグを作成します |
認証 | 必要 |
メソッド | POST |
パス | /v1/tags |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
リクエストボディ
json
{
"name": "タグ名"
}
フィールド詳細
フィールド | 型 | 必須 | 説明 |
---|---|---|---|
name | string | ✅ | タグ名(一意である必要がある) |
レスポンス
成功(201)
json
{
"apiVersion": "1.0.0",
"data": {
"tag": {
"id": "tag_003",
"name": "タグ名"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | リクエストボディの値が不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
409 | CONFLICT | 同じ名前のタグが既に存在 |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/tag/create.go
internal/infrastructure/http/echo/handler/tag/create.go
GET /tags/
指定IDのタグ詳細を取得します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDのタグ詳細を取得します |
認証 | 不要 |
メソッド | GET |
パス | /v1/tags/{tag_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
tag_id | string | ✅ | タグID |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"tag": {
"id": "tag_001",
"name": "Go"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | tag_idの形式が不正 |
404 | NOT_FOUND | 指定されたタグが見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/tag/get.go
internal/infrastructure/http/echo/handler/tag/get.go
PUT /tags/
指定IDのタグを更新します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDのタグを更新します |
認証 | 必要 |
メソッド | PUT |
パス | /v1/tags/{tag_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
tag_id | string | ✅ | タグID |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
リクエストボディ
json
{
"name": "更新されたタグ名"
}
フィールド詳細
フィールド | 型 | 必須 | 説明 |
---|---|---|---|
name | string | ✅ | 新しいタグ名(一意である必要がある) |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"tag": {
"id": "tag_001",
"name": "更新されたタグ名"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | リクエストボディまたはパスパラメータが不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
404 | NOT_FOUND | 指定されたタグが見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/tag/update.go
internal/infrastructure/http/echo/handler/tag/update.go
DELETE /tags/
指定IDのタグを削除します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDのタグを削除します |
認証 | 必要 |
メソッド | DELETE |
パス | /v1/tags/{tag_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
tag_id | string | ✅ | タグID |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
レスポンス
成功(204)
レスポンスボディなし
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | tag_idの形式が不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
404 | NOT_FOUND | 指定されたタグが見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
注意事項
- タグを削除すると、そのタグを使用している記事からもタグの関連付けが削除されます
- 削除前に関連する記事への影響を確認することを推奨します
実装参照
internal/usecase/tag/delete.go
internal/infrastructure/http/echo/handler/tag/delete.go
データモデル
Tag
go
type Tag struct {
ID string `json:"id"`
Name string `json:"name"`
}
バリデーションルール
タグ名(name)
- 必須: 空文字列は不可
- 文字数: 1文字以上50文字以下
- 一意性: 同じ名前のタグは作成できない
- 文字種: 日本語、英数字、記号使用可能
使用例
技術系タグの例
json
{
"id": "tag_001",
"name": "Go"
}
日本語タグの例
json
{
"id": "tag_002",
"name": "マイクロサービス"
}