535 lines
12 KiB
YAML
535 lines
12 KiB
YAML
basePath: /api/v1
|
|
definitions:
|
|
models.ErrorResponse:
|
|
properties:
|
|
code:
|
|
type: integer
|
|
error:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ExampleGetResponse:
|
|
properties:
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ExamplePostRequest:
|
|
properties:
|
|
age:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
required:
|
|
- age
|
|
- name
|
|
type: object
|
|
models.ExamplePostResponse:
|
|
properties:
|
|
id:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.HealthResponse:
|
|
properties:
|
|
details:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
status:
|
|
type: string
|
|
timestamp:
|
|
type: string
|
|
type: object
|
|
models.HelloWorldResponse:
|
|
properties:
|
|
message:
|
|
type: string
|
|
version:
|
|
type: string
|
|
type: object
|
|
models.LoginRequest:
|
|
properties:
|
|
password:
|
|
type: string
|
|
username:
|
|
type: string
|
|
required:
|
|
- password
|
|
- username
|
|
type: object
|
|
models.ProductCreateRequest:
|
|
properties:
|
|
name:
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
models.ProductCreateResponse:
|
|
properties:
|
|
data: {}
|
|
id:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ProductDeleteResponse:
|
|
properties:
|
|
id:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ProductGetByIDResponse:
|
|
properties:
|
|
id:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ProductGetResponse:
|
|
properties:
|
|
data: {}
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.ProductUpdateRequest:
|
|
properties:
|
|
name:
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
models.ProductUpdateResponse:
|
|
properties:
|
|
data: {}
|
|
id:
|
|
type: string
|
|
message:
|
|
type: string
|
|
type: object
|
|
models.TokenResponse:
|
|
properties:
|
|
access_token:
|
|
type: string
|
|
expires_in:
|
|
type: integer
|
|
token_type:
|
|
type: string
|
|
type: object
|
|
models.User:
|
|
properties:
|
|
email:
|
|
type: string
|
|
id:
|
|
type: string
|
|
role:
|
|
type: string
|
|
username:
|
|
type: string
|
|
type: object
|
|
host: localhost:8080
|
|
info:
|
|
contact:
|
|
email: support@swagger.io
|
|
name: API Support
|
|
url: http://www.swagger.io/support
|
|
description: A comprehensive Go API service with Swagger documentation
|
|
license:
|
|
name: Apache 2.0
|
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
termsOfService: http://swagger.io/terms/
|
|
title: API Service
|
|
version: 1.0.0
|
|
paths:
|
|
/:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Returns a hello world message
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Hello world message
|
|
schema:
|
|
$ref: '#/definitions/models.HelloWorldResponse'
|
|
summary: Hello World endpoint
|
|
tags:
|
|
- root
|
|
/api/v1/auth/login:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Authenticate user with username and password to receive JWT token
|
|
parameters:
|
|
- description: Login credentials
|
|
in: body
|
|
name: login
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/models.LoginRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/models.TokenResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
summary: Login user and get JWT token
|
|
tags:
|
|
- Authentication
|
|
/api/v1/auth/me:
|
|
get:
|
|
description: Get information about the currently authenticated user
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/models.User'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
security:
|
|
- Bearer: []
|
|
summary: Get current user info
|
|
tags:
|
|
- Authentication
|
|
/api/v1/auth/refresh:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Refresh the JWT token using a valid refresh token
|
|
parameters:
|
|
- description: Refresh token
|
|
in: body
|
|
name: refresh
|
|
required: true
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/models.TokenResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
summary: Refresh JWT token
|
|
tags:
|
|
- Authentication
|
|
/api/v1/auth/register:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Register a new user account
|
|
parameters:
|
|
- description: Registration data
|
|
in: body
|
|
name: register
|
|
required: true
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
summary: Register new user
|
|
tags:
|
|
- Authentication
|
|
/api/v1/example:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Returns a simple message for GET request
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Example GET response
|
|
schema:
|
|
$ref: '#/definitions/models.ExampleGetResponse'
|
|
summary: Example GET service
|
|
tags:
|
|
- example
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Accepts a JSON payload and returns a response with an ID
|
|
parameters:
|
|
- description: Example POST request
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/models.ExamplePostRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Example POST response
|
|
schema:
|
|
$ref: '#/definitions/models.ExamplePostResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Example POST service
|
|
tags:
|
|
- example
|
|
/api/v1/products:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Returns a list of products
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Product GET response
|
|
schema:
|
|
$ref: '#/definitions/models.ProductGetResponse'
|
|
summary: Get product
|
|
tags:
|
|
- product
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Creates a new product
|
|
parameters:
|
|
- description: Product creation request
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/models.ProductCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Product created successfully
|
|
schema:
|
|
$ref: '#/definitions/models.ProductCreateResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Create product
|
|
tags:
|
|
- product
|
|
/api/v1/products/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Deletes a product by ID
|
|
parameters:
|
|
- description: Product ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Product deleted successfully
|
|
schema:
|
|
$ref: '#/definitions/models.ProductDeleteResponse'
|
|
"404":
|
|
description: Product not found
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Delete product
|
|
tags:
|
|
- product
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Returns a single product by ID
|
|
parameters:
|
|
- description: Product ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Product GET by ID response
|
|
schema:
|
|
$ref: '#/definitions/models.ProductGetByIDResponse'
|
|
"404":
|
|
description: Product not found
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Get product by ID
|
|
tags:
|
|
- product
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Updates an existing product
|
|
parameters:
|
|
- description: Product ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Product update request
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/models.ProductUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Product updated successfully
|
|
schema:
|
|
$ref: '#/definitions/models.ProductUpdateResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
"404":
|
|
description: Product not found
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Update product
|
|
tags:
|
|
- product
|
|
/api/v1/token/generate:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Generate a JWT token for a user
|
|
parameters:
|
|
- description: User credentials
|
|
in: body
|
|
name: token
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/models.LoginRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/models.TokenResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
summary: Generate JWT token
|
|
tags:
|
|
- Token
|
|
/api/v1/token/generate-direct:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Generate a JWT token directly without password verification (for
|
|
testing)
|
|
parameters:
|
|
- description: User info
|
|
in: body
|
|
name: user
|
|
required: true
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/models.TokenResponse'
|
|
"400":
|
|
description: Bad request
|
|
schema:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
summary: Generate token directly
|
|
tags:
|
|
- Token
|
|
/health:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Returns the health status of the API service
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Health status
|
|
schema:
|
|
$ref: '#/definitions/models.HealthResponse'
|
|
"500":
|
|
description: Internal server error
|
|
schema:
|
|
$ref: '#/definitions/models.ErrorResponse'
|
|
summary: Health check endpoint
|
|
tags:
|
|
- health
|
|
schemes:
|
|
- http
|
|
- https
|
|
swagger: "2.0"
|