Files
atahango/docs/swagger.yaml
Beyhan Oğur bbbf76b184 first commit
2026-04-26 21:35:24 +03:00

5995 lines
136 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
basePath: /v1
definitions:
handlers.CreateContactRequest:
properties:
email:
type: string
message:
type: string
name:
type: string
subject:
type: string
required:
- email
- message
- name
- subject
type: object
handlers.CreateEducationRequest:
properties:
between_years:
type: string
content:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.CreateExperienceRequest:
properties:
between_years:
type: string
content:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.CreateKnowledgeRequest:
properties:
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.CreateMainMenuRequest:
properties:
about:
type: string
contact:
type: string
home:
type: string
is_active:
type: boolean
portfolio:
type: string
resume:
type: string
services:
type: string
type: object
handlers.CreatePostCommentRequest:
properties:
body:
type: string
is_active:
type: boolean
parent_id:
type: string
title:
type: string
required:
- body
- title
type: object
handlers.CreatePostTagRequest:
properties:
is_active:
type: boolean
tag:
type: string
required:
- tag
type: object
handlers.CreateResumeRequest:
properties:
coding_skills:
type: string
education:
type: string
experience:
type: string
is_active:
type: boolean
knowledge:
type: string
title:
type: string
title_sub:
type: string
type: object
handlers.CreateSkillRequest:
properties:
degree:
type: integer
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.CreateTagRequest:
properties:
is_active:
description: Pointer to allow false value
type: boolean
tag:
type: string
required:
- tag
type: object
handlers.LoginRequest:
properties:
email:
type: string
password:
type: string
required:
- email
- password
type: object
handlers.RefreshRequest:
properties:
refresh_token:
type: string
required:
- refresh_token
type: object
handlers.RegisterRequest:
properties:
email:
type: string
password:
minLength: 6
type: string
username:
minLength: 3
type: string
required:
- email
- password
- username
type: object
handlers.UpdateEducationRequest:
properties:
between_years:
type: string
content:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.UpdateExperienceRequest:
properties:
between_years:
type: string
content:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.UpdateKnowledgeRequest:
properties:
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.UpdateMainMenuRequest:
properties:
about:
type: string
contact:
type: string
home:
type: string
is_active:
type: boolean
portfolio:
type: string
resume:
type: string
services:
type: string
type: object
handlers.UpdatePostCommentRequest:
properties:
body:
type: string
is_active:
type: boolean
parent_id:
type: string
slug:
type: string
title:
type: string
type: object
handlers.UpdatePostTagRequest:
properties:
is_active:
type: boolean
tag:
type: string
type: object
handlers.UpdateResumeRequest:
properties:
coding_skills:
type: string
education:
type: string
experience:
type: string
is_active:
type: boolean
knowledge:
type: string
title:
type: string
title_sub:
type: string
type: object
handlers.UpdateSkillRequest:
properties:
degree:
type: integer
is_active:
type: boolean
resume_id:
type: string
title:
type: string
type: object
handlers.UpdateTagRequest:
properties:
is_active:
type: boolean
tag:
type: string
type: object
models.About:
properties:
age:
type: string
birthday:
type: string
city:
type: string
counter_active:
type: boolean
created_at:
type: string
cv:
type: string
degree:
type: string
done:
type: integer
great:
type: integer
great_reviews:
type: string
hapy_user:
type: string
id:
type: string
image:
type: string
image_sub:
type: string
interests:
type: string
is_active:
type: boolean
mail:
type: string
phone:
type: string
project_done:
type: string
slug:
type: string
study:
type: string
support_team:
type: string
team:
type: integer
title:
type: string
updated_at:
type: string
user_h:
type: integer
website:
type: string
x:
type: string
type: object
models.Banner:
properties:
color:
type: string
created_at:
type: string
id:
type: string
image:
type: string
image_k:
type: string
image_k_txt:
type: string
is_active:
type: boolean
text1:
type: string
text2:
type: string
text4:
type: string
text5:
type: string
title:
type: string
updated_at:
type: string
type: object
models.Contact:
properties:
created_at:
type: string
email:
type: string
id:
type: string
ip:
type: string
message:
type: string
name:
type: string
subject:
type: string
updated_at:
type: string
user:
$ref: '#/definitions/models.User'
user_id:
description: 'Optional: if user is logged in'
type: string
type: object
models.CorsBlacklist:
properties:
created_at:
type: string
created_by:
type: string
id:
type: string
is_active:
type: boolean
origin:
type: string
reason:
type: string
updated_at:
type: string
type: object
models.CorsWhitelist:
properties:
created_at:
type: string
created_by:
type: string
description:
type: string
id:
type: string
is_active:
type: boolean
origin:
type: string
updated_at:
type: string
type: object
models.Education:
properties:
between_years:
type: string
content:
type: string
created_at:
type: string
id:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
updated_at:
type: string
type: object
models.Experience:
properties:
between_years:
type: string
content:
type: string
created_at:
type: string
id:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
updated_at:
type: string
type: object
models.Home:
properties:
button1:
type: string
button2:
type: string
created_at:
type: string
id:
type: string
image:
type: string
is_active:
type: boolean
keywords:
type: string
name:
type: string
slug:
type: string
tags:
items:
$ref: '#/definitions/models.Tag'
type: array
title:
type: string
updated_at:
type: string
video:
type: string
type: object
models.Knowledge:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
updated_at:
type: string
type: object
models.MainMenu:
properties:
about:
type: string
contact:
type: string
created_at:
type: string
home:
type: string
id:
type: string
is_active:
type: boolean
portfolio:
type: string
resume:
type: string
services:
type: string
updated_at:
type: string
type: object
models.Permission:
properties:
description:
type: string
id:
type: integer
name:
description: user:read, user:write
type: string
type: object
models.Post:
properties:
categories:
items:
$ref: '#/definitions/models.PostCategory'
type: array
children:
items:
$ref: '#/definitions/models.Post'
type: array
comments:
items:
$ref: '#/definitions/models.PostComment'
type: array
content:
type: string
created_at:
type: string
id:
type: string
image:
type: string
is_active:
type: boolean
is_front:
type: boolean
keywords:
type: string
parent:
$ref: '#/definitions/models.Post'
parent_id:
type: string
slug:
type: string
tags:
items:
$ref: '#/definitions/models.PostTag'
type: array
title:
type: string
updated_at:
type: string
video:
type: string
type: object
models.PostCategory:
properties:
children:
items:
$ref: '#/definitions/models.PostCategory'
type: array
created_at:
type: string
description:
type: string
id:
type: string
image:
type: string
is_active:
type: boolean
keywords:
type: string
order:
type: integer
parent:
$ref: '#/definitions/models.PostCategory'
parent_id:
type: string
posts:
items:
$ref: '#/definitions/models.Post'
type: array
slug:
type: string
title:
type: string
updated_at:
type: string
type: object
models.PostCategoryView:
properties:
category:
$ref: '#/definitions/models.PostCategory'
category_id:
type: string
created_at:
type: string
id:
type: string
ip_address:
type: string
user_agent:
type: string
type: object
models.PostComment:
properties:
body:
type: string
children:
items:
$ref: '#/definitions/models.PostComment'
type: array
created_at:
type: string
id:
type: string
is_active:
type: boolean
parent:
$ref: '#/definitions/models.PostComment'
parent_id:
type: string
post:
$ref: '#/definitions/models.Post'
post_id:
type: string
slug:
type: string
title:
type: string
updated_at:
type: string
user:
$ref: '#/definitions/models.User'
user_id:
type: string
type: object
models.PostTag:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
posts:
items:
$ref: '#/definitions/models.Post'
type: array
tag:
type: string
updated_at:
type: string
type: object
models.RateLimitSetting:
properties:
created_at:
type: string
description:
type: string
id:
type: string
is_active:
type: boolean
max_requests:
description: Max istek sayısı
type: integer
name:
description: e.g., "login", "register", "api"
type: string
updated_at:
type: string
updated_by:
type: string
window_seconds:
description: Zaman penceresi (saniye)
type: integer
type: object
models.Resume:
properties:
coding_skills:
type: string
created_at:
type: string
education:
type: string
educations:
items:
$ref: '#/definitions/models.Education'
type: array
experience:
type: string
experiences:
items:
$ref: '#/definitions/models.Experience'
type: array
id:
type: string
is_active:
type: boolean
knowledge:
type: string
knowledges:
items:
$ref: '#/definitions/models.Knowledge'
type: array
skills:
items:
$ref: '#/definitions/models.Skill'
type: array
title:
type: string
title_sub:
type: string
updated_at:
type: string
type: object
models.Role:
properties:
description:
type: string
id:
type: integer
name:
description: admin, user
type: string
permissions:
items:
$ref: '#/definitions/models.Permission'
type: array
type: object
models.Service:
properties:
content:
type: string
created_at:
type: string
id:
type: string
image:
type: string
is_active:
type: boolean
slug:
type: string
title:
type: string
updated_at:
type: string
type: object
models.ServiceTitle:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
title:
type: string
title_sub:
type: string
updated_at:
type: string
type: object
models.Setting:
properties:
address:
type: string
b_logo:
type: string
copyright:
type: string
created_at:
type: string
email:
type: string
facebook:
type: string
id:
type: string
instagram:
type: string
is_active:
type: boolean
linkedin:
type: string
map_embed:
type: string
meta_description:
type: string
meta_title:
type: string
phone:
type: string
pinterest:
type: string
slogan:
type: string
title:
type: string
updated_at:
type: string
url:
type: string
w_logo:
type: string
whatsapp:
type: string
x:
type: string
type: object
models.SiteSettings:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
site_active:
type: boolean
updated_at:
type: string
type: object
models.Skill:
properties:
created_at:
type: string
degree:
type: integer
id:
type: string
is_active:
type: boolean
resume_id:
type: string
title:
type: string
updated_at:
type: string
type: object
models.SocialAccount:
properties:
avatar_url:
description: Avatar URL from provider
type: string
created_at:
type: string
email:
type: string
id:
type: string
name:
description: Full name from provider
type: string
provider:
description: google, github
type: string
provider_id:
type: string
updated_at:
type: string
user_id:
type: string
type: object
models.Tag:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
tag:
type: string
updated_at:
type: string
type: object
models.User:
properties:
avatar:
description: Avatar URL from OAuth or uploaded
type: string
created_at:
type: string
email:
type: string
email_verified:
description: |-
Email verification: only required for email/password registration; OAuth users are treated as verified
Changed to *bool to handle false values correctly with GORM defaults
type: boolean
email_verified_at:
type: string
id:
type: string
roles:
items:
$ref: '#/definitions/models.Role'
type: array
social_accounts:
items:
$ref: '#/definitions/models.SocialAccount'
type: array
updated_at:
type: string
username:
type: string
type: object
info:
contact: {}
description: Centralized Authentication Service
title: GAuth-Central API
version: "1.0"
paths:
/about:
get:
description: Retrieve a list of active about entries
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.About'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active about entries
tags:
- about
/about/active:
get:
description: Retrieve the newest active about entry
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.About'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active about entry
tags:
- about
/admin/about:
get:
description: Retrieve a list of all about entries including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.About'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all about entries (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new about entry
parameters:
- description: Title
in: formData
name: title
required: true
type: string
- description: Image
in: formData
name: image
type: file
- description: Image subtitle
in: formData
name: image_sub
type: string
- description: CV file
in: formData
name: cv
type: file
- description: Birthday
in: formData
name: birthday
type: string
- description: City
in: formData
name: city
type: string
- description: Study
in: formData
name: study
type: string
- description: Website
in: formData
name: website
type: string
- description: Phone
in: formData
name: phone
type: string
- description: Age
in: formData
name: age
type: string
- description: Interests
in: formData
name: interests
type: string
- description: Degree
in: formData
name: degree
type: string
- description: X
in: formData
name: x
type: string
- description: Mail
in: formData
name: mail
type: string
- description: Done
in: formData
name: done
type: integer
- description: Project done
in: formData
name: project_done
type: string
- description: User count
in: formData
name: user_h
type: integer
- description: Happy user
in: formData
name: hapy_user
type: string
- description: Great
in: formData
name: great
type: integer
- description: Great reviews
in: formData
name: great_reviews
type: string
- description: Team
in: formData
name: team
type: integer
- description: Support team
in: formData
name: support_team
type: string
- description: Is active
in: formData
name: is_active
type: boolean
- description: Counter active
in: formData
name: counter_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.About'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new about entry (Admin)
tags:
- admin
/admin/about/{id}:
delete:
description: Delete an about entry by ID
parameters:
- description: About ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete an about entry (Admin)
tags:
- admin
get:
description: Retrieve details of a specific about entry
parameters:
- description: About ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.About'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get an about entry by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing about entry
parameters:
- description: About ID
in: path
name: id
required: true
type: string
- description: Title
in: formData
name: title
type: string
- description: Image
in: formData
name: image
type: file
- description: Image subtitle
in: formData
name: image_sub
type: string
- description: CV file
in: formData
name: cv
type: file
- description: Birthday
in: formData
name: birthday
type: string
- description: City
in: formData
name: city
type: string
- description: Study
in: formData
name: study
type: string
- description: Website
in: formData
name: website
type: string
- description: Phone
in: formData
name: phone
type: string
- description: Age
in: formData
name: age
type: string
- description: Interests
in: formData
name: interests
type: string
- description: Degree
in: formData
name: degree
type: string
- description: X
in: formData
name: x
type: string
- description: Mail
in: formData
name: mail
type: string
- description: Done
in: formData
name: done
type: integer
- description: Project done
in: formData
name: project_done
type: string
- description: User count
in: formData
name: user_h
type: integer
- description: Happy user
in: formData
name: hapy_user
type: string
- description: Great
in: formData
name: great
type: integer
- description: Great reviews
in: formData
name: great_reviews
type: string
- description: Team
in: formData
name: team
type: integer
- description: Support team
in: formData
name: support_team
type: string
- description: Slug
in: formData
name: slug
type: string
- description: Is active
in: formData
name: is_active
type: boolean
- description: Counter active
in: formData
name: counter_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.About'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update an about entry (Admin)
tags:
- admin
/admin/banners:
get:
description: Retrieve a list of all banners including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Banner'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all banners (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new banner entry
parameters:
- description: Text color
in: formData
name: color
type: string
- description: Title
in: formData
name: title
type: string
- description: Text 1
in: formData
name: text1
type: string
- description: Text 2
in: formData
name: text2
type: string
- description: Text 4
in: formData
name: text4
type: string
- description: Text 5
in: formData
name: text5
type: string
- description: Image
in: formData
name: image
required: true
type: file
- description: Small image
in: formData
name: image_k
type: file
- description: Small image text
in: formData
name: image_k_txt
type: string
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Banner'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new banner (Admin)
tags:
- admin
/admin/banners/{id}:
delete:
description: Delete a banner by ID
parameters:
- description: Banner ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a banner (Admin)
tags:
- admin
get:
description: Retrieve details of a specific banner
parameters:
- description: Banner ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Banner'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get banner by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing banner entry
parameters:
- description: Banner ID
in: path
name: id
required: true
type: string
- description: Text color
in: formData
name: color
type: string
- description: Title
in: formData
name: title
type: string
- description: Text 1
in: formData
name: text1
type: string
- description: Text 2
in: formData
name: text2
type: string
- description: Text 4
in: formData
name: text4
type: string
- description: Text 5
in: formData
name: text5
type: string
- description: Image
in: formData
name: image
type: file
- description: Small image
in: formData
name: image_k
type: file
- description: Small image text
in: formData
name: image_k_txt
type: string
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Banner'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a banner (Admin)
tags:
- admin
/admin/contacts:
get:
description: Retrieve a list of all contact messages with pagination
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all contact messages (Admin)
tags:
- admin
/admin/contacts/{id}:
delete:
description: Delete a contact message by ID
parameters:
- description: Contact ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a contact message (Admin)
tags:
- admin
get:
description: Retrieve details of a specific contact message
parameters:
- description: Contact ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Contact'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a contact message by ID (Admin)
tags:
- admin
/admin/educations:
get:
description: Retrieve a list of all education entries including inactive ones
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Education'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all educations (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new education entry
parameters:
- description: Education Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateEducationRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Education'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new education (Admin)
tags:
- admin
/admin/educations/{id}:
delete:
description: Delete an education by ID
parameters:
- description: Education ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete an education (Admin)
tags:
- admin
get:
description: Retrieve details of a specific education entry
parameters:
- description: Education ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Education'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get an education by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing education entry
parameters:
- description: Education ID
in: path
name: id
required: true
type: string
- description: Education Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateEducationRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Education'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update an education (Admin)
tags:
- admin
/admin/experiences:
get:
description: Retrieve a list of all experience entries including inactive ones
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Experience'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all experiences (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new experience entry
parameters:
- description: Experience Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateExperienceRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Experience'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new experience (Admin)
tags:
- admin
/admin/experiences/{id}:
delete:
description: Delete an experience by ID
parameters:
- description: Experience ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete an experience (Admin)
tags:
- admin
get:
description: Retrieve details of a specific experience entry
parameters:
- description: Experience ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Experience'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get an experience by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing experience entry
parameters:
- description: Experience ID
in: path
name: id
required: true
type: string
- description: Experience Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateExperienceRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Experience'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update an experience (Admin)
tags:
- admin
/admin/homes:
get:
description: Retrieve a list of all homes including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Home'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all homes (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new home entry
parameters:
- description: Name
in: formData
name: name
required: true
type: string
- description: Title
in: formData
name: title
required: true
type: string
- description: Button 1
in: formData
name: button1
required: true
type: string
- description: Button 2
in: formData
name: button2
required: true
type: string
- description: Video URL
in: formData
name: video
type: string
- description: Keywords
in: formData
name: keywords
required: true
type: string
- collectionFormat: csv
description: Tag IDs
in: formData
items:
type: string
name: tag_ids
type: array
- description: Home image
in: formData
name: image
type: file
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Home'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new home (Admin)
tags:
- admin
/admin/homes/{id}:
delete:
description: Delete a home by ID
parameters:
- description: Home ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a home (Admin)
tags:
- admin
get:
description: Retrieve details of a specific home
parameters:
- description: Home ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Home'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a home by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing home entry
parameters:
- description: Home ID
in: path
name: id
required: true
type: string
- description: Name
in: formData
name: name
type: string
- description: Title
in: formData
name: title
type: string
- description: Button 1
in: formData
name: button1
type: string
- description: Button 2
in: formData
name: button2
type: string
- description: Video URL
in: formData
name: video
type: string
- description: Keywords
in: formData
name: keywords
type: string
- collectionFormat: csv
description: Tag IDs
in: formData
items:
type: string
name: tag_ids
type: array
- description: Home image
in: formData
name: image
type: file
- description: Slug
in: formData
name: slug
type: string
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Home'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a home (Admin)
tags:
- admin
/admin/homes/{id}/image:
post:
consumes:
- multipart/form-data
description: Upload an image for a specific home entry
parameters:
- description: Home ID
in: path
name: id
required: true
type: string
- description: Home image
in: formData
name: image
required: true
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Upload home image (Admin)
tags:
- admin
/admin/knowledges:
get:
description: Retrieve a list of all knowledge entries including inactive ones
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Knowledge'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all knowledges (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new knowledge entry
parameters:
- description: Knowledge Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateKnowledgeRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Knowledge'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new knowledge (Admin)
tags:
- admin
/admin/knowledges/{id}:
delete:
description: Delete a knowledge by ID
parameters:
- description: Knowledge ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a knowledge (Admin)
tags:
- admin
get:
description: Retrieve details of a specific knowledge entry
parameters:
- description: Knowledge ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Knowledge'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a knowledge by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing knowledge entry
parameters:
- description: Knowledge ID
in: path
name: id
required: true
type: string
- description: Knowledge Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateKnowledgeRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Knowledge'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a knowledge (Admin)
tags:
- admin
/admin/main-menu:
get:
description: Retrieve a list of all main menu entries including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.MainMenu'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all main menus (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new main menu entry
parameters:
- description: Main Menu Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateMainMenuRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.MainMenu'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new main menu (Admin)
tags:
- admin
/admin/main-menu/{id}:
delete:
description: Delete a main menu by ID
parameters:
- description: Main Menu ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a main menu (Admin)
tags:
- admin
get:
description: Retrieve details of a specific main menu entry
parameters:
- description: Main Menu ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.MainMenu'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a main menu by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing main menu entry
parameters:
- description: Main Menu ID
in: path
name: id
required: true
type: string
- description: Main Menu Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateMainMenuRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.MainMenu'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a main menu (Admin)
tags:
- admin
/admin/post-categories:
get:
description: Retrieve a list of all post categories including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostCategory'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all post categories (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new post category
parameters:
- description: Title
in: formData
name: title
required: true
type: string
- description: Keywords
in: formData
name: keywords
required: true
type: string
- description: Description
in: formData
name: description
required: true
type: string
- description: Order
in: formData
name: order
type: integer
- description: Parent ID
in: formData
name: parent_id
type: string
- description: Image
in: formData
name: image
type: file
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.PostCategory'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a post category (Admin)
tags:
- admin
/admin/post-categories/{id}:
delete:
description: Delete a post category by ID
parameters:
- description: Category ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a post category (Admin)
tags:
- admin
get:
description: Retrieve a post category by ID
parameters:
- description: Category ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostCategory'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get post category by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing post category
parameters:
- description: Category ID
in: path
name: id
required: true
type: string
- description: Title
in: formData
name: title
type: string
- description: Keywords
in: formData
name: keywords
type: string
- description: Description
in: formData
name: description
type: string
- description: Order
in: formData
name: order
type: integer
- description: Parent ID
in: formData
name: parent_id
type: string
- description: Image
in: formData
name: image
type: file
- description: Slug
in: formData
name: slug
type: string
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostCategory'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a post category (Admin)
tags:
- admin
/admin/post-category-views:
get:
description: Retrieve views for a category
parameters:
- description: Category ID
in: query
name: category_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostCategoryView'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get post category views (Admin)
tags:
- admin
/admin/post-comments:
get:
description: Retrieve comments with optional post filter
parameters:
- description: Post ID
in: query
name: post_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostComment'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all post comments (Admin)
tags:
- admin
/admin/post-comments/{id}:
delete:
description: Delete a post comment by ID
parameters:
- description: Comment ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a post comment (Admin)
tags:
- admin
get:
description: Retrieve a post comment by ID
parameters:
- description: Comment ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostComment'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get post comment by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing post comment
parameters:
- description: Comment ID
in: path
name: id
required: true
type: string
- description: Comment Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdatePostCommentRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostComment'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a post comment (Admin)
tags:
- admin
/admin/post-tags:
get:
description: Retrieve a list of all post tags including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostTag'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all post tags (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new post tag
parameters:
- description: Post Tag Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreatePostTagRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.PostTag'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a post tag (Admin)
tags:
- admin
/admin/post-tags/{id}:
delete:
description: Delete a post tag by ID
parameters:
- description: Post Tag ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a post tag (Admin)
tags:
- admin
get:
description: Retrieve details of a specific post tag
parameters:
- description: Post Tag ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostTag'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a post tag by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing post tag
parameters:
- description: Post Tag ID
in: path
name: id
required: true
type: string
- description: Post Tag Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdatePostTagRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostTag'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a post tag (Admin)
tags:
- admin
/admin/posts:
get:
description: Retrieve a list of all posts including inactive ones with pagination
parameters:
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all posts (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new post
parameters:
- description: Title
in: formData
name: title
required: true
type: string
- description: Content
in: formData
name: content
type: string
- description: Keywords
in: formData
name: keywords
required: true
type: string
- description: Video
in: formData
name: video
type: string
- collectionFormat: csv
description: Category IDs
in: formData
items:
type: string
name: category_ids
type: array
- collectionFormat: csv
description: Tag IDs
in: formData
items:
type: string
name: tag_ids
type: array
- description: Parent ID
in: formData
name: parent_id
type: string
- description: Image
in: formData
name: image
type: file
- description: Is active
in: formData
name: is_active
type: boolean
- description: Is front
in: formData
name: is_front
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Post'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a post (Admin)
tags:
- admin
/admin/posts/{id}:
delete:
description: Delete a post by ID
parameters:
- description: Post ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a post (Admin)
tags:
- admin
get:
description: Retrieve a post by ID
parameters:
- description: Post ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Post'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get post by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing post
parameters:
- description: Post ID
in: path
name: id
required: true
type: string
- description: Title
in: formData
name: title
type: string
- description: Content
in: formData
name: content
type: string
- description: Keywords
in: formData
name: keywords
type: string
- description: Video
in: formData
name: video
type: string
- collectionFormat: csv
description: Category IDs
in: formData
items:
type: string
name: category_ids
type: array
- collectionFormat: csv
description: Tag IDs
in: formData
items:
type: string
name: tag_ids
type: array
- description: Parent ID
in: formData
name: parent_id
type: string
- description: Image
in: formData
name: image
type: file
- description: Slug
in: formData
name: slug
type: string
- description: Is active
in: formData
name: is_active
type: boolean
- description: Is front
in: formData
name: is_front
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Post'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a post (Admin)
tags:
- admin
/admin/resumes:
get:
description: Retrieve a list of all resumes including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Resume'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all resumes (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new resume entry
parameters:
- description: Resume Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateResumeRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Resume'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new resume (Admin)
tags:
- admin
/admin/resumes/{id}:
delete:
description: Delete a resume by ID
parameters:
- description: Resume ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a resume (Admin)
tags:
- admin
get:
description: Retrieve details of a specific resume
parameters:
- description: Resume ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Resume'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a resume by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing resume entry
parameters:
- description: Resume ID
in: path
name: id
required: true
type: string
- description: Resume Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateResumeRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Resume'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a resume (Admin)
tags:
- admin
/admin/service-titles:
get:
description: Retrieve a list of all service titles including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.ServiceTitle'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all service titles (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new service title entry
parameters:
- description: Service Title Request
in: body
name: request
required: true
schema:
additionalProperties:
type: string
type: object
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.ServiceTitle'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new service title (Admin)
tags:
- admin
/admin/service-titles/{id}:
delete:
description: Delete a service title by ID
parameters:
- description: Service Title ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a service title (Admin)
tags:
- admin
get:
description: Retrieve details of a specific service title
parameters:
- description: Service Title ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ServiceTitle'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a service title by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing service title entry
parameters:
- description: Service Title ID
in: path
name: id
required: true
type: string
- description: Service Title Request
in: body
name: request
required: true
schema:
additionalProperties:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ServiceTitle'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a service title (Admin)
tags:
- admin
/admin/services:
get:
description: Retrieve a list of all services including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Service'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all services (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new service entry
parameters:
- description: Title
in: formData
name: title
required: true
type: string
- description: Content
in: formData
name: content
type: string
- description: Image
in: formData
name: image
type: file
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Service'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new service (Admin)
tags:
- admin
/admin/services/{id}:
delete:
description: Delete a service by ID
parameters:
- description: Service ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a service (Admin)
tags:
- admin
get:
description: Retrieve details of a specific service
parameters:
- description: Service ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Service'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a service by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing service entry
parameters:
- description: Service ID
in: path
name: id
required: true
type: string
- description: Title
in: formData
name: title
type: string
- description: Content
in: formData
name: content
type: string
- description: Image
in: formData
name: image
type: file
- description: Slug
in: formData
name: slug
type: string
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Service'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a service (Admin)
tags:
- admin
/admin/site-info:
get:
description: Retrieve a list of all site info entries including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Setting'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all site info (Admin)
tags:
- admin
post:
consumes:
- multipart/form-data
description: Create a new site info entry
parameters:
- description: Title
in: formData
name: title
required: true
type: string
- description: Meta title
in: formData
name: meta_title
type: string
- description: Meta description
in: formData
name: meta_description
type: string
- description: Phone
in: formData
name: phone
required: true
type: string
- description: Site URL
in: formData
name: url
type: string
- description: Email
in: formData
name: email
required: true
type: string
- description: Facebook
in: formData
name: facebook
type: string
- description: X
in: formData
name: x
type: string
- description: Instagram
in: formData
name: instagram
type: string
- description: Whatsapp
in: formData
name: whatsapp
type: string
- description: Pinterest
in: formData
name: pinterest
type: string
- description: LinkedIn
in: formData
name: linkedin
type: string
- description: Slogan
in: formData
name: slogan
type: string
- description: White logo
in: formData
name: w_logo
type: file
- description: Black logo
in: formData
name: b_logo
type: file
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Setting'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create site info (Admin)
tags:
- admin
/admin/site-info/{id}:
delete:
description: Delete a site info entry by ID
parameters:
- description: Site Info ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete site info (Admin)
tags:
- admin
get:
description: Retrieve details of a specific site info entry
parameters:
- description: Site Info ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Setting'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get site info by ID (Admin)
tags:
- admin
put:
consumes:
- multipart/form-data
description: Update an existing site info entry
parameters:
- description: Site Info ID
in: path
name: id
required: true
type: string
- description: Title
in: formData
name: title
type: string
- description: Meta title
in: formData
name: meta_title
type: string
- description: Meta description
in: formData
name: meta_description
type: string
- description: Phone
in: formData
name: phone
type: string
- description: Site URL
in: formData
name: url
type: string
- description: Email
in: formData
name: email
type: string
- description: Facebook
in: formData
name: facebook
type: string
- description: X
in: formData
name: x
type: string
- description: Instagram
in: formData
name: instagram
type: string
- description: Whatsapp
in: formData
name: whatsapp
type: string
- description: Pinterest
in: formData
name: pinterest
type: string
- description: LinkedIn
in: formData
name: linkedin
type: string
- description: Slogan
in: formData
name: slogan
type: string
- description: White logo
in: formData
name: w_logo
type: file
- description: Black logo
in: formData
name: b_logo
type: file
- description: Is active
in: formData
name: is_active
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Setting'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update site info (Admin)
tags:
- admin
/admin/site-settings:
get:
description: Retrieve a list of all site settings including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.SiteSettings'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all site settings (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new site settings entry
parameters:
- description: Site Settings Request
in: body
name: request
required: true
schema:
additionalProperties:
type: boolean
type: object
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.SiteSettings'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create site settings (Admin)
tags:
- admin
/admin/site-settings/{id}:
delete:
description: Delete a site settings entry by ID
parameters:
- description: Site Settings ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete site settings (Admin)
tags:
- admin
get:
description: Retrieve details of a specific site settings entry
parameters:
- description: Site Settings ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.SiteSettings'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get site settings by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing site settings entry
parameters:
- description: Site Settings ID
in: path
name: id
required: true
type: string
- description: Site Settings Request
in: body
name: request
required: true
schema:
additionalProperties:
type: boolean
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.SiteSettings'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update site settings (Admin)
tags:
- admin
/admin/skills:
get:
description: Retrieve a list of all skill entries including inactive ones
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Skill'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all skills (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new skill entry
parameters:
- description: Skill Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateSkillRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Skill'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new skill (Admin)
tags:
- admin
/admin/skills/{id}:
delete:
description: Delete a skill by ID
parameters:
- description: Skill ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a skill (Admin)
tags:
- admin
get:
description: Retrieve details of a specific skill entry
parameters:
- description: Skill ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Skill'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a skill by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing skill entry
parameters:
- description: Skill ID
in: path
name: id
required: true
type: string
- description: Skill Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateSkillRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Skill'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a skill (Admin)
tags:
- admin
/admin/tags:
get:
description: Retrieve a list of all tags including inactive ones
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Tag'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get all tags (Admin)
tags:
- admin
post:
consumes:
- application/json
description: Create a new tag
parameters:
- description: Tag Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateTagRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Tag'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a new tag (Admin)
tags:
- admin
/admin/tags/{id}:
delete:
description: Delete a tag by ID
parameters:
- description: Tag ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a tag (Admin)
tags:
- admin
get:
description: Retrieve details of a specific tag
parameters:
- description: Tag ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Tag'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get a tag by ID (Admin)
tags:
- admin
put:
consumes:
- application/json
description: Update an existing tag
parameters:
- description: Tag ID
in: path
name: id
required: true
type: string
- description: Tag Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.UpdateTagRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Tag'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Update a tag (Admin)
tags:
- admin
/admin/users:
get:
parameters:
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Get all users (Admin only)
tags:
- Admin - User Management
post:
consumes:
- multipart/form-data
parameters:
- description: Email
in: formData
name: email
required: true
type: string
- description: Password
in: formData
name: password
required: true
type: string
- description: Username
in: formData
name: user_name
required: true
type: string
- description: Email verified
in: formData
name: email_verified
type: boolean
- description: 'Roles (comma separated: admin,user)'
in: formData
name: roles
type: string
- description: Avatar image
in: formData
name: avatar
type: file
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.User'
security:
- ApiKeyAuth: []
summary: Create new user (Admin only)
tags:
- Admin - User Management
/admin/users/{id}:
delete:
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- default: false
description: Hard delete (permanent)
in: query
name: hard
type: boolean
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Delete user (Admin only)
tags:
- Admin - User Management
get:
parameters:
- description: User ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.User'
security:
- ApiKeyAuth: []
summary: Get user by ID (Admin only)
tags:
- Admin - User Management
put:
consumes:
- multipart/form-data
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- description: Email
in: formData
name: email
type: string
- description: Password
in: formData
name: password
type: string
- description: Username
in: formData
name: user_name
type: string
- description: Email verified
in: formData
name: email_verified
type: boolean
- description: 'Roles (comma separated: admin,user)'
in: formData
name: roles
type: string
- description: Avatar image
in: formData
name: avatar
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Update user (Admin only)
tags:
- Admin - User Management
/admin/users/{id}/avatar:
post:
consumes:
- multipart/form-data
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- description: Avatar image file
in: formData
name: avatar
required: true
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Upload avatar for any user (Admin only)
tags:
- Admin - User Management
/admin/users/{id}/restore:
post:
parameters:
- description: User ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Restore a soft deleted user (Admin only)
tags:
- Admin - User Management
/admin/users/{id}/roles:
post:
consumes:
- application/json
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- description: Roles
in: body
name: roles
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Assign roles to user (Admin only)
tags:
- Admin - User Management
/admin/users/{id}/roles/{role}:
delete:
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- description: Role name
in: path
name: role
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Remove role from user (Admin only)
tags:
- Admin - User Management
/admin/users/deleted:
get:
parameters:
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Get all soft deleted users (Admin only)
tags:
- Admin - User Management
/admin/users/search:
get:
parameters:
- description: Search query
in: query
name: q
required: true
type: string
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Search users (Admin only)
tags:
- Admin - User Management
/auth/{provider}:
get:
description: Redirect to OAuth2 provider
parameters:
- description: Provider (google, github)
in: path
name: provider
required: true
type: string
responses: {}
summary: Start OAuth2 flow
tags:
- oauth
/auth/{provider}/callback:
get:
description: Handle callback from OAuth2 provider
parameters:
- description: Provider (google, github)
in: path
name: provider
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
summary: OAuth2 Callback
tags:
- oauth
/auth/login:
post:
consumes:
- application/json
description: Login with email and password to get JWT token
parameters:
- description: Login Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.LoginRequest'
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: Login user
tags:
- auth
/auth/me:
get:
description: Get details of the currently authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.User'
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get Current User Profile
tags:
- auth
/auth/refresh:
post:
consumes:
- application/json
description: 'usage: send refresh_token to get new access_token'
parameters:
- description: Refresh Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.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
/auth/register:
post:
consumes:
- application/json
description: Register with username, email and password
parameters:
- description: Register Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.RegisterRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
summary: Register a new user
tags:
- auth
/auth/verify-email:
get:
description: Verify email with token sent after email/password registration
parameters:
- description: Verification token
in: query
name: token
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
summary: Verify email address
tags:
- auth
/banners:
get:
description: Retrieve a list of active banners
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Banner'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active banners
tags:
- banners
/banners/active:
get:
description: Retrieve the newest active banner
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Banner'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active banner
tags:
- banners
/contact:
post:
consumes:
- application/json
description: Send a contact message
parameters:
- description: Contact Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreateContactRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Contact'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
summary: Create a new contact message
tags:
- contact
/educations:
get:
description: Retrieve a list of active education entries
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Education'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active educations
tags:
- resume
/experiences:
get:
description: Retrieve a list of active experience entries
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Experience'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active experiences
tags:
- resume
/homes:
get:
description: Retrieve a list of active home entries
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Home'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active homes
tags:
- home
/homes/{slug}:
get:
description: Retrieve a single active home by slug
parameters:
- description: Home Slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Home'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get a home by slug
tags:
- home
/knowledges:
get:
description: Retrieve a list of active knowledge entries
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Knowledge'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active knowledges
tags:
- resume
/main-menu:
get:
description: Retrieve a list of active main menu entries
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.MainMenu'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active main menus
tags:
- menu
/main-menu/active:
get:
description: Retrieve the newest active main menu entry
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.MainMenu'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active main menu
tags:
- menu
/post-categories:
get:
description: Retrieve a list of active post categories
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostCategory'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active post categories
tags:
- post-categories
/post-categories/{id}/views:
post:
description: Record a post category view (daily per IP)
parameters:
- description: Category ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostCategoryView'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Track post category view
tags:
- post-category-views
/post-categories/{slug}:
get:
description: Retrieve an active post category by slug
parameters:
- description: Category Slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.PostCategory'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get post category by slug
tags:
- post-categories
/post-tags:
get:
description: Retrieve a list of active post tags
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostTag'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active post tags
tags:
- post-tags
/posts:
get:
description: Retrieve a list of active posts with pagination. Use front=true
for front posts only
parameters:
- description: Front posts only
in: query
name: front
type: boolean
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active posts with pagination
tags:
- posts
/posts/{id}/comments:
get:
description: Retrieve active comments for a post
parameters:
- description: Post ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.PostComment'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get active post comments
tags:
- post-comments
post:
consumes:
- application/json
description: Create a new comment for a post (auth required)
parameters:
- description: Post ID
in: path
name: id
required: true
type: string
- description: Comment Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/handlers.CreatePostCommentRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.PostComment'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Create a post comment
tags:
- post-comments
/posts/slug/{slug}:
get:
description: Retrieve an active post by slug
parameters:
- description: Post Slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Post'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get post by slug
tags:
- posts
/profile:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.User'
security:
- ApiKeyAuth: []
summary: Get current user profile
tags:
- Profile
put:
consumes:
- multipart/form-data
parameters:
- description: Username
in: formData
name: user_name
type: string
- description: Avatar image
in: formData
name: avatar
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Update current user profile
tags:
- Profile
/profile/email:
put:
consumes:
- application/json
parameters:
- description: Email change request
in: body
name: request
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Change email address
tags:
- Profile
/profile/password:
put:
consumes:
- application/json
parameters:
- description: Password change request
in: body
name: request
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Change password
tags:
- Profile
/resumes:
get:
description: Retrieve a list of active resumes
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Resume'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active resumes
tags:
- resume
/resumes/active:
get:
description: Retrieve the newest active resume entry
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Resume'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active resume
tags:
- resume
/service-titles:
get:
description: Retrieve a list of active service titles
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.ServiceTitle'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active service titles
tags:
- services
/service-titles/active:
get:
description: Retrieve the newest active service title
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ServiceTitle'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active service title
tags:
- services
/services:
get:
description: Retrieve a list of active services
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Service'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active services
tags:
- services
/services/{slug}:
get:
description: Retrieve a single active service by slug
parameters:
- description: Service Slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Service'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get service by slug
tags:
- services
/settings/cors/blacklist:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.CorsBlacklist'
type: array
security:
- ApiKeyAuth: []
summary: Get all CORS blacklist entries
tags:
- Settings
post:
consumes:
- application/json
parameters:
- description: Blacklist data
in: body
name: blacklist
required: true
schema:
type: object
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.CorsBlacklist'
security:
- ApiKeyAuth: []
summary: Create CORS blacklist entry
tags:
- Settings
/settings/cors/blacklist/{id}:
delete:
parameters:
- description: Blacklist ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Delete CORS blacklist entry
tags:
- Settings
put:
consumes:
- application/json
parameters:
- description: Blacklist ID
in: path
name: id
required: true
type: string
- description: Update data
in: body
name: blacklist
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Update CORS blacklist entry
tags:
- Settings
/settings/cors/cache/invalidate:
post:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Invalidate CORS cache (whitelist + blacklist)
tags:
- Settings
/settings/cors/whitelist:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.CorsWhitelist'
type: array
security:
- ApiKeyAuth: []
summary: Get all CORS whitelist entries
tags:
- Settings
post:
consumes:
- application/json
parameters:
- description: Whitelist data
in: body
name: whitelist
required: true
schema:
type: object
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.CorsWhitelist'
security:
- ApiKeyAuth: []
summary: Create CORS whitelist entry
tags:
- Settings
/settings/cors/whitelist/{id}:
delete:
parameters:
- description: Whitelist ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Delete CORS whitelist entry
tags:
- Settings
put:
consumes:
- application/json
parameters:
- description: Whitelist ID
in: path
name: id
required: true
type: string
- description: Update data
in: body
name: whitelist
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Update CORS whitelist entry
tags:
- Settings
/settings/ratelimit:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.RateLimitSetting'
type: array
security:
- ApiKeyAuth: []
summary: Get all rate limit settings
tags:
- Settings
/settings/ratelimit/{id}:
put:
consumes:
- application/json
parameters:
- description: Setting ID
in: path
name: id
required: true
type: string
- description: Update data
in: body
name: setting
required: true
schema:
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Update rate limit setting
tags:
- Settings
/site-info:
get:
description: Retrieve a list of active site info entries
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Setting'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active site info
tags:
- site-info
/site-info/active:
get:
description: Retrieve the newest active site info entry
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Setting'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active site info
tags:
- site-info
/site-settings:
get:
description: Retrieve a list of active site settings
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.SiteSettings'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active site settings
tags:
- site-settings
/site-settings/active:
get:
description: Retrieve the newest active site settings entry
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.SiteSettings'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Get active site settings
tags:
- site-settings
/skills:
get:
description: Retrieve a list of active skill entries
parameters:
- description: Resume ID
in: query
name: resume_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Skill'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all active skills
tags:
- resume
/tags:
get:
description: Retrieve a list of all tags. Public endpoint returns only active
tags. Admin endpoint returns all.
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Tag'
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get all tags
tags:
- tags
/user/avatar:
delete:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Delete user avatar
tags:
- User
post:
consumes:
- multipart/form-data
parameters:
- description: Avatar image file
in: formData
name: avatar
required: true
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
summary: Upload user avatar
tags:
- User
securityDefinitions:
ApiKeyAuth:
in: header
name: Authorization
type: apiKey
swagger: "2.0"