Files
base/docs/swagger.yaml
2026-04-10 18:25:21 +03:30

2046 lines
50 KiB
YAML

basePath: /
definitions:
dto.AboutDTO:
properties:
about:
type: string
achievements:
items:
$ref: '#/definitions/dto.AchievementDTO'
type: array
profile_picture:
type: string
type: object
dto.AchievementDTO:
properties:
enabled:
type: boolean
title:
type: string
value:
type: string
type: object
dto.AchievementItemDTO:
properties:
enabled:
type: boolean
value:
type: string
type: object
dto.AnalyticsDTO:
properties:
total_assets:
type: integer
total_profiles:
type: integer
type: object
dto.AssetResponse:
properties:
asset_category_id:
type: string
category:
$ref: '#/definitions/dto.CategoryDTO'
cover_image:
type: string
created_at:
type: string
description:
type: string
id:
type: string
link:
type: string
owner_id:
type: string
profile_id:
type: string
status:
type: integer
title:
type: string
updated_at:
type: string
type: object
dto.Blog:
properties:
author:
type: string
category:
properties:
id:
type: string
title:
type: string
type: object
category_id:
type: string
content:
type: string
content_html:
type: string
content_json: {}
cover_image:
type: string
created_at:
type: string
id:
type: string
is_featured:
type: boolean
meta_tags: {}
slug:
type: string
status:
type: string
summary:
type: string
title:
type: string
updated_at:
type: string
view_count:
type: integer
type: object
dto.CategoriesPreviewRequest:
properties:
assets_per_category:
type: integer
category_ids:
items:
type: string
type: array
featured_only:
type: boolean
type: object
dto.CategoriesPreviewResponse:
properties:
categories:
items:
$ref: '#/definitions/dto.CategoryWithPreviewAssetsDTO'
type: array
type: object
dto.CategoryDTO:
properties:
card_type:
type: string
color:
type: string
description:
type: string
featured:
type: boolean
icon:
type: string
id:
type: string
name:
type: string
type: object
dto.CategoryWithPreviewAssetsDTO:
properties:
assets:
items:
$ref: '#/definitions/dto.AssetResponse'
type: array
category:
$ref: '#/definitions/dto.CategoryDTO'
has_more:
type: boolean
total_assets:
type: integer
type: object
dto.ContactDTO:
properties:
email:
type: string
phone:
type: string
social_links:
items:
$ref: '#/definitions/dto.SocialLinkDTO'
type: array
type: object
dto.CreateAssetRequest:
properties:
asset_category_id:
type: string
description:
type: string
link:
type: string
profile_id:
type: string
title:
type: string
type: object
dto.CreateProfileRequest:
properties:
about:
$ref: '#/definitions/dto.AboutDTO'
contact:
$ref: '#/definitions/dto.ContactDTO'
handle:
type: string
hero:
$ref: '#/definitions/dto.HeroDTO'
page_section_order:
additionalProperties:
type: integer
type: object
page_setting:
$ref: '#/definitions/dto.PageSettingDTO'
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
type: object
dto.CreateProfileRoleRequest:
properties:
title:
type: string
type: object
dto.ErrorResponse:
properties:
message:
type: string
status:
example: 400
type: integer
type: object
dto.FlatProfileDTO:
properties:
about:
type: string
achievements:
additionalProperties:
$ref: '#/definitions/dto.AchievementItemDTO'
type: object
background_image:
type: string
contact_email:
type: string
contact_phone:
type: string
country:
type: string
created_at:
type: string
cta_action:
type: string
cta_enabled:
type: boolean
current_company:
type: string
custom_roles:
type: string
display_name:
type: string
first_name:
type: string
handle_updated_at:
type: string
id:
type: string
last_name:
type: string
profile_handle:
type: string
profile_picture:
type: string
resume_link:
type: string
role:
$ref: '#/definitions/dto.RoleDTO'
role_id:
type: string
role_level:
type: string
short_description:
type: string
social_links:
items:
$ref: '#/definitions/dto.SocialLinkDTO'
type: array
status:
type: string
updated_at:
type: string
type: object
dto.HeroDTO:
properties:
avatar:
type: string
company:
type: string
cta_enabled:
type: boolean
first_name:
type: string
last_name:
type: string
resume_link:
type: string
role_id:
type: string
role_level:
type: string
short_description:
type: string
type: object
dto.Landing:
properties:
data:
$ref: '#/definitions/dto.LandingPageData'
message:
type: string
type: object
dto.LandingAssetData:
properties:
assets:
items:
$ref: '#/definitions/dto.AssetResponse'
type: array
icon:
type: string
id:
type: string
title:
type: string
type: object
dto.LandingPageData:
properties:
assets:
items:
$ref: '#/definitions/dto.LandingAssetData'
type: array
blogs:
items:
$ref: '#/definitions/dto.Blog'
type: array
categories:
items:
$ref: '#/definitions/dto.CategoryDTO'
type: array
specialist_roles:
items:
$ref: '#/definitions/dto.ProfileRole'
type: array
specialists:
items:
$ref: '#/definitions/dto.Specialist'
type: array
type: object
dto.ListAssetsByCategoryIDResponse:
properties:
assets:
items:
$ref: '#/definitions/dto.AssetResponse'
type: array
category:
$ref: '#/definitions/dto.CategoryDTO'
page:
type: integer
page_size:
type: integer
total:
type: integer
total_pages:
type: integer
type: object
dto.ListAssetsResponse:
properties:
assets:
items:
$ref: '#/definitions/dto.AssetResponse'
type: array
type: object
dto.ListCategoriesResponse:
properties:
categories:
items:
$ref: '#/definitions/dto.CategoryDTO'
type: array
type: object
dto.ListProfilesResponse:
properties:
page:
type: integer
page_size:
type: integer
profiles:
items:
$ref: '#/definitions/dto.ProfileResponse'
type: array
total:
type: integer
type: object
dto.LoginRequest:
properties:
email:
type: string
password:
type: string
type: object
dto.OAuthCallbackRequest:
properties:
code:
type: string
provider:
$ref: '#/definitions/oauth.Provider'
type: object
dto.OAuthCallbackResponse:
properties:
access_token:
type: string
is_new_user:
type: boolean
refresh_token:
type: string
type: object
dto.OAuthRedirectURLRequest:
properties:
provider:
$ref: '#/definitions/oauth.Provider'
type: object
dto.OAuthRedirectURLResponse:
properties:
redirect_url:
type: string
type: object
dto.OverviewAssetDTO:
properties:
asset_category:
$ref: '#/definitions/dto.CategoryDTO'
asset_category_id:
type: string
content:
type: string
cover_image:
type: string
created_at:
type: string
currency:
type: string
description:
type: string
id:
type: string
link:
type: string
owner_id:
type: string
price:
type: integer
profile: {}
profile_id:
type: string
rating:
type: integer
status:
type: string
title:
type: string
updated_at:
type: string
type: object
dto.OverviewFetchedDataDTO:
properties:
analytics:
$ref: '#/definitions/dto.AnalyticsDTO'
assets:
items:
$ref: '#/definitions/dto.OverviewAssetDTO'
type: array
recently_joined:
items:
$ref: '#/definitions/dto.FlatProfileDTO'
type: array
type: object
dto.OverviewFetchedResponse:
properties:
data:
$ref: '#/definitions/dto.OverviewFetchedDataDTO'
message:
type: string
type: object
dto.PageSectionsResponse:
properties:
contact:
$ref: '#/definitions/dto.ContactDTO'
hero:
$ref: '#/definitions/dto.HeroDTO'
page_section_order:
additionalProperties:
type: integer
type: object
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
type: object
dto.PageSettingDTO:
properties:
visibility_level:
type: string
type: object
dto.ProfileResponse:
properties:
about:
$ref: '#/definitions/dto.AboutDTO'
contact:
$ref: '#/definitions/dto.ContactDTO'
handle:
type: string
hero:
$ref: '#/definitions/dto.HeroDTO'
id:
type: string
page_section_order:
additionalProperties:
type: integer
type: object
page_setting:
$ref: '#/definitions/dto.PageSettingDTO'
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
type: object
dto.ProfileRole:
properties:
id:
type: string
title:
type: string
type: object
dto.RefreshTokenRequest:
properties:
refresh_token:
type: string
type: object
dto.RegisterRequest:
properties:
email:
type: string
first_name:
type: string
last_name:
type: string
password:
type: string
phone_number:
type: string
type: object
dto.ResetPasswordRequest:
properties:
code:
type: string
email:
type: string
password:
type: string
type: object
dto.Response:
properties:
data: {}
message:
type: string
status:
type: integer
type: object
dto.RoleDTO:
properties:
ID:
type: string
Name:
type: string
type: object
dto.SendResetPasswordEmailRequest:
properties:
email:
type: string
type: object
dto.SendVerificationEmailRequest:
properties:
email:
type: string
type: object
dto.SetupProfileRequest:
properties:
handle:
type: string
role_id:
type: string
role_level:
type: string
short_description:
type: string
type: object
dto.Skill:
properties:
id:
type: string
name:
type: string
type: object
dto.SkillDTO:
properties:
level:
type: string
skill_name:
type: string
type: object
dto.SkillsUpdateRequest:
properties:
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
type: object
dto.SocialLinkDTO:
properties:
link:
type: string
link_type:
type: string
type: object
dto.Specialist:
properties:
avatar:
type: string
handle:
type: string
id:
type: string
type: object
dto.SpecialistOverviewFetchedDataDTO:
properties:
analytics:
$ref: '#/definitions/dto.AnalyticsDTO'
assets:
items:
$ref: '#/definitions/dto.OverviewAssetDTO'
type: array
completionPercent:
type: integer
profile:
$ref: '#/definitions/dto.ProfileResponse'
recently_joined:
items:
$ref: '#/definitions/dto.FlatProfileDTO'
type: array
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
tasks:
$ref: '#/definitions/dto.TasksDTO'
type: object
dto.SpecialistOverviewFetchedResponse:
properties:
data:
$ref: '#/definitions/dto.SpecialistOverviewFetchedDataDTO'
message:
type: string
type: object
dto.SuccessResponse:
properties:
message:
type: string
status:
example: 200
type: integer
type: object
dto.TasksDTO:
properties:
about_action:
type: boolean
profile_action:
type: boolean
publish_action:
type: boolean
skills_action:
type: boolean
social_action:
type: boolean
works_action:
type: boolean
type: object
dto.TokenResponse:
properties:
access_token:
type: string
refresh_token:
type: string
type: object
dto.UpdateAssetRequest:
properties:
asset_category_id:
type: string
description:
type: string
id:
type: string
link:
type: string
status:
type: integer
title:
type: string
type: object
dto.UpdateProfileRequest:
properties:
about:
$ref: '#/definitions/dto.AboutDTO'
contact:
$ref: '#/definitions/dto.ContactDTO'
handle:
type: string
hero:
$ref: '#/definitions/dto.HeroDTO'
id:
type: string
page_section_order:
additionalProperties:
type: integer
type: object
page_setting:
$ref: '#/definitions/dto.PageSettingDTO'
skills:
items:
$ref: '#/definitions/dto.SkillDTO'
type: array
type: object
dto.UpdateProfileRoleRequest:
properties:
id:
type: string
title:
type: string
type: object
dto.UserInfoResponse:
properties:
email:
type: string
email_verified:
type: boolean
first_name:
type: string
id:
type: string
last_name:
type: string
phone_number:
type: string
profile_id:
type: string
status:
type: string
type: object
dto.VerifyAccountRequest:
properties:
code:
type: string
email:
type: string
type: object
oauth.Provider:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
x-enum-varnames:
- Unknown
- Credentials
- Google
- GitHub
- Linkedin
- Mock
host: localhost:8101
info:
contact:
email: support@abric.io
name: API Support
url: http://www.abric.io/support
description: API for base application
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: http://swagger.io/terms/
title: Base API
version: 1.0.0
paths:
/api/specialists/v1/page-sections:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.PageSectionsResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: get page sections
tags:
- Specialist
/api/specialists/v1/page-sections/contact:
put:
consumes:
- application/json
parameters:
- description: contact section
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.ContactDTO'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.SuccessResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: update contact section
tags:
- Specialist
/api/specialists/v1/page-sections/hero:
put:
consumes:
- application/json
parameters:
- description: hero section
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.HeroDTO'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.SuccessResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: update hero section
tags:
- Specialist
/api/specialists/v1/page-sections/skills:
put:
consumes:
- application/json
parameters:
- description: skills section
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.SkillsUpdateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.SuccessResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: update skills section
tags:
- Specialist
/api/specialists/v1/profile:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.ProfileResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: Not Found
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: get specialist profile
tags:
- Specialist
/api/v1/assets:
post:
consumes:
- application/json
description: create a new asset
parameters:
- description: create asset request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.CreateAssetRequest'
produces:
- application/json
responses:
"201":
description: asset response
schema:
$ref: '#/definitions/dto.AssetResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: category not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: create asset
tags:
- Asset
/api/v1/assets/{id}:
delete:
consumes:
- application/json
description: delete an asset
parameters:
- description: asset ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: asset not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: delete asset
tags:
- Asset
get:
consumes:
- application/json
description: get asset by ID
parameters:
- description: asset ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: asset response
schema:
$ref: '#/definitions/dto.AssetResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: asset not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get asset by ID
tags:
- Asset
put:
consumes:
- application/json
description: update an existing asset
parameters:
- description: asset ID
in: path
name: id
required: true
type: string
- description: update asset request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.UpdateAssetRequest'
produces:
- application/json
responses:
"200":
description: asset response
schema:
$ref: '#/definitions/dto.AssetResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: asset not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: update asset
tags:
- Asset
/api/v1/assets/categories:
get:
consumes:
- application/json
description: returns all asset categories
produces:
- application/json
responses:
"200":
description: list of categories
schema:
$ref: '#/definitions/dto.ListCategoriesResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list asset categories
tags:
- Asset
/api/v1/assets/categories/{id}/assets:
get:
consumes:
- application/json
description: returns paginated assets for the given category. Use after fetching
categories from GET /assets/categories.
parameters:
- description: category UUID
in: path
name: id
required: true
type: string
- description: max items per page (default 10)
in: query
name: limit
type: integer
- description: page number (default 1)
in: query
name: page
type: integer
produces:
- application/json
responses:
"200":
description: paginated assets for category
schema:
$ref: '#/definitions/dto.ListAssetsByCategoryIDResponse'
"400":
description: invalid category ID
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: category not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list assets by category ID
tags:
- Asset
/api/v1/assets/categories/preview:
post:
consumes:
- application/json
description: returns asset categories, each with up to N sample assets (default
8). Use for carousels and landing previews.
parameters:
- description: filter options
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.CategoriesPreviewRequest'
produces:
- application/json
responses:
"200":
description: categories with preview assets
schema:
$ref: '#/definitions/dto.CategoriesPreviewResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list categories with preview assets
tags:
- Asset
/api/v1/auth/login:
post:
consumes:
- application/json
description: login with email and password
parameters:
- description: login request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.LoginRequest'
produces:
- application/json
responses:
"200":
description: token response
schema:
$ref: '#/definitions/dto.TokenResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: invalid credentials
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: login with credentials
tags:
- Public
/api/v1/auth/oauth/callback:
post:
consumes:
- application/json
description: handle OAuth callback and authenticate user
parameters:
- description: oauth callback request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.OAuthCallbackRequest'
produces:
- application/json
responses:
"200":
description: oauth callback response
schema:
$ref: '#/definitions/dto.OAuthCallbackResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: oauth callback
tags:
- Public
/api/v1/auth/oauth/redirect-url:
post:
consumes:
- application/json
description: get OAuth redirect URL for the specified provider
parameters:
- description: oauth redirect url request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.OAuthRedirectURLRequest'
produces:
- application/json
responses:
"200":
description: oauth redirect url response
schema:
$ref: '#/definitions/dto.OAuthRedirectURLResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get oauth redirect url
tags:
- Public
/api/v1/auth/refresh-token:
post:
consumes:
- application/json
description: refresh access token using refresh token
parameters:
- description: refresh token request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.RefreshTokenRequest'
produces:
- application/json
responses:
"200":
description: token response
schema:
$ref: '#/definitions/dto.TokenResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: invalid refresh token
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: refresh token
tags:
- Public
/api/v1/auth/register:
post:
consumes:
- application/json
description: register a new user with email and password
parameters:
- description: register request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.RegisterRequest'
produces:
- application/json
responses:
"200":
description: token response
schema:
$ref: '#/definitions/dto.TokenResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: register with credentials
tags:
- Public
/api/v1/auth/reset-password:
post:
consumes:
- application/json
description: reset password with reset code
parameters:
- description: reset password request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.ResetPasswordRequest'
produces:
- application/json
responses:
"200":
description: token response
schema:
$ref: '#/definitions/dto.TokenResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: reset password
tags:
- Public
/api/v1/auth/send-reset-password-email:
post:
consumes:
- application/json
description: send password reset email
parameters:
- description: send reset password email request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.SendResetPasswordEmailRequest'
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: send reset password email
tags:
- Public
/api/v1/auth/send-verification-email:
post:
consumes:
- application/json
description: send verification email to the authenticated user
parameters:
- description: send verification email request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.SendVerificationEmailRequest'
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: send verification email
tags:
- Public
/api/v1/auth/verify-account:
post:
consumes:
- application/json
description: verify account with verification code
parameters:
- description: verify account request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.VerifyAccountRequest'
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: verify account
tags:
- Public
/api/v1/backoffice/profile-roles:
get:
consumes:
- application/json
description: returns all profile roles (id, title, status)
produces:
- application/json
responses:
"200":
description: list of profile roles
schema:
items:
$ref: '#/definitions/dto.ProfileRole'
type: array
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list profile roles
tags:
- BackOffice
post:
consumes:
- application/json
description: create a new profile role
parameters:
- description: create request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.CreateProfileRoleRequest'
produces:
- application/json
responses:
"201":
description: created profile role
schema:
$ref: '#/definitions/dto.ProfileRole'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- BearerAuth: []
summary: create profile role
tags:
- BackOffice
/api/v1/backoffice/profile-roles/{id}:
delete:
description: delete a profile role
parameters:
- description: profile role ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: success
schema:
$ref: '#/definitions/dto.Response'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- BearerAuth: []
summary: delete profile role
tags:
- BackOffice
get:
consumes:
- application/json
description: get profile role by ID
parameters:
- description: profile role ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: profile role
schema:
$ref: '#/definitions/dto.ProfileRole'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get profile role by ID
tags:
- BackOffice
put:
consumes:
- application/json
description: update an existing profile role
parameters:
- description: profile role ID
in: path
name: id
required: true
type: string
- description: update request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.UpdateProfileRoleRequest'
produces:
- application/json
responses:
"200":
description: updated profile role
schema:
$ref: '#/definitions/dto.ProfileRole'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- BearerAuth: []
summary: update profile role
tags:
- BackOffice
/api/v1/landing:
get:
consumes:
- application/json
description: returns landing page with categories, specialist roles, assets
by category, specialists, and blogs
produces:
- application/json
responses:
"200":
description: landing page data
schema:
$ref: '#/definitions/dto.Landing'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get landing page
tags:
- Landing
/api/v1/platform/overview/discovery:
get:
consumes:
- application/json
description: overview for browsing users (latest assets, recently joined profiles,
analytics). No profile required.
produces:
- application/json
responses:
"200":
description: overview response
schema:
$ref: '#/definitions/dto.OverviewFetchedResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- BearerAuth: []
summary: get discovery overview
tags:
- Platform
/api/v1/platform/overview/specialist:
get:
description: get overview for specialist view with assets, profile, skills,
recently joined, analytics
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/dto.SpecialistOverviewFetchedResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: profile not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- BearerAuth: []
summary: get specialist overview
tags:
- Platform
/api/v1/platform/profile-roles:
get:
description: returns all profile roles (id, title) for platform - use role_id
when calling setup-profile
produces:
- application/json
responses:
"200":
description: list of profile roles
schema:
items:
$ref: '#/definitions/dto.ProfileRole'
type: array
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list profile roles
tags:
- Platform
/api/v1/platform/skills:
get:
description: returns all skills from the catalog for profile update skill selection
produces:
- application/json
responses:
"200":
description: list of skills
schema:
items:
$ref: '#/definitions/dto.Skill'
type: array
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list skills
tags:
- Platform
/api/v1/platform/user/info:
get:
description: returns user and profile_id for the authenticated user
produces:
- application/json
responses:
"200":
description: account info
schema:
$ref: '#/definitions/dto.UserInfoResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: user not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: get account info
tags:
- Platform
/api/v1/profiles:
get:
consumes:
- application/json
description: list profiles with filtering and pagination
parameters:
- description: role ID
in: query
name: role_id
type: string
- description: first name
in: query
name: first_name
type: string
- description: last name
in: query
name: last_name
type: string
- description: company
in: query
name: company
type: string
- description: skill name
in: query
name: skill_name
type: string
- default: 1
description: page number
in: query
name: page
type: integer
- default: 10
description: page size
in: query
name: page_size
type: integer
- description: sort field
in: query
name: sorted_by
type: string
- default: false
description: ascending order
in: query
name: ascending
type: boolean
produces:
- application/json
responses:
"200":
description: list profiles response
schema:
$ref: '#/definitions/dto.ListProfilesResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list profiles
tags:
- Profile
post:
consumes:
- application/json
description: create a new profile
parameters:
- description: create profile request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.CreateProfileRequest'
produces:
- application/json
responses:
"201":
description: profile response
schema:
$ref: '#/definitions/dto.ProfileResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: create profile
tags:
- Profile
/api/v1/profiles/{id}:
delete:
consumes:
- application/json
description: delete a profile
parameters:
- description: profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: profile not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: delete profile
tags:
- Profile
get:
consumes:
- application/json
description: get profile by ID
parameters:
- description: profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: profile response
schema:
$ref: '#/definitions/dto.ProfileResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: profile not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get profile by ID
tags:
- Profile
put:
consumes:
- application/json
description: update an existing profile
parameters:
- description: profile ID
in: path
name: id
required: true
type: string
- description: update profile request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.UpdateProfileRequest'
produces:
- application/json
responses:
"200":
description: profile response
schema:
$ref: '#/definitions/dto.ProfileResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: profile not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: update profile
tags:
- Profile
/api/v1/profiles/{id}/assets:
get:
consumes:
- application/json
description: list all assets for a profile
parameters:
- description: profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: list assets response
schema:
$ref: '#/definitions/dto.ListAssetsResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: list assets by profile ID
tags:
- Asset
/api/v1/profiles/handle/{handle}:
get:
consumes:
- application/json
description: get profile by handle
parameters:
- description: profile handle
in: path
name: handle
required: true
type: string
produces:
- application/json
responses:
"200":
description: profile response
schema:
$ref: '#/definitions/dto.ProfileResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: profile not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
summary: get profile by handle
tags:
- Profile
/api/v1/user/platform/setup-profile:
post:
consumes:
- application/json
description: complete profile with handle, role, level, and short bio. Requires
authentication.
parameters:
- description: setup profile request
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.SetupProfileRequest'
produces:
- application/json
responses:
"200":
description: success response
schema:
$ref: '#/definitions/dto.SuccessResponse'
"400":
description: invalid request
schema:
$ref: '#/definitions/dto.ErrorResponse'
"401":
description: unauthorized
schema:
$ref: '#/definitions/dto.ErrorResponse'
"404":
description: user not found
schema:
$ref: '#/definitions/dto.ErrorResponse'
"409":
description: profile already exists or handle already taken
schema:
$ref: '#/definitions/dto.ErrorResponse'
"500":
description: internal server error
schema:
$ref: '#/definitions/dto.ErrorResponse'
security:
- Bearer: []
summary: setup profile after registration
tags:
- Platform
schemes:
- http
- https
securityDefinitions:
Bearer:
description: Type "Bearer" followed by a space and JWT token.
in: header
name: Authorization
type: apiKey
swagger: "2.0"