definitions: controllers.AddToCartRequest: properties: product_id: type: integer quantity: minimum: 1 type: integer required: - product_id - quantity type: object controllers.LoginRequest: properties: email: type: string password: type: string required: - email - password type: object controllers.RefreshRequest: properties: refresh_token: type: string required: - refresh_token type: object controllers.RegisterRequest: properties: email: type: string first_name: type: string last_name: type: string password: minLength: 6 type: string username: minLength: 3 type: string required: - email - first_name - last_name - password - username type: object controllers.ResendVerificationRequest: properties: email: type: string required: - email type: object controllers.UpdateCartItemRequest: properties: quantity: minimum: 1 type: integer required: - quantity type: object models.CartDoc: properties: id: type: integer items: items: $ref: '#/definitions/models.CartItemDoc' type: array user_id: type: integer type: object models.CartItemDoc: properties: cart_id: type: integer id: type: integer product: $ref: '#/definitions/models.ProductDoc' product_id: type: integer quantity: type: integer type: object models.CategoryDoc: properties: children: items: $ref: '#/definitions/models.CategoryDoc' type: array description: type: string id: type: integer parent_id: type: integer title: type: string type: object models.CommentDoc: properties: body: type: string id: type: integer post_id: type: integer user_id: type: integer type: object models.PostDoc: properties: categories: items: $ref: '#/definitions/models.CategoryDoc' type: array content: type: string id: type: integer images: items: type: string type: array tags: items: $ref: '#/definitions/models.TagDoc' type: array title: type: string type: object models.ProductCategoryDoc: properties: children: items: $ref: '#/definitions/models.ProductCategoryDoc' type: array description: type: string id: type: integer keywords: type: string parent_id: type: integer slug: type: string title: type: string type: object models.ProductCategoryViewDoc: properties: category_id: type: integer id: type: integer ip_address: type: string type: object models.ProductCommentDoc: properties: body: type: string id: type: integer product_id: type: integer user_id: type: integer type: object models.ProductDoc: properties: categories: items: $ref: '#/definitions/models.ProductCategoryDoc' type: array content: type: string format: type: string height: type: integer id: type: integer images: type: string price: type: number quality: type: integer slug: type: string tags: items: $ref: '#/definitions/models.ProductTagDoc' type: array title: type: string width: type: integer type: object models.ProductTagDoc: properties: id: type: integer name: type: string type: object models.TagDoc: properties: id: type: integer name: type: string type: object info: contact: {} paths: /api/v1/auth/login: post: consumes: - application/json parameters: - description: Login payload in: body name: request required: true schema: $ref: '#/definitions/controllers.LoginRequest' produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "400": description: Bad Request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object summary: Login user tags: - Auth /api/v1/auth/me: get: produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Get current user from token tags: - Auth /api/v1/auth/refresh: post: consumes: - application/json parameters: - description: Refresh payload in: body name: request required: true schema: $ref: '#/definitions/controllers.RefreshRequest' produces: - application/json responses: "200": description: OK schema: additionalProperties: type: string type: object "400": description: Bad Request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object summary: Refresh access token tags: - Auth /api/v1/auth/register: post: consumes: - application/json parameters: - description: Register payload in: body name: request required: true schema: $ref: '#/definitions/controllers.RegisterRequest' produces: - application/json responses: "201": description: Created schema: additionalProperties: true type: object "400": description: Bad Request schema: additionalProperties: type: string type: object "409": description: Conflict schema: additionalProperties: type: string type: object summary: Register user tags: - Auth /api/v1/auth/resend-verification: post: consumes: - application/json parameters: - description: Resend verification payload in: body name: request required: true schema: $ref: '#/definitions/controllers.ResendVerificationRequest' produces: - application/json responses: "200": description: OK schema: additionalProperties: type: string type: object "400": description: Bad Request schema: additionalProperties: type: string type: object "404": description: Not Found schema: additionalProperties: type: string type: object summary: Resend verification email tags: - Auth /api/v1/auth/verify-email: get: parameters: - description: Email verify token in: query name: token required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: type: string type: object "400": description: Bad Request schema: additionalProperties: type: string type: object "404": description: Not Found schema: additionalProperties: type: string type: object summary: Verify email address with token tags: - Auth /api/v1/cart: delete: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CartDoc' "401": description: Unauthorized schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Clear the entire cart tags: - Cart get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CartDoc' "401": description: Unauthorized schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Get the current user's cart tags: - Cart /api/v1/cart/items: post: consumes: - application/json parameters: - description: Cart Item Details in: body name: data required: true schema: $ref: '#/definitions/controllers.AddToCartRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CartDoc' "400": description: Bad Request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object "404": description: Not Found schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Add item to cart tags: - Cart /api/v1/cart/items/{item_id}: delete: parameters: - description: Cart Item ID in: path name: item_id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CartDoc' "400": description: Bad Request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object "404": description: Not Found schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Remove item from cart tags: - Cart put: consumes: - application/json parameters: - description: Cart Item ID in: path name: item_id required: true type: integer - description: Update Quantity in: body name: data required: true schema: $ref: '#/definitions/controllers.UpdateCartItemRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CartDoc' "400": description: Bad Request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object "404": description: Not Found schema: additionalProperties: type: string type: object security: - BearerAuth: [] summary: Update cart item quantity tags: - Cart /api/v1/categories: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.CategoryDoc' type: array summary: List categories (public) tags: - Categories /api/v1/categories/{slug}: get: parameters: - description: Category slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CategoryDoc' "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get single category (public) tags: - Categories /api/v1/comments: get: parameters: - description: Post ID in: query name: post_id required: true type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.CommentDoc' type: array summary: List comments for a post (public) tags: - Comments post: consumes: - application/json parameters: - description: Comment payload in: body name: data required: true schema: type: object produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/models.CommentDoc' "400": description: Bad Request schema: additionalProperties: type: string type: object summary: Create comment (public) tags: - Comments /api/v1/hero: get: produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get active hero/banner tags: - Hero /api/v1/heroes: get: description: Returns all hero/banner records (no filter) produces: - application/json responses: "200": description: OK schema: items: additionalProperties: true type: object type: array "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get all heroes tags: - Hero /api/v1/posts: get: parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object summary: List posts (public) with pagination tags: - Posts /api/v1/posts/{slug}: get: parameters: - description: Post slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.PostDoc' "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get single post (public) tags: - Posts /api/v1/product-categories/{id}/view: post: parameters: - description: Category ID in: path name: id required: true type: integer produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/models.ProductCategoryViewDoc' summary: Record a view for a product category tags: - Products /api/v1/products: get: parameters: - description: Page number in: query name: page type: integer - description: Items per page in: query name: per_page type: integer produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object summary: List products (public) with pagination tags: - Products /api/v1/products/{id}/comments: get: parameters: - description: Product ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.ProductCommentDoc' type: array summary: Get comments for a product tags: - Products /api/v1/products/{slug}: get: parameters: - description: Product slug in: path name: slug required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.ProductDoc' "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get single product (public) by slug tags: - Products /api/v1/setting: get: produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "404": description: Not Found schema: additionalProperties: type: string type: object summary: Get site settings tags: - Setting /api/v1/tags: get: produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.TagDoc' type: array summary: List tags (public) tags: - Tags securityDefinitions: BearerAuth: description: Enter your bearer token in the format 'Bearer {token}' in: header name: Authorization type: apiKey swagger: "2.0"