Skip to content

Instantly share code, notes, and snippets.

@alg
Last active December 6, 2022 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alg/ccd508e2a0e762d486d6cee00c0f3ad1 to your computer and use it in GitHub Desktop.
Save alg/ccd508e2a0e762d486d6cee00c0f3ad1 to your computer and use it in GitHub Desktop.
{
"openapi": "3.0.0",
"info": {
"title": "HR API",
"version": "3.0.0",
"description": "Manages employees, their roles and profiles.",
"contact": {
"name": "Aleksey Gureiev",
"email": "agureiev@shakuro.com"
}
},
"paths": {
"\/api\/categories": {
"get": {
"tags": [
"Categories"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32",
"required": true,
"example": "1"
},
"name": {
"type": "string",
"required": true,
"example": "Full-time"
},
"instruction": {
"type": "string",
"example": "Category instruction template"
}
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns the list of all categories in the app."
},
"post": {
"tags": [
"Categories"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"400": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"example": [
"body",
"name"
]
},
"messages": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"required": true,
"example": [
"Can't be null"
]
}
}
}
}
}
}
}
},
"status": 200,
"description": "Validation errors"
},
"201": {
"content": {},
"status": 200,
"description": "Category created"
}
},
"requestBody": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"required": true,
"example": "Name"
},
"instruction": {
"type": "string",
"example": "Instruction"
}
}
}
}
},
"required": true,
"description": null
},
"summary": "Creates category."
}
},
"\/api\/departments": {
"get": {
"tags": [
"Departments"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"description": "Department ID"
},
"name": {
"type": "string",
"required": true,
"description": "User-facing department name"
},
"description": {
"type": "string",
"required": true,
"description": "Description of the department"
}
}
}
}
}
}
}
},
"status": 200,
"description": "Departments list"
}
},
"summary": "Returns the list of all departments in the application."
}
},
"\/api\/employees\/me": {
"get": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"404": {
"content": {},
"status": 200,
"description": "Employee not found"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"format": "uuid"
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"required": true,
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"required": true,
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"required": true,
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"required": true,
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"required": true,
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"required": true,
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"required": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"required": true
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns own profile."
}
},
"\/api\/employees\/joined_this_month": {
"get": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"format": "uuid"
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"required": true,
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"required": true,
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"required": true,
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"required": true,
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"required": true,
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"required": true,
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"required": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"required": true
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns the list of employees joined this month (looking by work_start_date field)."
}
},
"\/api\/employees": {
"get": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "page[after]",
"schema": {
"type": "string",
"description": "Page cursor"
},
"description": "Page cursor. If unset, the first page.",
"in": "query"
},
{
"name": "page[size]",
"schema": {
"type": "integer",
"format": "int32",
"default": 50,
"description": "Page size"
},
"description": "Page size",
"in": "query"
},
{
"name": "sort[order]",
"schema": {
"type": "string",
"description": "Sort order",
"enum": [
"asc",
"desc"
],
"default": "asc"
},
"description": "Order of sort",
"in": "query"
},
{
"name": "sort[field]",
"schema": {
"type": "string",
"description": "Field to sort results by",
"enum": [
"name",
"workStartDate"
],
"default": "name"
},
"description": "Field to sort results by",
"in": "query"
},
{
"name": "query",
"schema": {
"type": "string"
},
"description": "Search query. Supports partial. Looks in the names.",
"in": "query"
},
{
"name": "department",
"schema": {
"type": "string"
},
"description": "One or more departments an employee is in (comma-separated). Example: design,mobile",
"in": "query"
},
{
"name": "office",
"schema": {
"type": "string"
},
"description": "One or more offices an employee works from (comma-separated). Example: \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439,\u041b\u0438\u0434\u0435\u0440",
"in": "query"
}
],
"responses": {
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"format": "uuid"
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"required": true,
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"required": true,
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"required": true,
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"required": true,
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"required": true,
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"required": true,
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"required": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"required": true
}
}
}
},
"page": {
"type": "object",
"properties": {
"cursor": {
"type": "string",
"nullable": true,
"example": "1eb2dafc3",
"description": "Next page cursor. If missing, no next page."
},
"total": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1,
"description": "Total number of records in the set."
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns the list of all employees."
},
"post": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"409": {
"content": {},
"status": 200,
"description": "Employee email taken"
},
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"400": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"example": [
"body",
"name"
]
},
"messages": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"required": true,
"example": [
"Can't be null"
]
}
}
}
}
}
}
}
},
"status": 200,
"description": "Validation errors"
},
"201": {
"content": {},
"status": 200,
"description": "Employee created"
}
},
"requestBody": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string",
"required": true
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartSate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
}
}
}
}
},
"required": true,
"description": null
},
"summary": "Registers the employee."
}
},
"\/api\/employees\/upcoming_birthdays": {
"get": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"format": "uuid"
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"required": true,
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"required": true,
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"required": true,
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"required": true,
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"required": true,
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"required": true,
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"required": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"required": true
}
}
}
},
"page": {
"type": "object",
"properties": {
"cursor": {
"type": "string",
"nullable": true,
"example": "1eb2dafc3",
"description": "Next page cursor. If missing, no next page."
},
"total": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1,
"description": "Total number of records in the set."
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns the list of employees with upcoming birthdays."
}
},
"\/api\/offices": {
"get": {
"tags": [
"Offices"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"description": "Office ID"
},
"name": {
"type": "string",
"required": true,
"description": "User-facing office name"
}
}
}
}
}
}
}
},
"status": 200,
"description": "Offices list"
}
},
"summary": "Returns the list of all offices in the application."
}
},
"\/api\/roles": {
"get": {
"tags": [
"Roles"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"description": "Role ID"
},
"name": {
"type": "string",
"required": true,
"description": "User-facing role name"
},
"description": {
"type": "string",
"required": true,
"description": "Description of the role"
}
}
}
}
}
}
}
},
"status": 200,
"description": "Roles list"
}
},
"summary": "Returns the list of all roles in the application."
}
},
"\/api\/service_accounts": {
"get": {
"tags": [
"Service Accounts"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
}
],
"responses": {
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"description": "ServiceAccount ID"
},
"name": {
"type": "string",
"required": true,
"description": "User-facing service account name"
},
"description": {
"type": "string",
"description": "Service description"
},
"url": {
"type": "string",
"description": "Service URL",
"format": "url"
}
}
}
}
}
}
}
},
"status": 200,
"description": "Service accounts list"
}
},
"summary": "Returns the list of all service accounts in the application."
}
},
"\/api\/categories\/{category_id}": {
"get": {
"tags": [
"Categories"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "category_id",
"schema": {
"type": "integer",
"format": "int32"
},
"required": true,
"in": "path"
}
],
"responses": {
"404": {
"content": {},
"status": 200,
"description": "Category not found"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32",
"required": true,
"example": "1"
},
"name": {
"type": "string",
"required": true,
"example": "Full-time"
},
"instruction": {
"type": "string",
"example": "Category instruction template"
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns the category."
},
"delete": {
"tags": [
"Categories"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "category_id",
"schema": {
"type": "integer",
"format": "int32"
},
"required": true,
"in": "path"
}
],
"responses": {
"404": {
"content": {},
"status": 200,
"description": "Category not found"
},
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"204": {
"content": {},
"status": 200,
"description": "Category deleted"
}
},
"summary": "Deletes category."
},
"put": {
"tags": [
"Categories"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "category_id",
"schema": {
"type": "integer",
"format": "int32"
},
"required": true,
"in": "path"
}
],
"responses": {
"404": {
"content": {},
"status": 200,
"description": "Category not found"
},
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"400": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"example": [
"body",
"name"
]
},
"messages": {
"type": "array",
"items": {
"type": "string",
"required": true
},
"required": true,
"example": [
"Can't be null"
]
}
}
}
}
}
}
}
},
"status": 200,
"description": "Validation errors"
},
"204": {
"content": {},
"status": 200,
"description": "Category updated"
}
},
"requestBody": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"required": true,
"example": "New Name"
},
"instruction": {
"type": "string",
"required": true,
"example": "New instruction"
}
}
}
}
},
"required": true,
"description": null
},
"summary": "Updates category."
}
},
"\/api\/employees\/{employee_id}": {
"get": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "employee_id",
"schema": {
"type": "string"
},
"required": true,
"in": "path"
}
],
"responses": {
"404": {
"content": {},
"status": 200,
"description": "Employee not found"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"200": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true,
"format": "uuid"
},
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"required": true,
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"required": true,
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"required": true,
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"required": true,
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"required": true,
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"required": true,
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"required": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"required": true
}
}
}
}
}
}
},
"status": 200,
"description": "Success"
}
},
"summary": "Returns employee."
},
"delete": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "employee_id",
"schema": {
"type": "string"
},
"required": true,
"in": "path"
}
],
"responses": {
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"204": {
"content": {},
"status": 200,
"description": "Employee deleted"
}
},
"summary": "Deletes the employee."
},
"put": {
"tags": [
"Employees"
],
"security": [],
"parameters": [
{
"name": "x-employee-id",
"schema": {
"type": "string"
},
"required": true,
"in": "header"
},
{
"name": "employee_id",
"schema": {
"type": "string"
},
"required": true,
"in": "path"
}
],
"responses": {
"409": {
"content": {},
"status": 200,
"description": "Employee email taken"
},
"403": {
"content": {},
"status": 200,
"description": "Forbidden"
},
"401": {
"content": {},
"status": 200,
"description": "Unauthorized"
},
"400": {
"content": {},
"status": 200,
"description": "Validation errors"
},
"204": {
"content": {},
"status": 200,
"description": "Employee updated"
}
},
"requestBody": {
"content": {
"application\/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"required": true,
"example": "Vasya"
},
"email": {
"type": "string",
"format": "email",
"required": true
},
"dateOfBirth": {
"type": "string",
"format": "date",
"required": true,
"example": "2011-01-24"
},
"remote": {
"type": "boolean",
"required": true
},
"department": {
"type": "string",
"required": true,
"example": "Backend"
},
"categoryId": {
"type": "integer",
"format": "int32",
"required": true,
"example": 1
},
"skype": {
"type": "string",
"required": true,
"example": "skype"
},
"phone": {
"type": "string",
"required": true,
"example": "79780001234"
},
"workStartDate": {
"type": "string",
"format": "date",
"required": true
},
"registrationType": {
"type": "string",
"required": true,
"oneOf": [
"none",
"employee",
"entrepreneur",
"self-employed"
],
"example": "employee"
},
"serviceAccounts": {
"type": "array",
"items": {
"type": "string"
},
"oneOf": [
"jira",
"hubstaff",
"google_drive",
"sinel",
"yandex_mail"
],
"example": [
"jira",
"hubstaff"
],
"required": true
},
"office": {
"type": "string",
"nullable": true,
"example": "main"
},
"telegram": {
"type": "string",
"nullable": true,
"example": "tele"
},
"about": {
"type": "string",
"nullable": true,
"example": "About me"
},
"photo": {
"type": "string",
"nullable": true,
"example": "photos\/key.png"
},
"githubName": {
"type": "string",
"nullable": true,
"example": "github"
},
"gitlabName": {
"type": "string",
"nullable": true,
"example": "gitlab"
},
"roles": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"hr"
]
}
}
}
}
},
"required": true,
"description": null
},
"summary": "Updates the employee."
}
}
},
"tags": [
{
"name": "Categories"
},
{
"name": "Departments"
},
{
"name": "Employees"
},
{
"name": "Offices"
},
{
"name": "Roles"
},
{
"name": "Service Accounts"
}
],
"servers": [],
"components": null,
"externalDocs": null
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment