feat: get user titles described

This commit is contained in:
Iron_Felix 2025-11-18 04:59:19 +03:00
parent 8deba7afd9
commit 09d0d1eb4d
5 changed files with 461 additions and 124 deletions

View file

@ -26,9 +26,17 @@ const (
// Defines values for TitleStatus.
const (
Finished TitleStatus = "finished"
Ongoing TitleStatus = "ongoing"
Planned TitleStatus = "planned"
TitleStatusFinished TitleStatus = "finished"
TitleStatusOngoing TitleStatus = "ongoing"
TitleStatusPlanned TitleStatus = "planned"
)
// Defines values for UserTitleStatus.
const (
UserTitleStatusDropped UserTitleStatus = "dropped"
UserTitleStatusFinished UserTitleStatus = "finished"
UserTitleStatusInProgress UserTitleStatus = "in-progress"
UserTitleStatusPlanned UserTitleStatus = "planned"
)
// Image defines model for Image.
@ -110,8 +118,27 @@ type User struct {
UserDesc *string `json:"user_desc,omitempty"`
}
// GetTitleParams defines parameters for GetTitle.
type GetTitleParams struct {
// UserTitle defines model for UserTitle.
type UserTitle struct {
Ctime *time.Time `json:"ctime,omitempty"`
Rate *int32 `json:"rate,omitempty"`
ReviewId *int64 `json:"review_id,omitempty"`
// Status User's title status
Status UserTitleStatus `json:"status"`
TitleId int64 `json:"title_id"`
UserId int64 `json:"user_id"`
AdditionalProperties map[string]interface{} `json:"-"`
}
// UserTitleStatus User's title status
type UserTitleStatus string
// Cursor defines model for cursor.
type Cursor = string
// GetTitlesParams defines parameters for GetTitles.
type GetTitlesParams struct {
Word *string `form:"word,omitempty" json:"word,omitempty"`
Status *TitleStatus `form:"status,omitempty" json:"status,omitempty"`
Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"`
@ -122,8 +149,8 @@ type GetTitleParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// GetTitleTitleIdParams defines parameters for GetTitleTitleId.
type GetTitleTitleIdParams struct {
// GetTitlesTitleIdParams defines parameters for GetTitlesTitleId.
type GetTitlesTitleIdParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
@ -132,6 +159,15 @@ type GetUsersUserIdParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles.
type GetUsersUserIdTitlesParams struct {
Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"`
Query *string `form:"query,omitempty" json:"query,omitempty"`
Limit *int `form:"limit,omitempty" json:"limit,omitempty"`
Offset *int `form:"offset,omitempty" json:"offset,omitempty"`
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// Getter for additional properties for Title. Returns the specified
// element and whether it was found
func (a Title) Get(fieldName string) (value interface{}, found bool) {
@ -374,17 +410,157 @@ func (a Title) MarshalJSON() ([]byte, error) {
return json.Marshal(object)
}
// Getter for additional properties for UserTitle. Returns the specified
// element and whether it was found
func (a UserTitle) Get(fieldName string) (value interface{}, found bool) {
if a.AdditionalProperties != nil {
value, found = a.AdditionalProperties[fieldName]
}
return
}
// Setter for additional properties for UserTitle
func (a *UserTitle) Set(fieldName string, value interface{}) {
if a.AdditionalProperties == nil {
a.AdditionalProperties = make(map[string]interface{})
}
a.AdditionalProperties[fieldName] = value
}
// Override default JSON handling for UserTitle to handle AdditionalProperties
func (a *UserTitle) UnmarshalJSON(b []byte) error {
object := make(map[string]json.RawMessage)
err := json.Unmarshal(b, &object)
if err != nil {
return err
}
if raw, found := object["ctime"]; found {
err = json.Unmarshal(raw, &a.Ctime)
if err != nil {
return fmt.Errorf("error reading 'ctime': %w", err)
}
delete(object, "ctime")
}
if raw, found := object["rate"]; found {
err = json.Unmarshal(raw, &a.Rate)
if err != nil {
return fmt.Errorf("error reading 'rate': %w", err)
}
delete(object, "rate")
}
if raw, found := object["review_id"]; found {
err = json.Unmarshal(raw, &a.ReviewId)
if err != nil {
return fmt.Errorf("error reading 'review_id': %w", err)
}
delete(object, "review_id")
}
if raw, found := object["status"]; found {
err = json.Unmarshal(raw, &a.Status)
if err != nil {
return fmt.Errorf("error reading 'status': %w", err)
}
delete(object, "status")
}
if raw, found := object["title_id"]; found {
err = json.Unmarshal(raw, &a.TitleId)
if err != nil {
return fmt.Errorf("error reading 'title_id': %w", err)
}
delete(object, "title_id")
}
if raw, found := object["user_id"]; found {
err = json.Unmarshal(raw, &a.UserId)
if err != nil {
return fmt.Errorf("error reading 'user_id': %w", err)
}
delete(object, "user_id")
}
if len(object) != 0 {
a.AdditionalProperties = make(map[string]interface{})
for fieldName, fieldBuf := range object {
var fieldVal interface{}
err := json.Unmarshal(fieldBuf, &fieldVal)
if err != nil {
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
}
a.AdditionalProperties[fieldName] = fieldVal
}
}
return nil
}
// Override default JSON handling for UserTitle to handle AdditionalProperties
func (a UserTitle) MarshalJSON() ([]byte, error) {
var err error
object := make(map[string]json.RawMessage)
if a.Ctime != nil {
object["ctime"], err = json.Marshal(a.Ctime)
if err != nil {
return nil, fmt.Errorf("error marshaling 'ctime': %w", err)
}
}
if a.Rate != nil {
object["rate"], err = json.Marshal(a.Rate)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rate': %w", err)
}
}
if a.ReviewId != nil {
object["review_id"], err = json.Marshal(a.ReviewId)
if err != nil {
return nil, fmt.Errorf("error marshaling 'review_id': %w", err)
}
}
object["status"], err = json.Marshal(a.Status)
if err != nil {
return nil, fmt.Errorf("error marshaling 'status': %w", err)
}
object["title_id"], err = json.Marshal(a.TitleId)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title_id': %w", err)
}
object["user_id"], err = json.Marshal(a.UserId)
if err != nil {
return nil, fmt.Errorf("error marshaling 'user_id': %w", err)
}
for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field)
if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
}
}
return json.Marshal(object)
}
// ServerInterface represents all server handlers.
type ServerInterface interface {
// Get titles
// (GET /title)
GetTitle(c *gin.Context, params GetTitleParams)
// (GET /titles)
GetTitles(c *gin.Context, params GetTitlesParams)
// Get title description
// (GET /title/{title_id})
GetTitleTitleId(c *gin.Context, titleId int64, params GetTitleTitleIdParams)
// (GET /titles/{title_id})
GetTitlesTitleId(c *gin.Context, titleId int64, params GetTitlesTitleIdParams)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams)
// Get user titles
// (GET /users/{user_id}/titles/)
GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams)
}
// ServerInterfaceWrapper converts contexts to parameters.
@ -396,13 +572,13 @@ type ServerInterfaceWrapper struct {
type MiddlewareFunc func(c *gin.Context)
// GetTitle operation middleware
func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) {
// GetTitles operation middleware
func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) {
var err error
// Parameter object where we will unmarshal all parameters from the context
var params GetTitleParams
var params GetTitlesParams
// ------------- Optional query parameter "word" -------------
@ -475,11 +651,11 @@ func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) {
}
}
siw.Handler.GetTitle(c, params)
siw.Handler.GetTitles(c, params)
}
// GetTitleTitleId operation middleware
func (siw *ServerInterfaceWrapper) GetTitleTitleId(c *gin.Context) {
// GetTitlesTitleId operation middleware
func (siw *ServerInterfaceWrapper) GetTitlesTitleId(c *gin.Context) {
var err error
@ -493,7 +669,7 @@ func (siw *ServerInterfaceWrapper) GetTitleTitleId(c *gin.Context) {
}
// Parameter object where we will unmarshal all parameters from the context
var params GetTitleTitleIdParams
var params GetTitlesTitleIdParams
// ------------- Optional query parameter "fields" -------------
@ -510,7 +686,7 @@ func (siw *ServerInterfaceWrapper) GetTitleTitleId(c *gin.Context) {
}
}
siw.Handler.GetTitleTitleId(c, titleId, params)
siw.Handler.GetTitlesTitleId(c, titleId, params)
}
// GetUsersUserId operation middleware
@ -548,6 +724,73 @@ func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) {
siw.Handler.GetUsersUserId(c, userId, params)
}
// GetUsersUserIdTitles operation middleware
func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) {
var err error
// ------------- Path parameter "user_id" -------------
var userId string
err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest)
return
}
// Parameter object where we will unmarshal all parameters from the context
var params GetUsersUserIdTitlesParams
// ------------- Optional query parameter "cursor" -------------
err = runtime.BindQueryParameter("form", true, false, "cursor", c.Request.URL.Query(), &params.Cursor)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter cursor: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "query" -------------
err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), &params.Query)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "limit" -------------
err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), &params.Limit)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "offset" -------------
err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), &params.Offset)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "fields" -------------
err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), &params.Fields)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetUsersUserIdTitles(c, userId, params)
}
// GinServerOptions provides options for the Gin server.
type GinServerOptions struct {
BaseURL string
@ -575,98 +818,99 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options
ErrorHandler: errorHandler,
}
router.GET(options.BaseURL+"/title", wrapper.GetTitle)
router.GET(options.BaseURL+"/title/:title_id", wrapper.GetTitleTitleId)
router.GET(options.BaseURL+"/titles", wrapper.GetTitles)
router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitlesTitleId)
router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId)
router.GET(options.BaseURL+"/users/:user_id/titles/", wrapper.GetUsersUserIdTitles)
}
type GetTitleRequestObject struct {
Params GetTitleParams
type GetTitlesRequestObject struct {
Params GetTitlesParams
}
type GetTitleResponseObject interface {
VisitGetTitleResponse(w http.ResponseWriter) error
type GetTitlesResponseObject interface {
VisitGetTitlesResponse(w http.ResponseWriter) error
}
type GetTitle200JSONResponse []Title
type GetTitles200JSONResponse []Title
func (response GetTitle200JSONResponse) VisitGetTitleResponse(w http.ResponseWriter) error {
func (response GetTitles200JSONResponse) VisitGetTitlesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetTitle204Response struct {
type GetTitles204Response struct {
}
func (response GetTitle204Response) VisitGetTitleResponse(w http.ResponseWriter) error {
func (response GetTitles204Response) VisitGetTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type GetTitle400Response struct {
type GetTitles400Response struct {
}
func (response GetTitle400Response) VisitGetTitleResponse(w http.ResponseWriter) error {
func (response GetTitles400Response) VisitGetTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetTitle500Response struct {
type GetTitles500Response struct {
}
func (response GetTitle500Response) VisitGetTitleResponse(w http.ResponseWriter) error {
func (response GetTitles500Response) VisitGetTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
type GetTitleTitleIdRequestObject struct {
type GetTitlesTitleIdRequestObject struct {
TitleId int64 `json:"title_id"`
Params GetTitleTitleIdParams
Params GetTitlesTitleIdParams
}
type GetTitleTitleIdResponseObject interface {
VisitGetTitleTitleIdResponse(w http.ResponseWriter) error
type GetTitlesTitleIdResponseObject interface {
VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error
}
type GetTitleTitleId200JSONResponse Title
type GetTitlesTitleId200JSONResponse Title
func (response GetTitleTitleId200JSONResponse) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitlesTitleId200JSONResponse) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetTitleTitleId204Response struct {
type GetTitlesTitleId204Response struct {
}
func (response GetTitleTitleId204Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitlesTitleId204Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type GetTitleTitleId400Response struct {
type GetTitlesTitleId400Response struct {
}
func (response GetTitleTitleId400Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitlesTitleId400Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetTitleTitleId404Response struct {
type GetTitlesTitleId404Response struct {
}
func (response GetTitleTitleId404Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitlesTitleId404Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type GetTitleTitleId500Response struct {
type GetTitlesTitleId500Response struct {
}
func (response GetTitleTitleId500Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error {
func (response GetTitlesTitleId500Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
@ -713,17 +957,62 @@ func (response GetUsersUserId500Response) VisitGetUsersUserIdResponse(w http.Res
return nil
}
type GetUsersUserIdTitlesRequestObject struct {
UserId string `json:"user_id"`
Params GetUsersUserIdTitlesParams
}
type GetUsersUserIdTitlesResponseObject interface {
VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error
}
type GetUsersUserIdTitles200JSONResponse []UserTitle
func (response GetUsersUserIdTitles200JSONResponse) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetUsersUserIdTitles204Response struct {
}
func (response GetUsersUserIdTitles204Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type GetUsersUserIdTitles400Response struct {
}
func (response GetUsersUserIdTitles400Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetUsersUserIdTitles500Response struct {
}
func (response GetUsersUserIdTitles500Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
// StrictServerInterface represents all server handlers.
type StrictServerInterface interface {
// Get titles
// (GET /title)
GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, error)
// (GET /titles)
GetTitles(ctx context.Context, request GetTitlesRequestObject) (GetTitlesResponseObject, error)
// Get title description
// (GET /title/{title_id})
GetTitleTitleId(ctx context.Context, request GetTitleTitleIdRequestObject) (GetTitleTitleIdResponseObject, error)
// (GET /titles/{title_id})
GetTitlesTitleId(ctx context.Context, request GetTitlesTitleIdRequestObject) (GetTitlesTitleIdResponseObject, error)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, error)
// Get user titles
// (GET /users/{user_id}/titles/)
GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, error)
}
type StrictHandlerFunc = strictgin.StrictGinHandlerFunc
@ -738,17 +1027,17 @@ type strictHandler struct {
middlewares []StrictMiddlewareFunc
}
// GetTitle operation middleware
func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) {
var request GetTitleRequestObject
// GetTitles operation middleware
func (sh *strictHandler) GetTitles(ctx *gin.Context, params GetTitlesParams) {
var request GetTitlesRequestObject
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetTitle(ctx, request.(GetTitleRequestObject))
return sh.ssi.GetTitles(ctx, request.(GetTitlesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetTitle")
handler = middleware(handler, "GetTitles")
}
response, err := handler(ctx, request)
@ -756,8 +1045,8 @@ func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) {
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetTitleResponseObject); ok {
if err := validResponse.VisitGetTitleResponse(ctx.Writer); err != nil {
} else if validResponse, ok := response.(GetTitlesResponseObject); ok {
if err := validResponse.VisitGetTitlesResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
@ -765,18 +1054,18 @@ func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) {
}
}
// GetTitleTitleId operation middleware
func (sh *strictHandler) GetTitleTitleId(ctx *gin.Context, titleId int64, params GetTitleTitleIdParams) {
var request GetTitleTitleIdRequestObject
// GetTitlesTitleId operation middleware
func (sh *strictHandler) GetTitlesTitleId(ctx *gin.Context, titleId int64, params GetTitlesTitleIdParams) {
var request GetTitlesTitleIdRequestObject
request.TitleId = titleId
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetTitleTitleId(ctx, request.(GetTitleTitleIdRequestObject))
return sh.ssi.GetTitlesTitleId(ctx, request.(GetTitlesTitleIdRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetTitleTitleId")
handler = middleware(handler, "GetTitlesTitleId")
}
response, err := handler(ctx, request)
@ -784,8 +1073,8 @@ func (sh *strictHandler) GetTitleTitleId(ctx *gin.Context, titleId int64, params
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetTitleTitleIdResponseObject); ok {
if err := validResponse.VisitGetTitleTitleIdResponse(ctx.Writer); err != nil {
} else if validResponse, ok := response.(GetTitlesTitleIdResponseObject); ok {
if err := validResponse.VisitGetTitlesTitleIdResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
@ -820,3 +1109,31 @@ func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetUsersUserIdTitles operation middleware
func (sh *strictHandler) GetUsersUserIdTitles(ctx *gin.Context, userId string, params GetUsersUserIdTitlesParams) {
var request GetUsersUserIdTitlesRequestObject
request.UserId = userId
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetUsersUserIdTitles(ctx, request.(GetUsersUserIdTitlesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetUsersUserIdTitles")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetUsersUserIdTitlesResponseObject); ok {
if err := validResponse.VisitGetUsersUserIdTitlesResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}

View file

@ -7,7 +7,7 @@ servers:
- url: /api/v1
paths:
/title:
/titles:
get:
summary: Get titles
parameters:
@ -66,7 +66,7 @@ paths:
'500':
description: Unknown server error
/title/{title_id}:
/titles/{title_id}:
get:
summary: Get title description
parameters:
@ -126,7 +126,7 @@ paths:
# user_json:
# $ref: '#/components/schemas/User'
# /title/{title_id}/reviews:
# /titles/{title_id}/reviews:
# get:
# summary: Get title reviews
# parameters:
@ -278,45 +278,50 @@ paths:
# user_json:
# $ref: '#/components/schemas/User'
# /users/{user_id}/titles:
# get:
# summary: Get user titles
# parameters:
# - in: path
# name: user_id
# required: true
# schema:
# type: string
# - in: query
# name: query
# schema:
# type: string
# - in: query
# name: limit
# schema:
# type: integer
# default: 10
# - in: query
# name: offset
# schema:
# type: integer
# default: 0
# - in: query
# name: fields
# schema:
# type: string
# default: all
# responses:
# '200':
# description: List of user titles
# content:
# application/json:
# schema:
# type: array
# items:
# $ref: '#/components/schemas/UserTitle'
# '204':
# description: No titles found
/users/{user_id}/titles/:
get:
summary: Get user titles
parameters:
- $ref: '#/components/parameters/cursor'
- in: path
name: user_id
required: true
schema:
type: string
- in: query
name: query
schema:
type: string
- in: query
name: limit
schema:
type: integer
default: 10
- in: query
name: offset
schema:
type: integer
default: 0
- in: query
name: fields
schema:
type: string
default: all
responses:
'200':
description: List of user titles
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserTitle'
'204':
description: No titles found
'400':
description: Request params are not correct
'500':
description: Unknown server error
# post:
# summary: Add user title
@ -571,6 +576,14 @@ paths:
# type: string
components:
parameters:
cursor:
in: query
name: cursor
required: false
schema:
type: string
schemas:
Image:
type: object
@ -769,7 +782,7 @@ components:
type: integer
format: int64
status:
$ref: '#components/schemas/UserTitleStatus'
$ref: '#/components/schemas/UserTitleStatus'
rate:
type: integer
format: int32