feat: add docs

This commit is contained in:
2025-11-02 22:29:24 -03:00
parent 3b1b05d5a6
commit 92f13fba22
7 changed files with 1070 additions and 8 deletions

375
docs/docs.go Normal file
View File

@@ -0,0 +1,375 @@
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"termsOfService": "http://swagger.io/terms/",
"contact": {
"name": "API Support",
"email": "support@yourapp.com"
},
"license": {
"name": "MIT",
"url": "https://opensource.org/licenses/MIT"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/contacts": {
"get": {
"description": "Get a list of all contacts",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Get all contacts",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/models.Contact"
}
}
}
}
]
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"post": {
"description": "Create a new contact with the provided data",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Create a new contact",
"parameters": [
{
"description": "Contact object",
"name": "contact",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Contact"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/models.Contact"
}
}
}
]
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
}
},
"/contacts/{id}": {
"get": {
"description": "Get a single contact by its ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Get a contact by ID",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/models.Contact"
}
}
}
]
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"put": {
"description": "Update an existing contact by ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Update a contact",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Contact object",
"name": "contact",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Contact"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"delete": {
"description": "Delete a contact by ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Delete a contact",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
}
}
},
"definitions": {
"handler.APIError": {
"type": "object",
"properties": {
"code": {
"description": "Error code",
"type": "integer"
},
"details": {
"description": "Additional error details",
"type": "string"
},
"message": {
"description": "Human-readable error message",
"type": "string"
}
}
},
"handler.APIResponse": {
"type": "object",
"properties": {
"data": {
"description": "The response data"
},
"errors": {
"description": "List of errors if any occurred",
"type": "array",
"items": {
"$ref": "#/definitions/handler.APIError"
}
},
"message": {
"description": "Optional message",
"type": "string"
},
"success": {
"description": "Indicates if the request was successful",
"type": "boolean"
}
}
},
"models.Contact": {
"type": "object",
"properties": {
"company": {
"description": "Company the contact works for",
"type": "string"
},
"id": {
"description": "ID is the unique identifier for the contact",
"type": "integer"
},
"name": {
"description": "Name of the contact",
"type": "string"
},
"phone": {
"description": "Phone number in international format",
"type": "string"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
Schemes: []string{},
Title: "Contacts API",
Description: "A simple Contacts CRUD API",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}

351
docs/swagger.json Normal file
View File

@@ -0,0 +1,351 @@
{
"swagger": "2.0",
"info": {
"description": "A simple Contacts CRUD API",
"title": "Contacts API",
"termsOfService": "http://swagger.io/terms/",
"contact": {
"name": "API Support",
"email": "support@yourapp.com"
},
"license": {
"name": "MIT",
"url": "https://opensource.org/licenses/MIT"
},
"version": "1.0"
},
"host": "localhost:8080",
"basePath": "/",
"paths": {
"/contacts": {
"get": {
"description": "Get a list of all contacts",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Get all contacts",
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/models.Contact"
}
}
}
}
]
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"post": {
"description": "Create a new contact with the provided data",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Create a new contact",
"parameters": [
{
"description": "Contact object",
"name": "contact",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Contact"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/models.Contact"
}
}
}
]
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
}
},
"/contacts/{id}": {
"get": {
"description": "Get a single contact by its ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Get a contact by ID",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/handler.APIResponse"
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/models.Contact"
}
}
}
]
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"put": {
"description": "Update an existing contact by ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Update a contact",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Contact object",
"name": "contact",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.Contact"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
},
"delete": {
"description": "Delete a contact by ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"contacts"
],
"summary": "Delete a contact",
"parameters": [
{
"type": "integer",
"description": "Contact ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/handler.APIResponse"
}
}
}
}
}
},
"definitions": {
"handler.APIError": {
"type": "object",
"properties": {
"code": {
"description": "Error code",
"type": "integer"
},
"details": {
"description": "Additional error details",
"type": "string"
},
"message": {
"description": "Human-readable error message",
"type": "string"
}
}
},
"handler.APIResponse": {
"type": "object",
"properties": {
"data": {
"description": "The response data"
},
"errors": {
"description": "List of errors if any occurred",
"type": "array",
"items": {
"$ref": "#/definitions/handler.APIError"
}
},
"message": {
"description": "Optional message",
"type": "string"
},
"success": {
"description": "Indicates if the request was successful",
"type": "boolean"
}
}
},
"models.Contact": {
"type": "object",
"properties": {
"company": {
"description": "Company the contact works for",
"type": "string"
},
"id": {
"description": "ID is the unique identifier for the contact",
"type": "integer"
},
"name": {
"description": "Name of the contact",
"type": "string"
},
"phone": {
"description": "Phone number in international format",
"type": "string"
}
}
}
}
}

227
docs/swagger.yaml Normal file
View File

@@ -0,0 +1,227 @@
basePath: /
definitions:
handler.APIError:
properties:
code:
description: Error code
type: integer
details:
description: Additional error details
type: string
message:
description: Human-readable error message
type: string
type: object
handler.APIResponse:
properties:
data:
description: The response data
errors:
description: List of errors if any occurred
items:
$ref: '#/definitions/handler.APIError'
type: array
message:
description: Optional message
type: string
success:
description: Indicates if the request was successful
type: boolean
type: object
models.Contact:
properties:
company:
description: Company the contact works for
type: string
id:
description: ID is the unique identifier for the contact
type: integer
name:
description: Name of the contact
type: string
phone:
description: Phone number in international format
type: string
type: object
host: localhost:8080
info:
contact:
email: support@yourapp.com
name: API Support
description: A simple Contacts CRUD API
license:
name: MIT
url: https://opensource.org/licenses/MIT
termsOfService: http://swagger.io/terms/
title: Contacts API
version: "1.0"
paths:
/contacts:
get:
consumes:
- application/json
description: Get a list of all contacts
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.APIResponse'
- properties:
data:
items:
$ref: '#/definitions/models.Contact'
type: array
type: object
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handler.APIResponse'
summary: Get all contacts
tags:
- contacts
post:
consumes:
- application/json
description: Create a new contact with the provided data
parameters:
- description: Contact object
in: body
name: contact
required: true
schema:
$ref: '#/definitions/models.Contact'
produces:
- application/json
responses:
"201":
description: Created
schema:
allOf:
- $ref: '#/definitions/handler.APIResponse'
- properties:
data:
$ref: '#/definitions/models.Contact'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/handler.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handler.APIResponse'
summary: Create a new contact
tags:
- contacts
/contacts/{id}:
delete:
consumes:
- application/json
description: Delete a contact by ID
parameters:
- description: Contact ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.APIResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/handler.APIResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/handler.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handler.APIResponse'
summary: Delete a contact
tags:
- contacts
get:
consumes:
- application/json
description: Get a single contact by its ID
parameters:
- description: Contact ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.APIResponse'
- properties:
data:
$ref: '#/definitions/models.Contact'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/handler.APIResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/handler.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handler.APIResponse'
summary: Get a contact by ID
tags:
- contacts
put:
consumes:
- application/json
description: Update an existing contact by ID
parameters:
- description: Contact ID
in: path
name: id
required: true
type: integer
- description: Contact object
in: body
name: contact
required: true
schema:
$ref: '#/definitions/models.Contact'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.APIResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/handler.APIResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/handler.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/handler.APIResponse'
summary: Update a contact
tags:
- contacts
swagger: "2.0"