targo-backend/docs/swagger/swagger-spec.json
2025-07-22 14:33:21 -04:00

2285 lines
59 KiB
JSON
Raw 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.

{
"openapi": "3.0.0",
"paths": {
"/": {
"get": {
"operationId": "AppController_getHello",
"parameters": [],
"responses": {
"200": {
"description": ""
}
},
"tags": [
"App"
]
}
},
"/health": {
"get": {
"operationId": "HealthController_check",
"parameters": [],
"responses": {
"200": {
"description": ""
}
},
"tags": [
"Health"
]
}
},
"/oauth-access-tokens": {
"post": {
"operationId": "OauthAccessTokensController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOauthAccessTokenDto"
}
}
}
},
"responses": {
"201": {
"description": "OAuth access token created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAccessTokenEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create OAuth access token",
"tags": [
"OAuth Access Tokens"
]
},
"get": {
"operationId": "OauthAccessTokensController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of OAuth access token found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OAuthAccessTokenEntity"
}
}
}
}
},
"400": {
"description": "List of OAuth access token not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all OAuth access token",
"tags": [
"OAuth Access Tokens"
]
}
},
"/oauth-access-tokens/{id}": {
"get": {
"operationId": "OauthAccessTokensController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"201": {
"description": "OAuth access token found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAccessTokenEntity"
}
}
}
},
"400": {
"description": "OAuth access token not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find OAuth access token",
"tags": [
"OAuth Access Tokens"
]
},
"patch": {
"operationId": "OauthAccessTokensController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOauthAccessTokenDto"
}
}
}
},
"responses": {
"201": {
"description": "OAuth access token updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAccessTokenEntity"
}
}
}
},
"400": {
"description": "OAuth access token not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update OAuth access token",
"tags": [
"OAuth Access Tokens"
]
},
"delete": {
"operationId": "OauthAccessTokensController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"201": {
"description": "OAuth access token deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAccessTokenEntity"
}
}
}
},
"400": {
"description": "OAuth access token not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete OAuth access token",
"tags": [
"OAuth Access Tokens"
]
}
},
"/customers": {
"post": {
"operationId": "CustomersController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCustomerDto"
}
}
}
},
"responses": {
"201": {
"description": "Customer created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomerEntity"
}
}
}
},
"400": {
"description": "Invalid task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create customer",
"tags": [
"Customers"
]
},
"get": {
"operationId": "CustomersController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of customers found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CustomerEntity"
}
}
}
}
},
"400": {
"description": "List of customers not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all customers",
"tags": [
"Customers"
]
}
},
"/customers/{id}": {
"get": {
"operationId": "CustomersController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Customer found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomerEntity"
}
}
}
},
"400": {
"description": "Customer not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find customer",
"tags": [
"Customers"
]
},
"patch": {
"operationId": "CustomersController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateCustomerDto"
}
}
}
},
"responses": {
"201": {
"description": "Customer updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomerEntity"
}
}
}
},
"400": {
"description": "Customer not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update customer",
"tags": [
"Customers"
]
},
"delete": {
"operationId": "CustomersController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Customer deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomerEntity"
}
}
}
},
"400": {
"description": "Customer not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete customer",
"tags": [
"Customers"
]
}
},
"/employees": {
"post": {
"operationId": "EmployeesController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateEmployeeDto"
}
}
}
},
"responses": {
"201": {
"description": "Employee created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmployeeEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create employee",
"tags": [
"Employees"
]
},
"get": {
"operationId": "EmployeesController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of employees found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EmployeeEntity"
}
}
}
}
},
"400": {
"description": "List of employees not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all employees",
"tags": [
"Employees"
]
}
},
"/employees/{id}": {
"get": {
"operationId": "EmployeesController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Employee found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmployeeEntity"
}
}
}
},
"400": {
"description": "Employee not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find employee",
"tags": [
"Employees"
]
},
"patch": {
"operationId": "EmployeesController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateEmployeeDto"
}
}
}
},
"responses": {
"201": {
"description": "Employee updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmployeeEntity"
}
}
}
},
"400": {
"description": "Employee not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update employee",
"tags": [
"Employees"
]
},
"delete": {
"operationId": "EmployeesController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Employee deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmployeeEntity"
}
}
}
},
"400": {
"description": "Employee not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete employee",
"tags": [
"Employees"
]
}
},
"/leave-requests": {
"post": {
"operationId": "LeaveRequestController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateLeaveRequestsDto"
}
}
}
},
"responses": {
"201": {
"description": "Leave request created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LeaveRequestEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create leave request",
"tags": [
"Leave Requests"
]
},
"get": {
"operationId": "LeaveRequestController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of Leave requests found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LeaveRequestEntity"
}
}
}
}
},
"400": {
"description": "Leave request not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all leave request",
"tags": [
"Leave Requests"
]
}
},
"/leave-requests/{id}": {
"get": {
"operationId": "LeaveRequestController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Leave request found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LeaveRequestEntity"
}
}
}
},
"400": {
"description": "Leave request not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find leave request",
"tags": [
"Leave Requests"
]
},
"patch": {
"operationId": "LeaveRequestController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateLeaveRequestsDto"
}
}
}
},
"responses": {
"201": {
"description": "Leave request updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LeaveRequestEntity"
}
}
}
},
"400": {
"description": "Leave request not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update leave request",
"tags": [
"Leave Requests"
]
},
"delete": {
"operationId": "LeaveRequestController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Leave request deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LeaveRequestEntity"
}
}
}
},
"400": {
"description": "Leave request not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete leave request",
"tags": [
"Leave Requests"
]
}
},
"/shift-codes": {
"post": {
"operationId": "ShiftCodesController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateShiftCodesDto"
}
}
}
},
"responses": {
"201": {
"description": "Shift code created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftCodesEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create shift code",
"tags": [
"Shift Codes"
]
},
"get": {
"operationId": "ShiftCodesController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of shift codes found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShiftCodesEntity"
}
}
}
}
},
"400": {
"description": "List of shift codes not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all shift codes",
"tags": [
"Shift Codes"
]
}
},
"/shift-codes/{id}": {
"get": {
"operationId": "ShiftCodesController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Shift code found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftCodesEntity"
}
}
}
},
"400": {
"description": "Shift code not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find shift code",
"tags": [
"Shift Codes"
]
},
"patch": {
"operationId": "ShiftCodesController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateShiftCodesDto"
}
}
}
},
"responses": {
"201": {
"description": "Shift code updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftCodesEntity"
}
}
}
},
"400": {
"description": "Shift code not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update shift code",
"tags": [
"Shift Codes"
]
},
"delete": {
"operationId": "ShiftCodesController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Shift code deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftCodesEntity"
}
}
}
},
"400": {
"description": "Shift code not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete shift code",
"tags": [
"Shift Codes"
]
}
},
"/shifts": {
"post": {
"operationId": "ShiftsController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateShiftDto"
}
}
}
},
"responses": {
"201": {
"description": "Shift created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create shift",
"tags": [
"Shifts"
]
},
"get": {
"operationId": "ShiftsController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of shifts found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ShiftEntity"
}
}
}
}
},
"400": {
"description": "List of shifts not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all shifts",
"tags": [
"Shifts"
]
}
},
"/shifts/{id}": {
"get": {
"operationId": "ShiftsController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Shift found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftEntity"
}
}
}
},
"400": {
"description": "Shift not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find shift",
"tags": [
"Shifts"
]
},
"patch": {
"operationId": "ShiftsController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateShiftsDto"
}
}
}
},
"responses": {
"201": {
"description": "Shift updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftEntity"
}
}
}
},
"400": {
"description": "Shift not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update shift",
"tags": [
"Shifts"
]
},
"delete": {
"operationId": "ShiftsController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Shift deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShiftEntity"
}
}
}
},
"400": {
"description": "Shift not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete shift",
"tags": [
"Shifts"
]
}
},
"/timesheets": {
"post": {
"operationId": "TimesheetsController_create",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTimesheetDto"
}
}
}
},
"responses": {
"201": {
"description": "Timesheet created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimesheetEntity"
}
}
}
},
"400": {
"description": "Incomplete task or invalid data"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Create timesheet",
"tags": [
"Timesheets"
]
},
"get": {
"operationId": "TimesheetsController_findAll",
"parameters": [],
"responses": {
"201": {
"description": "List of timesheet found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimesheetEntity"
}
}
}
}
},
"400": {
"description": "List of timesheets not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find all timesheets",
"tags": [
"Timesheets"
]
}
},
"/timesheets/{id}": {
"get": {
"operationId": "TimesheetsController_findOne",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Timesheet found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimesheetEntity"
}
}
}
},
"400": {
"description": "Timesheet not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Find timesheet",
"tags": [
"Timesheets"
]
},
"patch": {
"operationId": "TimesheetsController_update",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTimesheetDto"
}
}
}
},
"responses": {
"201": {
"description": "Timesheet updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimesheetEntity"
}
}
}
},
"400": {
"description": "Timesheet not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Update timesheet",
"tags": [
"Timesheets"
]
},
"delete": {
"operationId": "TimesheetsController_remove",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"type": "number"
}
}
],
"responses": {
"201": {
"description": "Timesheet deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimesheetEntity"
}
}
}
},
"400": {
"description": "Timesheet not found"
}
},
"security": [
{
"access-token": []
}
],
"summary": "Delete timesheet",
"tags": [
"Timesheets"
]
}
}
},
"info": {
"title": "Targo_Backend",
"description": "Documentation de l`API REST pour Targo (NestJS + Prisma)",
"version": "1.0",
"contact": {}
},
"tags": [
{
"name": "Users",
"description": ""
},
{
"name": "Employees",
"description": ""
},
{
"name": "Customers",
"description": ""
},
{
"name": "Timesheets",
"description": ""
},
{
"name": "Shifts",
"description": ""
},
{
"name": "Leave Requests",
"description": ""
},
{
"name": "Shift Codes",
"description": ""
},
{
"name": "OAuth Access Tokens",
"description": ""
},
{
"name": "Authorization",
"description": ""
}
],
"servers": [],
"components": {
"securitySchemes": {
"access-token": {
"scheme": "bearer",
"bearerFormat": "JWT",
"type": "http",
"name": "Authorization",
"description": "Invalid JWT token",
"in": "header"
}
},
"schemas": {
"CreateOauthAccessTokenDto": {
"type": "object",
"properties": {
"user_id": {
"type": "string",
"example": "S7A2U8R7O6N6",
"description": "User`s unique identification number"
},
"application": {
"type": "string",
"example": "app.targo.ca",
"description": "URL in which the access token is used for"
},
"access_token": {
"type": "string",
"example": "L5O6R4D3/O6F3#T8H4E3&R6I4N6G4S7 ...",
"description": "Access token"
},
"refresh_token": {
"type": "string",
"example": "Th3731102h1p07Th3R1n92",
"description": "Refresh token"
},
"access_token_expiry": {
"format": "date-time",
"type": "string",
"example": "25/12/3018",
"description": "Access token`s expiry date"
},
"refresh_token_expiry": {
"format": "date-time",
"type": "string",
"example": "26/02/3019",
"description": "Refresh token`s expiry date"
},
"scopes": {
"example": "access tolkiens, email, etc... ",
"description": "scopes of infos needed for access",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"user_id",
"application",
"access_token",
"refresh_token",
"access_token_expiry"
]
},
"OAuthAccessTokenEntity": {
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "cklwi0vb70000z2z20q6f19qk",
"description": "Identifiant unique du token OAuth (généré automatiquement)"
},
"user_id": {
"type": "string",
"example": "0e6e2e1f-b157-4c7c-ae3f-999b3e4f914d",
"description": "UUID de lutilisateur auquel ce token appartient"
},
"application": {
"type": "string",
"example": "app.targo.ca",
"description": "Nom de lapplication ou domaine utilisant ce token"
},
"access_token": {
"type": "string",
"example": "L5O6R4D3/O6F3#T8H4E3&R6I4N6G4S7",
"description": "Token daccès OAuth"
},
"refresh_token": {
"type": "string",
"example": "Th3731102h1p07Th3R1n92",
"description": "Token de rafraîchissement OAuth"
},
"access_token_expiry": {
"format": "date-time",
"type": "string",
"example": "3018-12-25T00:00:00.000Z",
"description": "Date dexpiration du token daccès"
},
"refresh_token_expiry": {
"format": "date-time",
"type": "string",
"example": "3019-02-26T00:00:00.000Z",
"description": "Date dexpiration du token de rafraîchissement (optionnelle)"
},
"scopes": {
"example": [
"email",
"profile",
"access_tolkiens"
],
"description": "Liste des autorisations/scopes liés à ce token",
"type": "array",
"items": {
"type": "string"
}
},
"is_revoked": {
"type": "boolean",
"example": false,
"description": "Indique si le token a été révoqué"
},
"created_at": {
"format": "date-time",
"type": "string",
"example": "2025-07-22T08:44:00.000Z",
"description": "Date de création du token"
},
"updated_at": {
"format": "date-time",
"type": "string",
"example": "2025-07-23T08:44:00.000Z",
"description": "Date de dernière mise à jour (optionnelle)"
}
},
"required": [
"id",
"user_id",
"application",
"access_token",
"refresh_token",
"access_token_expiry",
"is_revoked",
"created_at"
]
},
"UpdateOauthAccessTokenDto": {
"type": "object",
"properties": {
"user_id": {
"type": "string",
"example": "S7A2U8R7O6N6",
"description": "User`s unique identification number"
},
"application": {
"type": "string",
"example": "app.targo.ca",
"description": "URL in which the access token is used for"
},
"access_token": {
"type": "string",
"example": "L5O6R4D3/O6F3#T8H4E3&R6I4N6G4S7 ...",
"description": "Access token"
},
"refresh_token": {
"type": "string",
"example": "Th3731102h1p07Th3R1n92",
"description": "Refresh token"
},
"access_token_expiry": {
"format": "date-time",
"type": "string",
"example": "25/12/3018",
"description": "Access token`s expiry date"
},
"refresh_token_expiry": {
"format": "date-time",
"type": "string",
"example": "26/02/3019",
"description": "Refresh token`s expiry date"
},
"scopes": {
"example": "access tolkiens, email, etc... ",
"description": "scopes of infos needed for access",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"CreateCustomerDto": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"example": "Gandalf",
"description": "Customer`s first name"
},
"last_name": {
"type": "string",
"example": "TheGray",
"description": "Customer`s last name"
},
"email": {
"type": "string",
"example": "you_shall_not_pass@middleEarth.com",
"description": "Customer`s email"
},
"phone_number": {
"type": "number",
"example": "8436637464",
"description": "Customer`s phone number"
},
"residence": {
"type": "string",
"example": "1 Ringbearer`s way, Mount Doom city, ME, T1R 1N6 ",
"description": "Customer`s residence"
},
"invoice_id": {
"type": "number",
"example": "4263253",
"description": "Customer`s invoice number"
}
},
"required": [
"first_name",
"last_name",
"email",
"phone_number"
]
},
"CustomerEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique du client (clé primaire auto-incrémentée)"
},
"user_id": {
"type": "string",
"example": "0e6e2e1f-b157-4c7c-ae3f-999b3e4f914d",
"description": "UUID de lutilisateur lié à ce client"
},
"email": {
"type": "string",
"example": "you_shall_not_pass@middleEarth.com",
"description": "Adresse email du client (optionnelle)"
},
"phone_number": {
"type": "number",
"example": 8436637464,
"description": "Numéro de téléphone du client (chiffres seulement)"
},
"residence": {
"type": "string",
"example": "1 Ringbearers way, Mount Doom city, ME, T1R 1N6",
"description": "Adresse de résidence du client (optionnelle)"
},
"invoice_id": {
"type": "number",
"example": 4263253,
"description": "Numéro de facture lié à ce client (optionnel mais unique)"
}
},
"required": [
"id",
"user_id",
"phone_number"
]
},
"UpdateCustomerDto": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"example": "Gandalf",
"description": "Customer`s first name"
},
"last_name": {
"type": "string",
"example": "TheGray",
"description": "Customer`s last name"
},
"email": {
"type": "string",
"example": "you_shall_not_pass@middleEarth.com",
"description": "Customer`s email"
},
"phone_number": {
"type": "number",
"example": "8436637464",
"description": "Customer`s phone number"
},
"residence": {
"type": "string",
"example": "1 Ringbearer`s way, Mount Doom city, ME, T1R 1N6 ",
"description": "Customer`s residence"
},
"invoice_id": {
"type": "number",
"example": "4263253",
"description": "Customer`s invoice number"
}
}
},
"CreateEmployeeDto": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"example": "Frodo",
"description": "Employee`s first name"
},
"last_name": {
"type": "string",
"example": "Baggins",
"description": "Employee`s last name"
},
"email": {
"type": "string",
"example": "i_cant_do_this_sam@targointernet.com",
"description": "Employee`s email"
},
"phone_number": {
"type": "number",
"example": "82538437464",
"description": "Employee`s phone number"
},
"residence": {
"type": "string",
"example": "1 Bagshot Row, Hobbiton, The Shire, Middle-earth",
"description": "Employee`s residence"
},
"external_payroll_id": {
"type": "number",
"example": "BagginsF7464",
"description": "Employee`s payroll id"
},
"company_code": {
"type": "number",
"example": "335567447",
"description": "Employee`s company code"
},
"first_work_day": {
"format": "date-time",
"type": "string",
"example": "23/09/3018",
"description": "Employee`s first working day"
},
"last_work_day": {
"format": "date-time",
"type": "string",
"example": "25/03/3019",
"description": "Employee`s last working day"
}
},
"required": [
"first_name",
"last_name",
"email",
"phone_number",
"external_payroll_id",
"company_code",
"first_work_day"
]
},
"EmployeeEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique de lemployé (clé primaire auto-incrémentée)"
},
"user_id": {
"type": "string",
"example": "0e6e2e1f-b157-4c7c-ae3f-999b3e4f914d",
"description": "UUID de lutilisateur lié à cet employé"
},
"external_payroll_id": {
"type": "number",
"example": 7464,
"description": "Identifiant externe dans le système de paie"
},
"company_code": {
"type": "number",
"example": 335567447,
"description": "Code de la compagnie"
},
"first_work_day": {
"format": "date-time",
"type": "string",
"example": "3018-09-23T00:00:00.000Z",
"description": "Date de début demploi"
},
"last_work_day": {
"format": "date-time",
"type": "string",
"example": "3019-03-25T00:00:00.000Z",
"description": "Date de fin demploi (optionnelle)"
}
},
"required": [
"id",
"user_id",
"external_payroll_id",
"company_code",
"first_work_day"
]
},
"UpdateEmployeeDto": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"example": "Frodo",
"description": "Employee`s first name"
},
"last_name": {
"type": "string",
"example": "Baggins",
"description": "Employee`s last name"
},
"email": {
"type": "string",
"example": "i_cant_do_this_sam@targointernet.com",
"description": "Employee`s email"
},
"phone_number": {
"type": "number",
"example": "82538437464",
"description": "Employee`s phone number"
},
"residence": {
"type": "string",
"example": "1 Bagshot Row, Hobbiton, The Shire, Middle-earth",
"description": "Employee`s residence"
},
"external_payroll_id": {
"type": "number",
"example": "BagginsF7464",
"description": "Employee`s payroll id"
},
"company_code": {
"type": "number",
"example": "335567447",
"description": "Employee`s company code"
},
"first_work_day": {
"format": "date-time",
"type": "string",
"example": "23/09/3018",
"description": "Employee`s first working day"
},
"last_work_day": {
"format": "date-time",
"type": "string",
"example": "25/03/3019",
"description": "Employee`s last working day"
}
}
},
"CreateLeaveRequestsDto": {
"type": "object",
"properties": {
"employee_id": {
"type": "number",
"example": "4655867",
"description": "Employee`s id"
},
"leave_type": {
"type": "string",
"example": "Sick or Vacation or Unpaid or Bereavement or Parental or Legal",
"description": "type of leave request for an accounting perception"
},
"start_date_time": {
"format": "date-time",
"type": "string",
"example": "22/06/2463",
"description": "Leave request`s start date"
},
"end_date_time": {
"format": "date-time",
"type": "string",
"example": "25/03/3019",
"description": "Leave request`s end date"
},
"comment": {
"type": "string",
"example": "My precious",
"description": "Leave request`s comment"
},
"approval_status": {
"type": "string",
"example": "True or False or Pending or Denied or Cancelled or Escalated",
"description": "Leave request`s approval status"
}
},
"required": [
"employee_id",
"leave_type",
"start_date_time",
"end_date_time",
"comment",
"approval_status"
]
},
"LeaveRequestEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique de la requête de congé (auto-incrémenté)"
},
"employee_id": {
"type": "number",
"example": 42,
"description": "Identifiant de lemployé concerné"
},
"leave_type": {
"type": "string",
"example": "SICK",
"enum": [
"SICK",
"VACATION",
"UNPAID",
"BEREAVEMENT",
"PARENTAL",
"LEGAL"
],
"description": "Type de congé demandé"
},
"start_date_time": {
"format": "date-time",
"type": "string",
"example": "2463-06-22T00:00:00.000Z",
"description": "Date de début du congé"
},
"end_date_time": {
"format": "date-time",
"type": "string",
"example": "3019-03-25T00:00:00.000Z",
"description": "Date de fin du congé (facultative)"
},
"comment": {
"type": "string",
"example": "My precious",
"description": "Commentaire de lemployé lié à la demande"
},
"approval_status": {
"type": "string",
"example": "PENDING",
"enum": [
"PENDING",
"APPROVED",
"DENIED",
"CANCELLED",
"ESCALATED"
],
"description": "Statut de validation de la demande"
}
},
"required": [
"id",
"employee_id",
"leave_type",
"start_date_time",
"comment",
"approval_status"
]
},
"UpdateLeaveRequestsDto": {
"type": "object",
"properties": {
"employee_id": {
"type": "number",
"example": "4655867",
"description": "Employee`s id"
},
"leave_type": {
"type": "string",
"example": "Sick or Vacation or Unpaid or Bereavement or Parental or Legal",
"description": "type of leave request for an accounting perception"
},
"start_date_time": {
"format": "date-time",
"type": "string",
"example": "22/06/2463",
"description": "Leave request`s start date"
},
"end_date_time": {
"format": "date-time",
"type": "string",
"example": "25/03/3019",
"description": "Leave request`s end date"
},
"comment": {
"type": "string",
"example": "My precious",
"description": "Leave request`s comment"
},
"approval_status": {
"type": "string",
"example": "True or False or Pending or Denied or Cancelled or Escalated",
"description": "Leave request`s approval status"
}
}
},
"CreateShiftCodesDto": {
"type": "object",
"properties": {
"shift_type": {
"type": "string",
"example": "Regular or Night or Emergency, etc...",
"description": "Type of shifts for an account perception"
},
"bank_code": {
"type": "string",
"example": "G1, G2, G3, etc...",
"description": "bank`s code related to the type of shift"
}
},
"required": [
"shift_type",
"bank_code"
]
},
"ShiftCodesEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique du code de quart (généré automatiquement)"
},
"shift_type": {
"type": "string",
"example": "Night",
"description": "Type de quart de travail pour perception comptable ou RH"
},
"bank_code": {
"type": "string",
"example": "G2",
"description": "Code bancaire ou budgétaire lié au quart de travail"
}
},
"required": [
"id",
"shift_type",
"bank_code"
]
},
"UpdateShiftCodesDto": {
"type": "object",
"properties": {
"shift_type": {
"type": "string",
"example": "Regular or Night or Emergency, etc...",
"description": "Type of shifts for an account perception"
},
"bank_code": {
"type": "string",
"example": "G1, G2, G3, etc...",
"description": "bank`s code related to the type of shift"
}
}
},
"CreateShiftDto": {
"type": "object",
"properties": {
"timesheet_id": {
"type": "number",
"example": "Th3F3110w5h1pX2024",
"description": "identification number for a set timesheet"
},
"shift_code_id": {
"type": "number",
"example": "0n3R1n962Ru13xX",
"description": "identification number for a shift code"
},
"date": {
"format": "date-time",
"type": "string",
"example": "20/10/3018",
"description": "Date where the shift takes place"
},
"start_time": {
"format": "date-time",
"type": "string",
"example": "08:00",
"description": "Start time of the said shift"
},
"end_time": {
"format": "date-time",
"type": "string",
"example": "17:00",
"description": "End time of the said shift"
}
},
"required": [
"timesheet_id",
"shift_code_id",
"date",
"start_time",
"end_time"
]
},
"ShiftEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique du quart de travail (généré automatiquement)"
},
"timesheet_id": {
"type": "number",
"example": 101,
"description": "Identifiant de la feuille de temps à laquelle le quart est rattaché"
},
"shift_code_id": {
"type": "number",
"example": 7,
"description": "Identifiant du code de quart utilisé (lien avec ShiftCodes)"
},
"date": {
"format": "date-time",
"type": "string",
"example": "3018-10-20T00:00:00.000Z",
"description": "Date à laquelle le quart a lieu"
},
"start_time": {
"format": "date-time",
"type": "string",
"example": "3018-10-20T08:00:00.000Z",
"description": "Heure de début du quart"
},
"end_time": {
"format": "date-time",
"type": "string",
"example": "3018-10-20T17:00:00.000Z",
"description": "Heure de fin du quart"
}
},
"required": [
"id",
"timesheet_id",
"shift_code_id",
"date",
"start_time",
"end_time"
]
},
"UpdateShiftsDto": {
"type": "object",
"properties": {
"timesheet_id": {
"type": "number",
"example": "Th3F3110w5h1pX2024",
"description": "identification number for a set timesheet"
},
"shift_code_id": {
"type": "number",
"example": "0n3R1n962Ru13xX",
"description": "identification number for a shift code"
},
"date": {
"format": "date-time",
"type": "string",
"example": "20/10/3018",
"description": "Date where the shift takes place"
},
"start_time": {
"format": "date-time",
"type": "string",
"example": "08:00",
"description": "Start time of the said shift"
},
"end_time": {
"format": "date-time",
"type": "string",
"example": "17:00",
"description": "End time of the said shift"
}
}
},
"CreateTimesheetDto": {
"type": "object",
"properties": {
"employee_id": {
"type": "number",
"example": "426433",
"description": "identification number of the employee"
},
"is_approved": {
"type": "boolean",
"example": "True or False or Pending or Denied or Cancelled or Escalated",
"description": "Timesheet`s approval status"
}
},
"required": [
"employee_id",
"is_approved"
]
},
"TimesheetEntity": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 1,
"description": "Identifiant unique de la feuille de temps (généré automatiquement)"
},
"employee_id": {
"type": "number",
"example": 426433,
"description": "Identifiant de lemployé associé à cette feuille de temps"
},
"is_approved": {
"type": "boolean",
"example": true,
"description": "Statut dapprobation de la feuille de temps"
}
},
"required": [
"id",
"employee_id",
"is_approved"
]
},
"UpdateTimesheetDto": {
"type": "object",
"properties": {
"employee_id": {
"type": "number",
"example": "426433",
"description": "identification number of the employee"
},
"is_approved": {
"type": "boolean",
"example": "True or False or Pending or Denied or Cancelled or Escalated",
"description": "Timesheet`s approval status"
}
}
}
}
}
}