1716 lines
40 KiB
YAML
1716 lines
40 KiB
YAML
basePath: /api/v1
|
|
definitions:
|
|
dto.AssignMenusToClientRequest:
|
|
properties:
|
|
menu_ids:
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- menu_ids
|
|
type: object
|
|
dto.AssignPermissionRequest:
|
|
properties:
|
|
permission_ids:
|
|
description: RoleID string `json:"role_id" binding:"required,uuid4"`
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- permission_ids
|
|
type: object
|
|
dto.AssignRoleRequest:
|
|
properties:
|
|
role_ids:
|
|
description: UserID string `json:"user_id" binding:"required,uuid4"`
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- role_ids
|
|
type: object
|
|
dto.MaintGroupCreateRequest:
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
code:
|
|
maxLength: 50
|
|
minLength: 2
|
|
type: string
|
|
description:
|
|
type: string
|
|
maintenance_group_roles:
|
|
items:
|
|
$ref: '#/definitions/dto.MaintenanceGroupRole'
|
|
type: array
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
required:
|
|
- client_id
|
|
- code
|
|
- maintenance_group_roles
|
|
- name
|
|
type: object
|
|
dto.MaintGroupUpdateRequest:
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
code:
|
|
maxLength: 50
|
|
minLength: 2
|
|
type: string
|
|
description:
|
|
type: string
|
|
maintenance_group_roles:
|
|
items:
|
|
$ref: '#/definitions/dto.MaintenanceGroupRoleUpdate'
|
|
type: array
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
type: object
|
|
dto.MaintenanceGroupRole:
|
|
properties:
|
|
level:
|
|
type: integer
|
|
maintenance_group_role_users:
|
|
items:
|
|
$ref: '#/definitions/dto.MaintenanceGroupRoleUser'
|
|
type: array
|
|
role_id:
|
|
type: string
|
|
required:
|
|
- level
|
|
- maintenance_group_role_users
|
|
- role_id
|
|
type: object
|
|
dto.MaintenanceGroupRoleUpdate:
|
|
properties:
|
|
id:
|
|
type: string
|
|
level:
|
|
type: integer
|
|
maintenance_group_role_users:
|
|
items:
|
|
$ref: '#/definitions/dto.MaintenanceGroupRoleUser'
|
|
type: array
|
|
role_id:
|
|
type: string
|
|
type: object
|
|
dto.MaintenanceGroupRoleUser:
|
|
properties:
|
|
user_id:
|
|
type: string
|
|
required:
|
|
- user_id
|
|
type: object
|
|
dto.MenuCreateRequest:
|
|
properties:
|
|
icon_url:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
mode:
|
|
maxLength: 20
|
|
minLength: 1
|
|
type: string
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
parent_id:
|
|
type: string
|
|
sequence:
|
|
type: integer
|
|
status:
|
|
type: string
|
|
table_name:
|
|
maxLength: 10
|
|
type: string
|
|
url:
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- mode
|
|
- name
|
|
- sequence
|
|
- url
|
|
type: object
|
|
dto.MenuUpdateRequest:
|
|
properties:
|
|
icon_url:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
mode:
|
|
maxLength: 20
|
|
minLength: 1
|
|
type: string
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
parent_id:
|
|
type: string
|
|
sequence:
|
|
type: integer
|
|
status:
|
|
type: string
|
|
table_name:
|
|
maxLength: 10
|
|
type: string
|
|
url:
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
dto.PermissionsCreateRequest:
|
|
properties:
|
|
menu_id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
required:
|
|
- menu_id
|
|
- name
|
|
type: object
|
|
dto.PermissionsUpdateRequest:
|
|
properties:
|
|
menu_id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
dto.RemoveMenusFromClientRequest:
|
|
properties:
|
|
menu_ids:
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- menu_ids
|
|
type: object
|
|
dto.RemovePermissionRequest:
|
|
properties:
|
|
permission_ids:
|
|
description: RoleID string `json:"role_id" binding:"required,uuid4"`
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- permission_ids
|
|
type: object
|
|
dto.RemoveRoleRequest:
|
|
properties:
|
|
role_ids:
|
|
description: UserID string `json:"user_id" binding:"required,uuid4"`
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- role_ids
|
|
type: object
|
|
dto.RoleCreateRequest:
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
description:
|
|
type: string
|
|
home_url:
|
|
type: string
|
|
icon_url:
|
|
type: string
|
|
name:
|
|
type: string
|
|
permissions:
|
|
items:
|
|
type: string
|
|
type: array
|
|
role_menus:
|
|
items:
|
|
type: string
|
|
type: array
|
|
role_permissions:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type:
|
|
type: string
|
|
user_roles:
|
|
items:
|
|
type: string
|
|
type: array
|
|
users:
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- client_id
|
|
- name
|
|
type: object
|
|
dto.RoleUpdateRequest:
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
description:
|
|
type: string
|
|
home_url:
|
|
type: string
|
|
icon_url:
|
|
type: string
|
|
name:
|
|
type: string
|
|
permissions:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type:
|
|
type: string
|
|
type: object
|
|
dto.SendVerificationEmailRequest:
|
|
properties:
|
|
email:
|
|
type: string
|
|
required:
|
|
- email
|
|
type: object
|
|
dto.UserCreateRequest:
|
|
properties:
|
|
address:
|
|
type: string
|
|
client_id:
|
|
type: string
|
|
email:
|
|
type: string
|
|
gender:
|
|
maxLength: 10
|
|
type: string
|
|
location_id:
|
|
type: string
|
|
maintenance_group_user_id:
|
|
type: string
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
password:
|
|
minLength: 8
|
|
type: string
|
|
phone:
|
|
maxLength: 20
|
|
minLength: 8
|
|
type: string
|
|
photo_url:
|
|
type: string
|
|
username:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
required:
|
|
- client_id
|
|
- email
|
|
- name
|
|
- password
|
|
- username
|
|
type: object
|
|
dto.UserLoginRequest:
|
|
properties:
|
|
login:
|
|
type: string
|
|
password:
|
|
type: string
|
|
required:
|
|
- login
|
|
- password
|
|
type: object
|
|
dto.UserUpdateRequest:
|
|
properties:
|
|
address:
|
|
type: string
|
|
client_id:
|
|
type: string
|
|
email:
|
|
type: string
|
|
gender:
|
|
maxLength: 10
|
|
type: string
|
|
location_id:
|
|
type: string
|
|
maintenance_group_user_id:
|
|
type: string
|
|
name:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
password:
|
|
minLength: 8
|
|
type: string
|
|
phone:
|
|
maxLength: 20
|
|
minLength: 8
|
|
type: string
|
|
photo_url:
|
|
type: string
|
|
username:
|
|
maxLength: 100
|
|
minLength: 2
|
|
type: string
|
|
type: object
|
|
dto.VerifyEmailRequest:
|
|
properties:
|
|
token:
|
|
type: string
|
|
required:
|
|
- token
|
|
type: object
|
|
utils.PaginationResponse:
|
|
properties:
|
|
max_page:
|
|
type: integer
|
|
page:
|
|
type: integer
|
|
per_page:
|
|
type: integer
|
|
total:
|
|
type: integer
|
|
type: object
|
|
utils.Response:
|
|
properties:
|
|
data: {}
|
|
error: {}
|
|
message:
|
|
type: string
|
|
meta: {}
|
|
status:
|
|
type: boolean
|
|
type: object
|
|
utils.ResponseWithPagination:
|
|
properties:
|
|
code:
|
|
type: integer
|
|
data: {}
|
|
message:
|
|
type: string
|
|
pagination:
|
|
$ref: '#/definitions/utils.PaginationResponse'
|
|
status:
|
|
type: string
|
|
type: object
|
|
externalDocs:
|
|
description: OpenAPI
|
|
url: https://swagger.io/resources/open-api/
|
|
host: localhost:8888
|
|
info:
|
|
contact:
|
|
email: support@swagger.io
|
|
name: API Support
|
|
url: http://www.swagger.io/support
|
|
description: This is a sample server celler server.
|
|
license:
|
|
name: Apache 2.0
|
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
termsOfService: http://swagger.io/terms/
|
|
title: WMS Wareify API Docs
|
|
version: "1.0"
|
|
paths:
|
|
/auth/login:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Authenticate user and return access & refresh tokens.
|
|
parameters:
|
|
- description: Login payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.UserLoginRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: User login
|
|
tags:
|
|
- Auth
|
|
/auth/refresh:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Exchange a refresh token for a new access token (and optionally
|
|
a new refresh token).
|
|
parameters:
|
|
- description: Refresh token payload
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
type: object
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Refresh auth token
|
|
tags:
|
|
- Auth
|
|
/clients:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get paginated list of clients with filtering and sorting capabilities
|
|
parameters:
|
|
- description: Filter by name (partial match)
|
|
in: query
|
|
name: name
|
|
type: string
|
|
- description: Filter by code (partial match)
|
|
in: query
|
|
name: code
|
|
type: string
|
|
- description: 'Page size (default: 10)'
|
|
in: query
|
|
name: per_page
|
|
type: integer
|
|
- description: 'Page number (default: 1)'
|
|
in: query
|
|
name: page
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.ResponseWithPagination'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get list of clients
|
|
tags:
|
|
- Clients
|
|
post:
|
|
consumes:
|
|
- multipart/form-data
|
|
description: Create a new client with the provided information
|
|
parameters:
|
|
- description: Client name
|
|
in: formData
|
|
name: name
|
|
required: true
|
|
type: string
|
|
- description: Client code
|
|
in: formData
|
|
name: code
|
|
required: true
|
|
type: string
|
|
- description: Client logo (optional)
|
|
in: formData
|
|
name: logo
|
|
type: file
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Create a new client
|
|
tags:
|
|
- Clients
|
|
/clients/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete a client by ID
|
|
parameters:
|
|
- description: Client ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Delete client
|
|
tags:
|
|
- Clients
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get detailed information of a specific client by their ID
|
|
parameters:
|
|
- description: Client ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get client by ID
|
|
tags:
|
|
- Clients
|
|
put:
|
|
consumes:
|
|
- multipart/form-data
|
|
description: Update client information by ID
|
|
parameters:
|
|
- description: Client ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Client name
|
|
in: formData
|
|
name: name
|
|
type: string
|
|
- description: Client code
|
|
in: formData
|
|
name: code
|
|
type: string
|
|
- description: Client logo (optional)
|
|
in: formData
|
|
name: logo
|
|
type: file
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Update client
|
|
tags:
|
|
- Clients
|
|
/clients/{id}/assign-menus:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Assign one or more menus to a client
|
|
parameters:
|
|
- description: Client ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Menu assignment data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.AssignMenusToClientRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Assign menus to client
|
|
tags:
|
|
- Clients
|
|
/clients/{id}/remove-menus:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Remove one or more menus from a client
|
|
parameters:
|
|
- description: Client ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Menu removal data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.RemoveMenusFromClientRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Remove menus from client
|
|
tags:
|
|
- Clients
|
|
/maintenance-groups:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get all maintenance groups
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/utils.Response'
|
|
type: array
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Get all maintenance groups
|
|
tags:
|
|
- MaintenanceGroup
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new maintenance group
|
|
parameters:
|
|
- description: Create payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.MaintGroupCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Create a new maintenance group
|
|
tags:
|
|
- MaintenanceGroup
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update maintenance group
|
|
parameters:
|
|
- description: Update payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.MaintGroupUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Update maintenance group
|
|
tags:
|
|
- MaintenanceGroup
|
|
/maintenance-groups/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete maintenance group
|
|
parameters:
|
|
- description: MaintenanceGroup ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Delete maintenance group
|
|
tags:
|
|
- MaintenanceGroup
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get maintenance group by ID
|
|
parameters:
|
|
- description: MaintenanceGroup ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Get maintenance group by ID
|
|
tags:
|
|
- MaintenanceGroup
|
|
/menus:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get paginated list of menus with filtering and sorting capabilities
|
|
parameters:
|
|
- description: Filter by name (partial match)
|
|
in: query
|
|
name: name
|
|
type: string
|
|
- description: Filter by parent menu ID
|
|
in: query
|
|
name: parent_id
|
|
type: string
|
|
- collectionFormat: csv
|
|
description: Include related entities
|
|
in: query
|
|
items:
|
|
type: string
|
|
name: includes
|
|
type: array
|
|
- description: 'Page number (default: 1)'
|
|
in: query
|
|
name: page
|
|
type: integer
|
|
- description: 'Page size (default: 10)'
|
|
in: query
|
|
name: page_size
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.ResponseWithPagination'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get list of menus
|
|
tags:
|
|
- Menus
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new menu with the provided information
|
|
parameters:
|
|
- description: Menu creation data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.MenuCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Create a new menu
|
|
tags:
|
|
- Menus
|
|
/menus/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete a menu by ID
|
|
parameters:
|
|
- description: Menu ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Delete menu
|
|
tags:
|
|
- Menus
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get detailed information of a specific menu by its ID
|
|
parameters:
|
|
- description: Menu ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get menu by ID
|
|
tags:
|
|
- Menus
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update menu information by ID
|
|
parameters:
|
|
- description: Menu ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Menu update data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.MenuUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Update menu
|
|
tags:
|
|
- Menus
|
|
/menus/by-name:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get menu information by its name
|
|
parameters:
|
|
- description: Menu name
|
|
in: query
|
|
name: name
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get menu by name
|
|
tags:
|
|
- Menus
|
|
/permissions:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get list of all permissions
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get list of permissions
|
|
tags:
|
|
- Permissions
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new permission with the provided information
|
|
parameters:
|
|
- description: Permission creation data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.PermissionsCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Create a new permission
|
|
tags:
|
|
- Permissions
|
|
/permissions/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete a permission by ID
|
|
parameters:
|
|
- description: Permission ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Delete permission
|
|
tags:
|
|
- Permissions
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get detailed information of a specific permission by its ID
|
|
parameters:
|
|
- description: Permission ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get permission by ID
|
|
tags:
|
|
- Permissions
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update permission information by ID
|
|
parameters:
|
|
- description: Permission ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Permission update data
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.PermissionsUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Update permission
|
|
tags:
|
|
- Permissions
|
|
/permissions/by-name:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get permission information by its name
|
|
parameters:
|
|
- description: Permission name
|
|
in: query
|
|
name: name
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
summary: Get permission by name
|
|
tags:
|
|
- Permissions
|
|
/roles:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get paginated list of roles. Supports filtering and pagination.
|
|
parameters:
|
|
- description: Filter by name (partial match)
|
|
in: query
|
|
name: name
|
|
type: string
|
|
- description: 'Page number (default: 1)'
|
|
in: query
|
|
name: page
|
|
type: integer
|
|
- description: 'Page size (default: 10)'
|
|
in: query
|
|
name: page_size
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/utils.ResponseWithPagination'
|
|
type: array
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Get all roles
|
|
tags:
|
|
- Roles
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new role.
|
|
parameters:
|
|
- description: Role create payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.RoleCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Create a new role
|
|
tags:
|
|
- Roles
|
|
/roles/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete a role by ID.
|
|
parameters:
|
|
- description: Role ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Delete a role
|
|
tags:
|
|
- Roles
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get details of a role by ID.
|
|
parameters:
|
|
- description: Role ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Get role by ID
|
|
tags:
|
|
- Roles
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update a role by ID.
|
|
parameters:
|
|
- description: Role ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Role update payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.RoleUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Update a role
|
|
tags:
|
|
- Roles
|
|
/roles/{id}/assign-permissions:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Assign permissions to a role by role ID.
|
|
parameters:
|
|
- description: Role ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Assign permissions payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.AssignPermissionRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Assign permissions to role
|
|
tags:
|
|
- Roles
|
|
/roles/{id}/remove-permissions:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Remove permissions from a role by role ID.
|
|
parameters:
|
|
- description: Role ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Remove permissions payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.RemovePermissionRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Remove permissions from role
|
|
tags:
|
|
- Roles
|
|
/users:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Delete the authenticated user's account (soft/hard depends on implementation).
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Delete current user
|
|
tags:
|
|
- Users
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get paginated list of users for the current client. Supports filtering
|
|
by name and including related roles.
|
|
parameters:
|
|
- description: Filter by name (partial match)
|
|
in: query
|
|
name: name
|
|
type: string
|
|
- description: 'Page number (default: 1)'
|
|
in: query
|
|
name: page
|
|
type: integer
|
|
- description: 'Page size (default: 10)'
|
|
in: query
|
|
name: page_size
|
|
type: integer
|
|
- description: Sort expression, e.g. created_at desc
|
|
in: query
|
|
name: sort
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/utils.ResponseWithPagination'
|
|
type: array
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get list of users
|
|
tags:
|
|
- Users
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Update profile of the authenticated user. Use multipart/form-data
|
|
if uploading files (photo).
|
|
parameters:
|
|
- description: Update payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.UserUpdateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Update current user
|
|
tags:
|
|
- Users
|
|
/users/{id}:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get details of a user by their ID. Requires appropriate permissions.
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get user by ID
|
|
tags:
|
|
- Users
|
|
/users/{id}/assign-roles:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Assign roles to a user by user ID.
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Assign roles payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.AssignRoleRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Assign roles to user
|
|
tags:
|
|
- Roles
|
|
/users/{id}/remove-roles:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Remove roles from a user by user ID.
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Remove roles payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.RemoveRoleRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Remove roles from user
|
|
tags:
|
|
- Roles
|
|
/users/{id}/roles:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Get all roles assigned to a user by user ID.
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/utils.ResponseWithPagination'
|
|
type: array
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Get roles by user ID
|
|
tags:
|
|
- Roles
|
|
/users/me:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: Return the authenticated user's profile.
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get current user
|
|
tags:
|
|
- Users
|
|
/users/register:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Create a new user under the authenticated client. Validates input
|
|
and returns created user.
|
|
parameters:
|
|
- description: Register payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.UserCreateRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Register a new user
|
|
tags:
|
|
- Users
|
|
/users/send-verification-email:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Send email with verification code/link to a user's email address.
|
|
parameters:
|
|
- description: Email request payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.SendVerificationEmailRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Send verification email
|
|
tags:
|
|
- Users
|
|
/users/verify-email:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Verify a user's email using code or token sent via email.
|
|
parameters:
|
|
- description: Verify email payload
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/dto.VerifyEmailRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/utils.Response'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
additionalProperties: true
|
|
type: object
|
|
summary: Verify user email
|
|
tags:
|
|
- Users
|
|
securityDefinitions:
|
|
BearerAuth:
|
|
description: Bearer token for authentication
|
|
in: header
|
|
name: Authorization
|
|
type: apiKey
|
|
swagger: "2.0"
|