Feat: add swagger notes

This commit is contained in:
2025-12-07 05:19:10 +08:00
parent 56e83b0725
commit 9c30bc009d
11 changed files with 775 additions and 15 deletions

View File

@@ -19,13 +19,51 @@ const docTemplate = `{
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/api/images": {
"/api/alias-update": {
"get": {
"description": "get update notification using websocket",
"summary": "Get notification when alias update",
"responses": {}
}
},
"/api/alias/{id}": {
"delete": {
"description": "delete alias along with the links",
"summary": "Delete alias",
"parameters": [
{
"type": "integer",
"description": "Alias Id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/aliases": {
"get": {
"description": "get alias ids and names",
"summary": "Get aliases",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.getImagesOutputImage"
"type": "array",
"items": {
"$ref": "#/definitions/api.getAliasesOutputAlias"
}
}
},
"400": {
@@ -36,9 +74,177 @@ const docTemplate = `{
}
}
}
},
"/api/image": {
"post": {
"consumes": [
"image/png",
"image/jpeg",
"image/gif"
],
"parameters": [
{
"type": "string",
"description": "userinfo from /auth/gen-login-url",
"name": "userinfo",
"in": "header",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/api/image/{id}": {
"delete": {
"description": "delete image along with the links",
"summary": "Delete image",
"parameters": [
{
"type": "integer",
"description": "Image Id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/image/{id}/aliases": {
"put": {
"parameters": [
{
"type": "integer",
"description": "Image Id",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/images": {
"get": {
"parameters": [
{
"type": "array",
"items": {
"type": "integer"
},
"collectionFormat": "csv",
"description": "Image Ids",
"name": "images",
"in": "query"
},
{
"type": "array",
"items": {
"type": "integer"
},
"collectionFormat": "csv",
"description": "Alias Ids",
"name": "aliases",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/api.getImagesOutputImage"
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/auth/gen-login-url": {
"post": {
"parameters": [
{
"description": "Payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/auth.postGenLoginUrlInput"
}
}
],
"responses": {
"200": {
"description": "Payload",
"schema": {
"$ref": "#/definitions/auth.postGenLoginUrlOutput"
}
},
"400": {
"description": "Bad Request"
}
}
}
}
},
"definitions": {
"api.getAliasesOutputAlias": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"api.getImagesOutputImage": {
"type": "object",
"properties": {
@@ -51,10 +257,26 @@ const docTemplate = `{
"id": {
"type": "integer"
},
"uploaded_at": {
"uploadedAt": {
"type": "integer"
},
"uploaded_user_id": {
"uploadedUserId": {
"type": "string"
}
}
},
"auth.postGenLoginUrlInput": {
"type": "object",
"properties": {
"userId": {
"type": "string"
}
}
},
"auth.postGenLoginUrlOutput": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string"
}
}

View File

@@ -11,13 +11,51 @@
},
"basePath": "/",
"paths": {
"/api/images": {
"/api/alias-update": {
"get": {
"description": "get update notification using websocket",
"summary": "Get notification when alias update",
"responses": {}
}
},
"/api/alias/{id}": {
"delete": {
"description": "delete alias along with the links",
"summary": "Delete alias",
"parameters": [
{
"type": "integer",
"description": "Alias Id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/aliases": {
"get": {
"description": "get alias ids and names",
"summary": "Get aliases",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.getImagesOutputImage"
"type": "array",
"items": {
"$ref": "#/definitions/api.getAliasesOutputAlias"
}
}
},
"400": {
@@ -28,9 +66,177 @@
}
}
}
},
"/api/image": {
"post": {
"consumes": [
"image/png",
"image/jpeg",
"image/gif"
],
"parameters": [
{
"type": "string",
"description": "userinfo from /auth/gen-login-url",
"name": "userinfo",
"in": "header",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/api/image/{id}": {
"delete": {
"description": "delete image along with the links",
"summary": "Delete image",
"parameters": [
{
"type": "integer",
"description": "Image Id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/image/{id}/aliases": {
"put": {
"parameters": [
{
"type": "integer",
"description": "Image Id",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/images": {
"get": {
"parameters": [
{
"type": "array",
"items": {
"type": "integer"
},
"collectionFormat": "csv",
"description": "Image Ids",
"name": "images",
"in": "query"
},
{
"type": "array",
"items": {
"type": "integer"
},
"collectionFormat": "csv",
"description": "Alias Ids",
"name": "aliases",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/api.getImagesOutputImage"
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/auth/gen-login-url": {
"post": {
"parameters": [
{
"description": "Payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/auth.postGenLoginUrlInput"
}
}
],
"responses": {
"200": {
"description": "Payload",
"schema": {
"$ref": "#/definitions/auth.postGenLoginUrlOutput"
}
},
"400": {
"description": "Bad Request"
}
}
}
}
},
"definitions": {
"api.getAliasesOutputAlias": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"api.getImagesOutputImage": {
"type": "object",
"properties": {
@@ -43,10 +249,26 @@
"id": {
"type": "integer"
},
"uploaded_at": {
"uploadedAt": {
"type": "integer"
},
"uploaded_user_id": {
"uploadedUserId": {
"type": "string"
}
}
},
"auth.postGenLoginUrlInput": {
"type": "object",
"properties": {
"userId": {
"type": "string"
}
}
},
"auth.postGenLoginUrlOutput": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string"
}
}

View File

@@ -1,5 +1,12 @@
basePath: /
definitions:
api.getAliasesOutputAlias:
properties:
id:
type: integer
name:
type: string
type: object
api.getImagesOutputImage:
properties:
aliases:
@@ -8,9 +15,19 @@ definitions:
type: array
id:
type: integer
uploaded_at:
uploadedAt:
type: integer
uploaded_user_id:
uploadedUserId:
type: string
type: object
auth.postGenLoginUrlInput:
properties:
userId:
type: string
type: object
auth.postGenLoginUrlOutput:
properties:
loginUrl:
type: string
type: object
info:
@@ -21,15 +38,142 @@ info:
title: Golang 2025 Final Project
version: 0.0.1
paths:
/api/images:
/api/alias-update:
get:
description: get update notification using websocket
responses: {}
summary: Get notification when alias update
/api/alias/{id}:
delete:
description: delete alias along with the links
parameters:
- description: Alias Id
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
"401":
description: Unauthorized
"404":
description: Not Found
summary: Delete alias
/api/aliases:
get:
description: get alias ids and names
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.getImagesOutputImage'
items:
$ref: '#/definitions/api.getAliasesOutputAlias'
type: array
"400":
description: Bad Request
"401":
description: Unauthorized
summary: Get aliases
/api/image:
post:
consumes:
- image/png
- image/jpeg
- image/gif
parameters:
- description: userinfo from /auth/gen-login-url
in: header
name: userinfo
required: true
type: string
responses:
"200":
description: OK
"401":
description: Unauthorized
/api/image/{id}:
delete:
description: delete image along with the links
parameters:
- description: Image Id
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
"401":
description: Unauthorized
"404":
description: Not Found
summary: Delete image
/api/image/{id}/aliases:
put:
parameters:
- description: Image Id
in: path
name: id
required: true
type: integer
- description: Payload
in: body
name: payload
required: true
schema:
items:
type: string
type: array
responses:
"200":
description: OK
"401":
description: Unauthorized
"404":
description: Not Found
/api/images:
get:
parameters:
- collectionFormat: csv
description: Image Ids
in: query
items:
type: integer
name: images
type: array
- collectionFormat: csv
description: Alias Ids
in: query
items:
type: integer
name: aliases
type: array
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/api.getImagesOutputImage'
type: array
"400":
description: Bad Request
"401":
description: Unauthorized
/auth/gen-login-url:
post:
parameters:
- description: Payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/auth.postGenLoginUrlInput'
responses:
"200":
description: Payload
schema:
$ref: '#/definitions/auth.postGenLoginUrlOutput'
"400":
description: Bad Request
swagger: "2.0"