diff --git a/backend/.env.example b/backend/.env.example index 700e5ad..f13e944 100755 --- a/backend/.env.example +++ b/backend/.env.example @@ -6,9 +6,9 @@ DB_PORT=5432 DB_USER=postgres DB_PASSWORD=yourpassword DB_NAME=gohorsejobs -DB_SSLMODE=require +DB_SSLMODE=disable -# S3/Object Storage Configuration (S3-compatible) +# S3/Object Storage Configuration (Civo S3-compatible) AWS_REGION=nyc1 AWS_ACCESS_KEY_ID=your-access-key AWS_SECRET_ACCESS_KEY=your-secret-key @@ -23,7 +23,7 @@ PORT=8521 ENV=development # CORS Origins (comma-separated) -CORS_ORIGINS=http://localhost:8963 +CORS_ORIGINS=http://localhost:3000,http://localhost:8963 # File Upload MAX_UPLOAD_SIZE=10485760 diff --git a/backend/cmd/api/main.go b/backend/cmd/api/main.go index 8fb0eec..0d523aa 100755 --- a/backend/cmd/api/main.go +++ b/backend/cmd/api/main.go @@ -13,7 +13,7 @@ import ( // @title GoHorseJobs API // @version 1.0 // @description API for GoHorseJobs recruitment platform. -// @host localhost:8080 +// @host localhost:8521 // @BasePath / func main() { // Load .env file @@ -37,7 +37,7 @@ func main() { port := os.Getenv("PORT") if port == "" { - port = "8080" + port = "8521" } log.Println("Starting server on :" + port) diff --git a/backend/docs/docs.go b/backend/docs/docs.go index 732f4ad..464e0f9 100644 --- a/backend/docs/docs.go +++ b/backend/docs/docs.go @@ -37,7 +37,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "500": { @@ -74,7 +74,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeHostsRequest" + "$ref": "#/definitions/cloudflare.PurgeHostsRequest" } } ], @@ -82,7 +82,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -125,7 +125,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeTagsRequest" + "$ref": "#/definitions/cloudflare.PurgeTagsRequest" } } ], @@ -133,7 +133,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -176,7 +176,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeURLsRequest" + "$ref": "#/definitions/cloudflare.PurgeURLsRequest" } } ], @@ -184,7 +184,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -226,7 +226,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/internal_admin_cloudflare.Zone" + "$ref": "#/definitions/cloudflare.Zone" } } }, @@ -271,7 +271,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/internal_admin_cpanel.EmailAccount" + "$ref": "#/definitions/cpanel.EmailAccount" } } }, @@ -307,7 +307,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.CreateEmailRequest" + "$ref": "#/definitions/cpanel.CreateEmailRequest" } } ], @@ -420,7 +420,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.ChangePasswordRequest" + "$ref": "#/definitions/cpanel.ChangePasswordRequest" } } ], @@ -481,7 +481,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.UpdateQuotaRequest" + "$ref": "#/definitions/cpanel.UpdateQuotaRequest" } } ], @@ -530,7 +530,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest" + "$ref": "#/definitions/dto.LoginRequest" } } ], @@ -538,7 +538,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse" + "$ref": "#/definitions/dto.AuthResponse" } }, "400": { @@ -575,7 +575,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse" + "$ref": "#/definitions/dto.CompanyResponse" } } }, @@ -606,7 +606,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest" + "$ref": "#/definitions/dto.CreateCompanyRequest" } } ], @@ -614,7 +614,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse" + "$ref": "#/definitions/dto.CompanyResponse" } }, "400": { @@ -657,7 +657,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_handlers.DownloadURLRequest" + "$ref": "#/definitions/handlers.DownloadURLRequest" } } ], @@ -665,7 +665,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_handlers.DownloadURLResponse" + "$ref": "#/definitions/handlers.DownloadURLResponse" } }, "400": { @@ -754,7 +754,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_handlers.UploadURLRequest" + "$ref": "#/definitions/handlers.UploadURLRequest" } } ], @@ -762,7 +762,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_handlers.UploadURLResponse" + "$ref": "#/definitions/handlers.UploadURLResponse" } }, "400": { @@ -804,7 +804,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } } }, @@ -846,7 +846,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest" + "$ref": "#/definitions/dto.CreateUserRequest" } } ], @@ -854,7 +854,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } }, "400": { @@ -955,7 +955,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } } }, @@ -992,7 +992,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest" + "$ref": "#/definitions/dto.CreateApplicationRequest" } } ], @@ -1000,7 +1000,7 @@ const docTemplate = `{ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1044,7 +1044,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1089,7 +1089,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest" + "$ref": "#/definitions/dto.UpdateApplicationStatusRequest" } } ], @@ -1097,7 +1097,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1158,7 +1158,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse" + "$ref": "#/definitions/dto.PaginatedResponse" } }, "500": { @@ -1188,7 +1188,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest" + "$ref": "#/definitions/dto.CreateJobRequest" } } ], @@ -1196,7 +1196,7 @@ const docTemplate = `{ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1240,7 +1240,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1283,7 +1283,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest" + "$ref": "#/definitions/dto.UpdateJobRequest" } } ], @@ -1291,7 +1291,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1350,18 +1350,162 @@ const docTemplate = `{ } }, "definitions": { - "github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse": { + "cloudflare.Error": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } + }, + "cloudflare.PurgeHostsRequest": { + "type": "object", + "properties": { + "hosts": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.PurgeResponse": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/cloudflare.Error" + } + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "result": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "success": { + "type": "boolean" + } + } + }, + "cloudflare.PurgeTagsRequest": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.PurgeURLsRequest": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.Zone": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + } + } + }, + "cpanel.ChangePasswordRequest": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + }, + "cpanel.CreateEmailRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "password": { + "type": "string" + }, + "quota": { + "description": "MB, 0 = unlimited", + "type": "integer" + } + } + }, + "cpanel.EmailAccount": { + "type": "object", + "properties": { + "diskquota": { + "type": "string" + }, + "diskused": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "email": { + "type": "string" + }, + "humandiskquota": { + "type": "string" + }, + "humandiskused": { + "type": "string" + }, + "login": { + "type": "string" + } + } + }, + "cpanel.UpdateQuotaRequest": { + "type": "object", + "properties": { + "quota": { + "description": "MB", + "type": "integer" + } + } + }, + "dto.AuthResponse": { "type": "object", "properties": { "token": { "type": "string" }, "user": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } } }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse": { + "dto.CompanyResponse": { "type": "object", "properties": { "created_at": { @@ -1378,82 +1522,7 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest": { - "type": "object", - "properties": { - "admin_email": { - "type": "string" - }, - "contact": { - "type": "string" - }, - "document": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "roles": { - "description": "e.g. [\"RECRUITER\"]", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse": { - "type": "object", - "properties": { - "created_at": { - "type": "string" - }, - "email": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "status": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest": { + "dto.CreateApplicationRequest": { "type": "object", "required": [ "jobId" @@ -1492,7 +1561,56 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest": { + "dto.CreateCompanyRequest": { + "type": "object", + "required": [ + "name", + "slug" + ], + "properties": { + "address": { + "type": "string" + }, + "cityId": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "document": { + "type": "string" + }, + "email": { + "type": "string" + }, + "logoUrl": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255, + "minLength": 3 + }, + "phone": { + "type": "string" + }, + "regionId": { + "type": "integer" + }, + "slug": { + "type": "string", + "maxLength": 255, + "minLength": 3 + }, + "type": { + "type": "string" + }, + "website": { + "type": "string" + } + } + }, + "dto.CreateJobRequest": { "type": "object", "required": [ "companyId", @@ -1571,16 +1689,54 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse": { + "dto.CreateUserRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "roles": { + "description": "e.g. [\"RECRUITER\"]", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "dto.LoginRequest": { + "type": "object", + "required": [ + "identifier", + "password" + ], + "properties": { + "identifier": { + "type": "string", + "minLength": 3 + }, + "password": { + "type": "string", + "minLength": 8 + } + } + }, + "dto.PaginatedResponse": { "type": "object", "properties": { "data": {}, "pagination": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.Pagination" + "$ref": "#/definitions/dto.Pagination" } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.Pagination": { + "dto.Pagination": { "type": "object", "properties": { "limit": { @@ -1594,7 +1750,7 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest": { + "dto.UpdateApplicationStatusRequest": { "type": "object", "required": [ "status" @@ -1615,7 +1771,7 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest": { + "dto.UpdateJobRequest": { "type": "object", "properties": { "benefits": { @@ -1686,7 +1842,86 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_models.Application": { + "dto.UserResponse": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "email": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "type": "string" + } + } + }, + "handlers.DownloadURLRequest": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "handlers.DownloadURLResponse": { + "type": "object", + "properties": { + "downloadUrl": { + "type": "string" + }, + "expiresIn": { + "description": "seconds", + "type": "integer" + } + } + }, + "handlers.UploadURLRequest": { + "type": "object", + "properties": { + "contentType": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "folder": { + "description": "Optional: logos, resumes, documents", + "type": "string" + } + } + }, + "handlers.UploadURLResponse": { + "type": "object", + "properties": { + "expiresIn": { + "description": "seconds", + "type": "integer" + }, + "key": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "uploadUrl": { + "type": "string" + } + } + }, + "models.Application": { "type": "object", "properties": { "createdAt": { @@ -1697,7 +1932,7 @@ const docTemplate = `{ "description": "Array of {type, url}", "allOf": [ { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" } ] }, @@ -1746,15 +1981,15 @@ const docTemplate = `{ } } }, - "github_com_rede5_gohorsejobs_backend_internal_models.JSONMap": { + "models.JSONMap": { "type": "object", "additionalProperties": true }, - "github_com_rede5_gohorsejobs_backend_internal_models.Job": { + "models.Job": { "type": "object", "properties": { "benefits": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" }, "cityId": { "type": "integer" @@ -1798,7 +2033,7 @@ const docTemplate = `{ "description": "Requirements \u0026 Benefits (JSONB arrays)", "allOf": [ { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" } ] }, @@ -1832,203 +2067,6 @@ const docTemplate = `{ "type": "string" } } - }, - "internal_admin_cloudflare.Error": { - "type": "object", - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - } - } - }, - "internal_admin_cloudflare.PurgeHostsRequest": { - "type": "object", - "properties": { - "hosts": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.PurgeResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/internal_admin_cloudflare.Error" - } - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "result": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "success": { - "type": "boolean" - } - } - }, - "internal_admin_cloudflare.PurgeTagsRequest": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.PurgeURLsRequest": { - "type": "object", - "properties": { - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.Zone": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "type": "string" - } - } - }, - "internal_admin_cpanel.ChangePasswordRequest": { - "type": "object", - "properties": { - "password": { - "type": "string" - } - } - }, - "internal_admin_cpanel.CreateEmailRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string" - }, - "quota": { - "description": "MB, 0 = unlimited", - "type": "integer" - } - } - }, - "internal_admin_cpanel.EmailAccount": { - "type": "object", - "properties": { - "diskquota": { - "type": "string" - }, - "diskused": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "email": { - "type": "string" - }, - "humandiskquota": { - "type": "string" - }, - "humandiskused": { - "type": "string" - }, - "login": { - "type": "string" - } - } - }, - "internal_admin_cpanel.UpdateQuotaRequest": { - "type": "object", - "properties": { - "quota": { - "description": "MB", - "type": "integer" - } - } - }, - "internal_handlers.DownloadURLRequest": { - "type": "object", - "properties": { - "key": { - "type": "string" - } - } - }, - "internal_handlers.DownloadURLResponse": { - "type": "object", - "properties": { - "downloadUrl": { - "type": "string" - }, - "expiresIn": { - "description": "seconds", - "type": "integer" - } - } - }, - "internal_handlers.UploadURLRequest": { - "type": "object", - "properties": { - "contentType": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "folder": { - "description": "Optional: logos, resumes, documents", - "type": "string" - } - } - }, - "internal_handlers.UploadURLResponse": { - "type": "object", - "properties": { - "expiresIn": { - "description": "seconds", - "type": "integer" - }, - "key": { - "type": "string" - }, - "publicUrl": { - "type": "string" - }, - "uploadUrl": { - "type": "string" - } - } } } }` @@ -2036,7 +2074,7 @@ const docTemplate = `{ // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0", - Host: "localhost:8080", + Host: "localhost:8521", BasePath: "/", Schemes: []string{}, Title: "GoHorseJobs API", diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json index 9eed5fa..bd3d53e 100644 --- a/backend/docs/swagger.json +++ b/backend/docs/swagger.json @@ -6,7 +6,7 @@ "contact": {}, "version": "1.0" }, - "host": "localhost:8080", + "host": "localhost:8521", "basePath": "/", "paths": { "/api/v1/admin/cloudflare/cache/purge-all": { @@ -31,7 +31,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "500": { @@ -68,7 +68,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeHostsRequest" + "$ref": "#/definitions/cloudflare.PurgeHostsRequest" } } ], @@ -76,7 +76,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -119,7 +119,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeTagsRequest" + "$ref": "#/definitions/cloudflare.PurgeTagsRequest" } } ], @@ -127,7 +127,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -170,7 +170,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeURLsRequest" + "$ref": "#/definitions/cloudflare.PurgeURLsRequest" } } ], @@ -178,7 +178,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_admin_cloudflare.PurgeResponse" + "$ref": "#/definitions/cloudflare.PurgeResponse" } }, "400": { @@ -220,7 +220,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/internal_admin_cloudflare.Zone" + "$ref": "#/definitions/cloudflare.Zone" } } }, @@ -265,7 +265,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/internal_admin_cpanel.EmailAccount" + "$ref": "#/definitions/cpanel.EmailAccount" } } }, @@ -301,7 +301,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.CreateEmailRequest" + "$ref": "#/definitions/cpanel.CreateEmailRequest" } } ], @@ -414,7 +414,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.ChangePasswordRequest" + "$ref": "#/definitions/cpanel.ChangePasswordRequest" } } ], @@ -475,7 +475,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_admin_cpanel.UpdateQuotaRequest" + "$ref": "#/definitions/cpanel.UpdateQuotaRequest" } } ], @@ -524,7 +524,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest" + "$ref": "#/definitions/dto.LoginRequest" } } ], @@ -532,7 +532,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse" + "$ref": "#/definitions/dto.AuthResponse" } }, "400": { @@ -569,7 +569,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse" + "$ref": "#/definitions/dto.CompanyResponse" } } }, @@ -600,7 +600,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest" + "$ref": "#/definitions/dto.CreateCompanyRequest" } } ], @@ -608,7 +608,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse" + "$ref": "#/definitions/dto.CompanyResponse" } }, "400": { @@ -651,7 +651,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_handlers.DownloadURLRequest" + "$ref": "#/definitions/handlers.DownloadURLRequest" } } ], @@ -659,7 +659,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_handlers.DownloadURLResponse" + "$ref": "#/definitions/handlers.DownloadURLResponse" } }, "400": { @@ -748,7 +748,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/internal_handlers.UploadURLRequest" + "$ref": "#/definitions/handlers.UploadURLRequest" } } ], @@ -756,7 +756,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/internal_handlers.UploadURLResponse" + "$ref": "#/definitions/handlers.UploadURLResponse" } }, "400": { @@ -798,7 +798,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } } }, @@ -840,7 +840,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest" + "$ref": "#/definitions/dto.CreateUserRequest" } } ], @@ -848,7 +848,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } }, "400": { @@ -949,7 +949,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } } }, @@ -986,7 +986,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest" + "$ref": "#/definitions/dto.CreateApplicationRequest" } } ], @@ -994,7 +994,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1038,7 +1038,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1083,7 +1083,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest" + "$ref": "#/definitions/dto.UpdateApplicationStatusRequest" } } ], @@ -1091,7 +1091,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application" + "$ref": "#/definitions/models.Application" } }, "400": { @@ -1152,7 +1152,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse" + "$ref": "#/definitions/dto.PaginatedResponse" } }, "500": { @@ -1182,7 +1182,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest" + "$ref": "#/definitions/dto.CreateJobRequest" } } ], @@ -1190,7 +1190,7 @@ "201": { "description": "Created", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1234,7 +1234,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1277,7 +1277,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest" + "$ref": "#/definitions/dto.UpdateJobRequest" } } ], @@ -1285,7 +1285,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job" + "$ref": "#/definitions/models.Job" } }, "400": { @@ -1344,18 +1344,162 @@ } }, "definitions": { - "github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse": { + "cloudflare.Error": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } + }, + "cloudflare.PurgeHostsRequest": { + "type": "object", + "properties": { + "hosts": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.PurgeResponse": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/cloudflare.Error" + } + }, + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "result": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "success": { + "type": "boolean" + } + } + }, + "cloudflare.PurgeTagsRequest": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.PurgeURLsRequest": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cloudflare.Zone": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + } + } + }, + "cpanel.ChangePasswordRequest": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + }, + "cpanel.CreateEmailRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "password": { + "type": "string" + }, + "quota": { + "description": "MB, 0 = unlimited", + "type": "integer" + } + } + }, + "cpanel.EmailAccount": { + "type": "object", + "properties": { + "diskquota": { + "type": "string" + }, + "diskused": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "email": { + "type": "string" + }, + "humandiskquota": { + "type": "string" + }, + "humandiskused": { + "type": "string" + }, + "login": { + "type": "string" + } + } + }, + "cpanel.UpdateQuotaRequest": { + "type": "object", + "properties": { + "quota": { + "description": "MB", + "type": "integer" + } + } + }, + "dto.AuthResponse": { "type": "object", "properties": { "token": { "type": "string" }, "user": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse" + "$ref": "#/definitions/dto.UserResponse" } } }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse": { + "dto.CompanyResponse": { "type": "object", "properties": { "created_at": { @@ -1372,82 +1516,7 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest": { - "type": "object", - "properties": { - "admin_email": { - "type": "string" - }, - "contact": { - "type": "string" - }, - "document": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "roles": { - "description": "e.g. [\"RECRUITER\"]", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse": { - "type": "object", - "properties": { - "created_at": { - "type": "string" - }, - "email": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "status": { - "type": "string" - } - } - }, - "github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest": { + "dto.CreateApplicationRequest": { "type": "object", "required": [ "jobId" @@ -1486,7 +1555,56 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest": { + "dto.CreateCompanyRequest": { + "type": "object", + "required": [ + "name", + "slug" + ], + "properties": { + "address": { + "type": "string" + }, + "cityId": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "document": { + "type": "string" + }, + "email": { + "type": "string" + }, + "logoUrl": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255, + "minLength": 3 + }, + "phone": { + "type": "string" + }, + "regionId": { + "type": "integer" + }, + "slug": { + "type": "string", + "maxLength": 255, + "minLength": 3 + }, + "type": { + "type": "string" + }, + "website": { + "type": "string" + } + } + }, + "dto.CreateJobRequest": { "type": "object", "required": [ "companyId", @@ -1565,16 +1683,54 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse": { + "dto.CreateUserRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "roles": { + "description": "e.g. [\"RECRUITER\"]", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "dto.LoginRequest": { + "type": "object", + "required": [ + "identifier", + "password" + ], + "properties": { + "identifier": { + "type": "string", + "minLength": 3 + }, + "password": { + "type": "string", + "minLength": 8 + } + } + }, + "dto.PaginatedResponse": { "type": "object", "properties": { "data": {}, "pagination": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.Pagination" + "$ref": "#/definitions/dto.Pagination" } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.Pagination": { + "dto.Pagination": { "type": "object", "properties": { "limit": { @@ -1588,7 +1744,7 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest": { + "dto.UpdateApplicationStatusRequest": { "type": "object", "required": [ "status" @@ -1609,7 +1765,7 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest": { + "dto.UpdateJobRequest": { "type": "object", "properties": { "benefits": { @@ -1680,7 +1836,86 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_models.Application": { + "dto.UserResponse": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "email": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "type": "string" + } + } + }, + "handlers.DownloadURLRequest": { + "type": "object", + "properties": { + "key": { + "type": "string" + } + } + }, + "handlers.DownloadURLResponse": { + "type": "object", + "properties": { + "downloadUrl": { + "type": "string" + }, + "expiresIn": { + "description": "seconds", + "type": "integer" + } + } + }, + "handlers.UploadURLRequest": { + "type": "object", + "properties": { + "contentType": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "folder": { + "description": "Optional: logos, resumes, documents", + "type": "string" + } + } + }, + "handlers.UploadURLResponse": { + "type": "object", + "properties": { + "expiresIn": { + "description": "seconds", + "type": "integer" + }, + "key": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "uploadUrl": { + "type": "string" + } + } + }, + "models.Application": { "type": "object", "properties": { "createdAt": { @@ -1691,7 +1926,7 @@ "description": "Array of {type, url}", "allOf": [ { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" } ] }, @@ -1740,15 +1975,15 @@ } } }, - "github_com_rede5_gohorsejobs_backend_internal_models.JSONMap": { + "models.JSONMap": { "type": "object", "additionalProperties": true }, - "github_com_rede5_gohorsejobs_backend_internal_models.Job": { + "models.Job": { "type": "object", "properties": { "benefits": { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" }, "cityId": { "type": "integer" @@ -1792,7 +2027,7 @@ "description": "Requirements \u0026 Benefits (JSONB arrays)", "allOf": [ { - "$ref": "#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap" + "$ref": "#/definitions/models.JSONMap" } ] }, @@ -1826,203 +2061,6 @@ "type": "string" } } - }, - "internal_admin_cloudflare.Error": { - "type": "object", - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - } - } - }, - "internal_admin_cloudflare.PurgeHostsRequest": { - "type": "object", - "properties": { - "hosts": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.PurgeResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/internal_admin_cloudflare.Error" - } - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "result": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "success": { - "type": "boolean" - } - } - }, - "internal_admin_cloudflare.PurgeTagsRequest": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.PurgeURLsRequest": { - "type": "object", - "properties": { - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "internal_admin_cloudflare.Zone": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "type": "string" - } - } - }, - "internal_admin_cpanel.ChangePasswordRequest": { - "type": "object", - "properties": { - "password": { - "type": "string" - } - } - }, - "internal_admin_cpanel.CreateEmailRequest": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string" - }, - "quota": { - "description": "MB, 0 = unlimited", - "type": "integer" - } - } - }, - "internal_admin_cpanel.EmailAccount": { - "type": "object", - "properties": { - "diskquota": { - "type": "string" - }, - "diskused": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "email": { - "type": "string" - }, - "humandiskquota": { - "type": "string" - }, - "humandiskused": { - "type": "string" - }, - "login": { - "type": "string" - } - } - }, - "internal_admin_cpanel.UpdateQuotaRequest": { - "type": "object", - "properties": { - "quota": { - "description": "MB", - "type": "integer" - } - } - }, - "internal_handlers.DownloadURLRequest": { - "type": "object", - "properties": { - "key": { - "type": "string" - } - } - }, - "internal_handlers.DownloadURLResponse": { - "type": "object", - "properties": { - "downloadUrl": { - "type": "string" - }, - "expiresIn": { - "description": "seconds", - "type": "integer" - } - } - }, - "internal_handlers.UploadURLRequest": { - "type": "object", - "properties": { - "contentType": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "folder": { - "description": "Optional: logos, resumes, documents", - "type": "string" - } - } - }, - "internal_handlers.UploadURLResponse": { - "type": "object", - "properties": { - "expiresIn": { - "description": "seconds", - "type": "integer" - }, - "key": { - "type": "string" - }, - "publicUrl": { - "type": "string" - }, - "uploadUrl": { - "type": "string" - } - } } } } \ No newline at end of file diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml index acb8dee..7d63109 100644 --- a/backend/docs/swagger.yaml +++ b/backend/docs/swagger.yaml @@ -1,13 +1,106 @@ basePath: / definitions: - github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse: + cloudflare.Error: + properties: + code: + type: integer + message: + type: string + type: object + cloudflare.PurgeHostsRequest: + properties: + hosts: + items: + type: string + type: array + type: object + cloudflare.PurgeResponse: + properties: + errors: + items: + $ref: '#/definitions/cloudflare.Error' + type: array + messages: + items: + type: string + type: array + result: + properties: + id: + type: string + type: object + success: + type: boolean + type: object + cloudflare.PurgeTagsRequest: + properties: + tags: + items: + type: string + type: array + type: object + cloudflare.PurgeURLsRequest: + properties: + urls: + items: + type: string + type: array + type: object + cloudflare.Zone: + properties: + id: + type: string + name: + type: string + status: + type: string + type: object + cpanel.ChangePasswordRequest: + properties: + password: + type: string + type: object + cpanel.CreateEmailRequest: + properties: + email: + type: string + password: + type: string + quota: + description: MB, 0 = unlimited + type: integer + type: object + cpanel.EmailAccount: + properties: + diskquota: + type: string + diskused: + type: string + domain: + type: string + email: + type: string + humandiskquota: + type: string + humandiskused: + type: string + login: + type: string + type: object + cpanel.UpdateQuotaRequest: + properties: + quota: + description: MB + type: integer + type: object + dto.AuthResponse: properties: token: type: string user: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse' + $ref: '#/definitions/dto.UserResponse' type: object - github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse: + dto.CompanyResponse: properties: created_at: type: string @@ -18,56 +111,7 @@ definitions: status: type: string type: object - github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest: - properties: - admin_email: - type: string - contact: - type: string - document: - type: string - name: - type: string - type: object - github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest: - properties: - email: - type: string - name: - type: string - password: - type: string - roles: - description: e.g. ["RECRUITER"] - items: - type: string - type: array - type: object - github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest: - properties: - email: - type: string - password: - type: string - type: object - github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse: - properties: - created_at: - type: string - email: - type: string - id: - type: string - name: - type: string - roles: - items: - type: string - type: array - status: - type: string - type: object - github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest: + dto.CreateApplicationRequest: properties: documents: additionalProperties: true @@ -93,7 +137,41 @@ definitions: required: - jobId type: object - github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest: + dto.CreateCompanyRequest: + properties: + address: + type: string + cityId: + type: integer + description: + type: string + document: + type: string + email: + type: string + logoUrl: + type: string + name: + maxLength: 255 + minLength: 3 + type: string + phone: + type: string + regionId: + type: integer + slug: + maxLength: 255 + minLength: 3 + type: string + type: + type: string + website: + type: string + required: + - name + - slug + type: object + dto.CreateJobRequest: properties: benefits: additionalProperties: true @@ -150,13 +228,39 @@ definitions: - description - title type: object - github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse: + dto.CreateUserRequest: + properties: + email: + type: string + name: + type: string + password: + type: string + roles: + description: e.g. ["RECRUITER"] + items: + type: string + type: array + type: object + dto.LoginRequest: + properties: + identifier: + minLength: 3 + type: string + password: + minLength: 8 + type: string + required: + - identifier + - password + type: object + dto.PaginatedResponse: properties: data: {} pagination: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.Pagination' + $ref: '#/definitions/dto.Pagination' type: object - github_com_rede5_gohorsejobs_backend_internal_dto.Pagination: + dto.Pagination: properties: limit: type: integer @@ -165,7 +269,7 @@ definitions: total: type: integer type: object - github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest: + dto.UpdateApplicationStatusRequest: properties: notes: type: string @@ -180,7 +284,7 @@ definitions: required: - status type: object - github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest: + dto.UpdateJobRequest: properties: benefits: additionalProperties: true @@ -231,14 +335,66 @@ definitions: workingHours: type: string type: object - github_com_rede5_gohorsejobs_backend_internal_models.Application: + dto.UserResponse: + properties: + created_at: + type: string + email: + type: string + id: + type: string + name: + type: string + roles: + items: + type: string + type: array + status: + type: string + type: object + handlers.DownloadURLRequest: + properties: + key: + type: string + type: object + handlers.DownloadURLResponse: + properties: + downloadUrl: + type: string + expiresIn: + description: seconds + type: integer + type: object + handlers.UploadURLRequest: + properties: + contentType: + type: string + filename: + type: string + folder: + description: 'Optional: logos, resumes, documents' + type: string + type: object + handlers.UploadURLResponse: + properties: + expiresIn: + description: seconds + type: integer + key: + type: string + publicUrl: + type: string + uploadUrl: + type: string + type: object + models.Application: properties: createdAt: description: Metadata type: string documents: allOf: - - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap' + - $ref: '#/definitions/models.JSONMap' description: Array of {type, url} email: type: string @@ -271,13 +427,13 @@ definitions: whatsapp: type: string type: object - github_com_rede5_gohorsejobs_backend_internal_models.JSONMap: + models.JSONMap: additionalProperties: true type: object - github_com_rede5_gohorsejobs_backend_internal_models.Job: + models.Job: properties: benefits: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap' + $ref: '#/definitions/models.JSONMap' cityId: type: integer companyId: @@ -307,7 +463,7 @@ definitions: type: integer requirements: allOf: - - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap' + - $ref: '#/definitions/models.JSONMap' description: Requirements & Benefits (JSONB arrays) salaryMax: type: number @@ -331,135 +487,7 @@ definitions: workingHours: type: string type: object - internal_admin_cloudflare.Error: - properties: - code: - type: integer - message: - type: string - type: object - internal_admin_cloudflare.PurgeHostsRequest: - properties: - hosts: - items: - type: string - type: array - type: object - internal_admin_cloudflare.PurgeResponse: - properties: - errors: - items: - $ref: '#/definitions/internal_admin_cloudflare.Error' - type: array - messages: - items: - type: string - type: array - result: - properties: - id: - type: string - type: object - success: - type: boolean - type: object - internal_admin_cloudflare.PurgeTagsRequest: - properties: - tags: - items: - type: string - type: array - type: object - internal_admin_cloudflare.PurgeURLsRequest: - properties: - urls: - items: - type: string - type: array - type: object - internal_admin_cloudflare.Zone: - properties: - id: - type: string - name: - type: string - status: - type: string - type: object - internal_admin_cpanel.ChangePasswordRequest: - properties: - password: - type: string - type: object - internal_admin_cpanel.CreateEmailRequest: - properties: - email: - type: string - password: - type: string - quota: - description: MB, 0 = unlimited - type: integer - type: object - internal_admin_cpanel.EmailAccount: - properties: - diskquota: - type: string - diskused: - type: string - domain: - type: string - email: - type: string - humandiskquota: - type: string - humandiskused: - type: string - login: - type: string - type: object - internal_admin_cpanel.UpdateQuotaRequest: - properties: - quota: - description: MB - type: integer - type: object - internal_handlers.DownloadURLRequest: - properties: - key: - type: string - type: object - internal_handlers.DownloadURLResponse: - properties: - downloadUrl: - type: string - expiresIn: - description: seconds - type: integer - type: object - internal_handlers.UploadURLRequest: - properties: - contentType: - type: string - filename: - type: string - folder: - description: 'Optional: logos, resumes, documents' - type: string - type: object - internal_handlers.UploadURLResponse: - properties: - expiresIn: - description: seconds - type: integer - key: - type: string - publicUrl: - type: string - uploadUrl: - type: string - type: object -host: localhost:8080 +host: localhost:8521 info: contact: {} description: API for GoHorseJobs recruitment platform. @@ -477,7 +505,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse' + $ref: '#/definitions/cloudflare.PurgeResponse' "500": description: Internal Server Error schema: @@ -498,14 +526,14 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeHostsRequest' + $ref: '#/definitions/cloudflare.PurgeHostsRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse' + $ref: '#/definitions/cloudflare.PurgeResponse' "400": description: Bad Request schema: @@ -530,14 +558,14 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeTagsRequest' + $ref: '#/definitions/cloudflare.PurgeTagsRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse' + $ref: '#/definitions/cloudflare.PurgeResponse' "400": description: Bad Request schema: @@ -562,14 +590,14 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeURLsRequest' + $ref: '#/definitions/cloudflare.PurgeURLsRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse' + $ref: '#/definitions/cloudflare.PurgeResponse' "400": description: Bad Request schema: @@ -595,7 +623,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/internal_admin_cloudflare.Zone' + $ref: '#/definitions/cloudflare.Zone' type: array "500": description: Internal Server Error @@ -623,7 +651,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/internal_admin_cpanel.EmailAccount' + $ref: '#/definitions/cpanel.EmailAccount' type: array "500": description: Internal Server Error @@ -644,7 +672,7 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cpanel.CreateEmailRequest' + $ref: '#/definitions/cpanel.CreateEmailRequest' produces: - application/json responses: @@ -716,7 +744,7 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cpanel.ChangePasswordRequest' + $ref: '#/definitions/cpanel.ChangePasswordRequest' produces: - application/json responses: @@ -755,7 +783,7 @@ paths: name: body required: true schema: - $ref: '#/definitions/internal_admin_cpanel.UpdateQuotaRequest' + $ref: '#/definitions/cpanel.UpdateQuotaRequest' produces: - application/json responses: @@ -790,14 +818,14 @@ paths: name: login required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest' + $ref: '#/definitions/dto.LoginRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse' + $ref: '#/definitions/dto.AuthResponse' "400": description: Invalid Request schema: @@ -821,7 +849,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse' + $ref: '#/definitions/dto.CompanyResponse' type: array "500": description: Internal Server Error @@ -840,14 +868,14 @@ paths: name: company required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest' + $ref: '#/definitions/dto.CreateCompanyRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse' + $ref: '#/definitions/dto.CompanyResponse' "400": description: Invalid Request schema: @@ -870,14 +898,14 @@ paths: name: request required: true schema: - $ref: '#/definitions/internal_handlers.DownloadURLRequest' + $ref: '#/definitions/handlers.DownloadURLRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/internal_handlers.DownloadURLResponse' + $ref: '#/definitions/handlers.DownloadURLResponse' "400": description: Bad Request schema: @@ -931,14 +959,14 @@ paths: name: request required: true schema: - $ref: '#/definitions/internal_handlers.UploadURLRequest' + $ref: '#/definitions/handlers.UploadURLRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/internal_handlers.UploadURLResponse' + $ref: '#/definitions/handlers.UploadURLResponse' "400": description: Bad Request schema: @@ -964,7 +992,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse' + $ref: '#/definitions/dto.UserResponse' type: array "403": description: Forbidden @@ -989,14 +1017,14 @@ paths: name: user required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest' + $ref: '#/definitions/dto.CreateUserRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse' + $ref: '#/definitions/dto.UserResponse' "400": description: Invalid Request schema: @@ -1063,7 +1091,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application' + $ref: '#/definitions/models.Application' type: array "400": description: Bad Request @@ -1086,14 +1114,14 @@ paths: name: application required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest' + $ref: '#/definitions/dto.CreateApplicationRequest' produces: - application/json responses: "201": description: Created schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application' + $ref: '#/definitions/models.Application' "400": description: Bad Request schema: @@ -1122,7 +1150,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application' + $ref: '#/definitions/models.Application' "400": description: Bad Request schema: @@ -1150,14 +1178,14 @@ paths: name: body required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest' + $ref: '#/definitions/dto.UpdateApplicationStatusRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application' + $ref: '#/definitions/models.Application' "400": description: Bad Request schema: @@ -1197,7 +1225,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse' + $ref: '#/definitions/dto.PaginatedResponse' "500": description: Internal Server Error schema: @@ -1215,14 +1243,14 @@ paths: name: job required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest' + $ref: '#/definitions/dto.CreateJobRequest' produces: - application/json responses: "201": description: Created schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job' + $ref: '#/definitions/models.Job' "400": description: Bad Request schema: @@ -1277,7 +1305,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job' + $ref: '#/definitions/models.Job' "400": description: Bad Request schema: @@ -1304,14 +1332,14 @@ paths: name: job required: true schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest' + $ref: '#/definitions/dto.UpdateJobRequest' produces: - application/json responses: "200": description: OK schema: - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job' + $ref: '#/definitions/models.Job' "400": description: Bad Request schema: