Last active
June 26, 2025 15:43
-
-
Save matchish/33678ceb52620fec3f5ff1b663c3423c to your computer and use it in GitHub Desktop.
openapi_spec_3.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
openapi: 3.0.3 | |
info: | |
title: Flywheel backend | |
description: |- | |
This is the documentation of the flywheel backend api | |
contact: | |
email: [email protected] | |
version: 0.18.0 | |
servers: | |
- url: "https://api-main.dev.flywheel.flywheel42.cloud" # dev URL | |
description: "This is a development server URL" | |
tags: | |
#TODO: Standardize it to snake_case/PascalCase [sc-54762] | |
- name: companies | |
- name: contacts | |
- name: entity_tags | |
- name: imports | |
- name: items | |
- name: users | |
- name: CompanyUsers | |
- name: vat_rates | |
- name: tags | |
- name: tasks | |
- name: permissions | |
- name: task_users | |
- name: roles_and_permissions | |
- name: exports | |
- name: finances | |
- name: consecutive_numberings | |
- name: documents | |
- name: templates | |
- name: files | |
- name: order_processes | |
- name: notes | |
- name: time_entries | |
- name: history | |
- name: default_texts | |
- name: file_attachments | |
- name: document_attachments | |
- name: xml_validation | |
- name: document_items | |
- name: subscriptions | |
- name: public_holidays | |
- name: feature_flags | |
- name: company_smtp_config | |
- name: work_time_contracts | |
- name: vacations | |
paths: | |
/companies/{id}: | |
get: | |
tags: | |
- companies | |
summary: Find company by ID | |
description: Returns a single company | |
operationId: ReadCompany | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Companies' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- companies | |
summary: Update an existing company | |
description: Update an existing company by Id | |
operationId: UpdateCompany | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent company | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Companies' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/company_users: | |
get: | |
tags: | |
- CompanyUsers | |
summary: List of company's user that filtered by company_id in header | |
description: Returns a list of company's user | |
operationId: ReadCompanyUsers | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/SEARCH' | |
- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
responses: | |
'200': | |
$ref: '#/components/responses/CompanyUsers' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/company_users/{id}: | |
put: | |
tags: | |
- CompanyUsers | |
summary: Update an existing company_user | |
description: Update an existing company_user by Id | |
operationId: UpdateCompanyUsers | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent company user | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanyUserSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/CompanyUsers' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/vat_rates: | |
get: | |
tags: | |
- vat_rates | |
summary: Provides Vat Rates | |
description: Multiple vat rates can be provided | |
operationId: ListVatRates | |
parameters: | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/VatRateSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- vat_rates | |
summary: Create Vat Rate | |
description: One vat rate can be created | |
operationId: CreateVatRate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Create a vat rate | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VatRateSchemaCreate' | |
required: true | |
responses: | |
'201': | |
$ref: '#/components/responses/VatRates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/vat_rates/{id}: | |
get: | |
tags: | |
- vat_rates | |
summary: Find vat rate by ID | |
description: Returns a single vat rate | |
operationId: ReadVatRate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/VatRates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- vat_rates | |
summary: Update an existing vat rate | |
description: Update an existing vat rate by Id | |
operationId: UpdateVatRate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent vat rate | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VatRateSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/VatRates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- vat_rates | |
summary: Deletes a vat rate | |
description: delete a vat rate | |
operationId: DeleteVatRate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/imports: | |
get: | |
tags: | |
- imports | |
summary: Provides Imports | |
description: Multiple imports can be provided | |
operationId: ListImports | |
parameters: | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/ImportSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/imports/{id}: | |
get: | |
tags: | |
- imports | |
summary: Find import by ID | |
description: Returns a single import | |
operationId: ReadImport | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Imports' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- imports | |
summary: Update an existing import | |
description: Update an existing import by Id | |
operationId: UpdateImport | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent import | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ImportSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Imports' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- imports | |
summary: Deletes an import | |
description: delete an import | |
operationId: DeleteImport | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/imports/{id}/validate: | |
put: | |
tags: | |
- imports | |
summary: Validate CSV file | |
description: Endpoint for validating CSV files | |
operationId: ValidateFile | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
description: Unique identifier for the entity | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ImportRequestBody' | |
responses: | |
'200': | |
description: File validation successful | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
message: | |
type: string | |
example: "File validation successful" | |
'400': | |
description: Bad request | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
error_message: | |
type: string | |
example: "Missing required field: id" | |
'500': | |
description: Internal server error | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
error_message: | |
type: string | |
example: "An unexpected error occurred" | |
security: | |
- keycloakAuth: [] | |
/imports/{id}/import: | |
put: | |
tags: | |
- imports | |
summary: Import CSV file | |
description: Endpoint for importing CSV files | |
operationId: StartImport | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
description: Unique identifier for the import | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ImportRequestBody' | |
responses: | |
'200': | |
description: Import succeeded | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
message: | |
type: string | |
example: "PUT process started" | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/items: | |
get: | |
tags: | |
- items | |
summary: Provides items | |
description: Multiple items can be provided | |
operationId: ListItems | |
parameters: | |
- in: query | |
name: "type" | |
description: "Filter items based on item type." | |
schema: | |
type: string | |
enum: | |
- product | |
- service | |
- hourly_rate | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/ItemSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- items | |
summary: Create a new item | |
description: "This endpoint allows adding a new item" | |
operationId: CreateItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ItemSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/Items' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- items | |
summary: Delete items | |
description: "Remove a specific item." | |
operationId: DeleteItems | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/items/{id}: | |
get: | |
tags: | |
- items | |
summary: Find items by ID | |
description: Returns a single items | |
operationId: ReadItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Items' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- items | |
summary: Update an existing item | |
description: Update an existing item by Id | |
operationId: UpdateItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent item | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ItemSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Items' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- items | |
summary: Deletes a item | |
description: delete a item | |
operationId: DeleteItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/document_items: | |
post: | |
tags: | |
- document_items | |
summary: Create a new document_item, record. | |
description: This endpoint allows you to create a new document item. | |
operationId: CreateDocumentItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentItemSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/DocumentItems' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
delete: | |
tags: | |
- document_items | |
summary: Deletes one or many document items | |
description: delete one or many document items | |
operationId: DeleteDocumentItems | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/document_items/{id}: | |
put: | |
tags: | |
- document_items | |
summary: Updates a document item. | |
description: Update a document item | |
operationId: UpdateDocumentItem | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentItemSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/DocumentItems' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/users/{id}: | |
get: | |
tags: | |
- users | |
summary: Find user by ID | |
description: Returns a single users | |
operationId: ReadUser | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Users' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- users | |
summary: Update an existing user | |
description: Update an existing user by id. | |
operationId: UpdateUser | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent user | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/UserSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Users' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- users | |
summary: Deletes a user #TODO: Should not be allowed | |
description: delete a user | |
operationId: DeleteUser | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/users/{id}/permissions: | |
get: | |
tags: | |
- permissions | |
summary: Get permissions for user with user id | |
description: Returns permissions of user | |
operationId: ReadPermission | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Permission' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/users/me: | |
put: | |
tags: | |
- users | |
summary: Update the current authenticated user | |
description: > | |
Updates the details of the currently authenticated user. | |
The user ID is automatically resolved from the token so it is not supplied in the path. | |
operationId: UpdateMyUser | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Update the current user's details. | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/UserSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Users' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/users/me/permissions: | |
get: | |
tags: | |
- permissions | |
summary: Get permissions of the authenticated user | |
description: Returns permissions of authenticated user | |
operationId: ReadMyPermission | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
$ref: '#/components/responses/Permission' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/users/me/request_access: | |
post: | |
tags: | |
- users | |
summary: Allows user to request access to a company | |
description: This endpoint allows user to request access to a company. | |
operationId: RequestAccess | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
$ref: '#/components/responses/CompanyUsers' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/users/invite: | |
post: | |
tags: | |
- users | |
summary: Create a invite for a user | |
description: This endpoint allows you to create and send an invitation to a user. | |
operationId: CreateUserInvite | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/UserInviteSchema' | |
responses: | |
'200': | |
$ref: '#/components/responses/Users' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/users/{id}/invite: | |
put: | |
tags: | |
- users | |
summary: Update a user invite | |
description: An invitation can be resent to a user | |
operationId: UpdateUserInvite | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/UserInviteSchemaUpdate' | |
responses: | |
'204': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/GenericResponseSchema' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/contacts: | |
get: | |
tags: | |
- contacts | |
summary: Provides contacts | |
description: Multiple contacts can be provided | |
operationId: ListContacts | |
parameters: | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/ContactSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- contacts | |
summary: Create a new contact | |
description: "This endpoint allows adding a new contact." | |
operationId: CreateContact | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ContactSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/Contacts' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- contacts | |
summary: Delete contacts | |
description: "Removes a specific contact." | |
operationId: DeleteContacts | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/contacts/{id}: | |
get: | |
tags: | |
- contacts | |
summary: Find contact by ID | |
description: Returns a single contact | |
operationId: ReadContact | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Contacts' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- contacts | |
summary: Update an existing contact | |
description: Update an existing contact by Id | |
operationId: UpdateContact | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent contact | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ContactSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Contacts' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- contacts | |
summary: Deletes a contact | |
description: delete a contact | |
operationId: DeleteContact | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/order_processes: | |
get: | |
tags: | |
- order_processes | |
summary: Provides order processes | |
description: Multiple order processes can be provided | |
operationId: ListOrderProcesses | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/OrderProcessSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
post: | |
tags: | |
- order_processes | |
summary: Create a new order process | |
description: "This endpoint allows adding a new order process." | |
operationId: CreateOrderProcess | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/OrderProcessSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/OrderProcesses' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/order_processes/{id}: | |
get: | |
tags: | |
- order_processes | |
summary: Find order process by ID | |
description: Returns a single order process | |
operationId: ReadOrderProcess | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/OrderProcesses' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
put: | |
tags: | |
- order_processes | |
summary: Update an existing order process | |
description: Update an existing order process by Id | |
operationId: UpdateOrderProcess | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent order process | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/OrderProcessSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/OrderProcesses' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/documents: | |
get: | |
tags: | |
- documents | |
summary: Provides documents | |
description: Multiple documents can be provided | |
operationId: ListDocuments | |
parameters: | |
- in: query | |
name: "has_items" | |
description: "Filter documents to only include those with associated document items" | |
schema: | |
type: boolean | |
example: True | |
default: False | |
- in: query | |
name: "only_orderprocessing_docs" | |
description: "Filter documents to only include those that belong to orderProcessing domain" | |
schema: | |
type: boolean | |
example: True | |
default: False | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
- name: order_id | |
in: query | |
description: The ID of the order to filter by. looks inside the document_details JSON. | |
required: false | |
schema: | |
type: string | |
format: uuid | |
example: 'fa54e4b2-a499-45ae-aaed-9de8b6aa1e72' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- documents | |
summary: Create a new document | |
description: "This endpoint allows adding a new document." | |
operationId: CreateDocument | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/Documents' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/documents/{id}: | |
get: | |
tags: | |
- documents | |
summary: Find document by ID | |
description: Returns a single document | |
operationId: ReadDocument | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Documents' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- documents | |
summary: Update an existing document | |
description: Update an existing document by Id | |
operationId: UpdateDocument | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent document | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Documents' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- documents | |
summary: Deletes a document | |
description: delete a document | |
operationId: DeleteDocument | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/documents/{id}/pdf: | |
get: | |
tags: | |
- documents | |
summary: Get presignedUrl for PDF of document, if present on S3 | |
description: Get presignedUrl for PDF of document, if present on S3 | |
operationId: GetDocumentPdf | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/DocumentPDF' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/documents/{id}/pdf/upload: | |
post: | |
tags: | |
- documents | |
summary: Upload PDF for a document | |
description: Upload PDF binary for a document after it is finalized | |
operationId: UploadDocumentPdf | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentPDFSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/DocumentPDF' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/documents/{id}/generate_einvoice: | |
get: | |
tags: | |
- documents | |
summary: Generate e-invoice file | |
description: Generate and download e-invoice file for eligible documents | |
operationId: GenerateEInvoice | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/EInvoice' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/templates: | |
get: | |
tags: | |
- templates | |
summary: Provides template | |
description: Multiple templates can be provided | |
operationId: ListTemplate | |
parameters: | |
- in: query | |
name: "type" | |
description: "Filter template based on type." | |
required: true | |
schema: | |
type: string | |
enum: | |
- LETTER | |
- EXPENSE | |
- OFFER | |
- INVOICE | |
- CUSTOM | |
- DEFECT | |
- CONFIRMATION | |
- PHOTOREPORT | |
- CHECKLISTMACHINETESTING | |
- SERVICEREPORT | |
- CANCELLATIONINVOICE | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/TemplateSchemaRead' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- templates | |
summary: Create a new template | |
description: "This endpoint allows adding a new template." | |
operationId: CreateTemplate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TemplateSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/Templates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/templates/{id}: | |
get: | |
tags: | |
- templates | |
summary: Find template by ID | |
description: Returns a single template | |
operationId: ReadTemplate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Templates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- templates | |
summary: Update an existing template | |
description: Update an existing template by Id | |
operationId: UpdateTemplate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent template | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TemplateSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Templates' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- templates | |
summary: Deletes a template | |
description: delete a template | |
operationId: DeleteTemplate | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/files/presigned_url: | |
post: | |
tags: | |
- files | |
summary: Generate pre-signed URL for file upload | |
description: "This endpoint allows generating a pre-signed URL for file upload." | |
operationId: UploadFile | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/PresignedUrlSchema' | |
responses: | |
'200': | |
$ref: '#/components/responses/FilesPresignedUrl' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/files/{id}: | |
get: | |
tags: | |
- files | |
summary: Get a file by ID | |
description: This endpoint retrieves a file identified by its unique ID. | |
operationId: ReadFile | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Files' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- files | |
summary: Delete a file by ID of DB & S3 | |
description: "Removes a specific file" | |
operationId: DeleteFile | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/files/{id}/download: | |
get: | |
tags: | |
- files | |
summary: Get a pre signed url of a file by ID for preview or downloading | |
description: This endpoint generates a pre-signed URL for a specific file identified by its ID, allowing secure access for preview or downloading. | |
operationId: DownloadFile | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/ImagePresignUrl' | |
'202': | |
$ref: '#/components/responses/AcceptedRetryResponse' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/zipped_documents: | |
post: | |
tags: | |
- zip | |
summary: Generate a zip file for documents and a pre-signed url for downloading it. | |
description: This endpoint generates a zip file for documents of a specific month, and returns a pre-signed URL for downloading it. | |
operationId: DownloadZippedFiles | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ZippedDocumentsSchemaCreate' | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
$ref: '#/components/responses/FilesPresignedUrl' | |
'202': | |
$ref: '#/components/responses/AcceptedRetryResponse' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/notes: | |
get: | |
tags: | |
- notes | |
summary: Provides notes | |
description: Multiple notes can be provided | |
operationId: ListNotes | |
parameters: | |
- in: query | |
name: entity_id | |
description: ID of the related entity (e.g 'item', 'contact') | |
required: true | |
schema: | |
type: string | |
format: uuid | |
example: 85d4454e-a819-41a5-b796-4c00493f7aed | |
- in: query | |
name: entity_type | |
description: Type of the related entity | |
required: true | |
schema: | |
type: string | |
enum: | |
- company | |
- contact | |
- item | |
- user | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/NoteSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- notes | |
summary: Create Note | |
description: One note can be created | |
operationId: CreateNotes | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Create a note | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/NoteSchemaCreate' | |
required: true | |
responses: | |
'201': | |
$ref: '#/components/responses/Notes' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/notes/{id}: | |
get: | |
tags: | |
- notes | |
summary: Find note by ID | |
description: Returns a single note | |
operationId: ReadNotes | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/Notes' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- notes | |
summary: Update an existing note | |
description: Update an existing note by Id | |
operationId: UpdateNotes | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent note | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/NoteSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Notes' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- notes | |
summary: Deletes a note | |
description: delete a note | |
operationId: DeleteNotes | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/tasks: | |
post: | |
tags: | |
- tasks | |
summary: Create a new task | |
description: "This endpoint allows adding a new task." | |
operationId: CreateTask | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TaskSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/TaskWithRelationships' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
get: | |
tags: | |
- tasks | |
summary: Provides tasks | |
description: Multiple tasks can be provided | |
operationId: ListTasks | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/TaskSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- tasks | |
summary: Delete tasks | |
description: "Removes a specific task." | |
operationId: DeleteAllTasks | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/tasks/{id}: | |
get: | |
tags: | |
- tasks | |
summary: Find task by ID | |
description: Returns a single task | |
operationId: ReadTask | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/TaskWithRelationships' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- tasks | |
summary: Update an existing task | |
description: Update an existing note by Id | |
operationId: UpdateTask | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent task | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TaskSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Tasks' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- tasks | |
summary: Deletes a task | |
description: delete a task | |
operationId: DeleteTask | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/task_users: | |
post: | |
tags: | |
- task_users | |
summary: Create a new task user role | |
description: "This endpoint allows adding a new task role." | |
operationId: CreateTaskUserRole | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TaskUserSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/TaskUsers' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/task_users/{id}: | |
put: | |
tags: | |
- task_users | |
summary: Updates a task user. Can only assign new user to existing task user. | |
description: Update the user of a task user | |
operationId: UpdateTaskUserRole | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update the user for an existent task user | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TaskUserSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/TaskUsers' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- task_users | |
summary: Deletes a task user role | |
description: delete a task user role | |
operationId: DeleteTaskUserRole | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/time_entries: | |
post: | |
tags: | |
- time_entries | |
summary: Create a new time entry | |
description: This endpoint allows you to create a new time entry. | |
operationId: CreateTimeEntry | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TimeEntrySchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/TimeEntries' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
get: | |
tags: | |
- time_entries | |
summary: Provides time entries, sorted by start_time, by default in ascending order (oldest date first). | |
description: Multiple time entries can be returned | |
operationId: ListTimeEntries | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
- name: referenced_entity_id | |
in: query | |
description: The ID of the referenced entity to filter by. if used, has to be provided along with referenced_entity_type. | |
required: false | |
schema: | |
type: string | |
format: uuid | |
example: fa54e4b2-a499-45ae-aaed-9de8b6aa1e72 | |
- name: referenced_entity_type | |
in: query | |
description: The type of the referenced entity to filter by (e.g., TASK). if used, has to be provided along with referenced_entity_id. | |
required: false | |
schema: | |
type: string | |
example: TASK | |
- name: referenced_entities | |
in: query | |
description: Used to filter non referenced entities in time entry. Must not be passed with referenced_entity_id and referenced_entity_type. Always pass [] as value to get all time entries that do not have reference entities | |
required: false | |
schema: | |
type: string | |
example: '[]' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/TimeEntrySchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- time_entries | |
summary: Delete time entries | |
description: "Removes a time entries." | |
operationId: DeleteAllTimeEntries | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/time_entries/{id}: | |
get: | |
tags: | |
- time_entries | |
summary: Find time entry by ID | |
description: Returns a single time entry | |
operationId: ReadTimeEntry | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
$ref: '#/components/responses/TimeEntries' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
put: | |
tags: | |
- time_entries | |
summary: Update an existing time entry | |
description: Update an existing time entry by Id | |
operationId: UpdateTimeEntry | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent time entry | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TimeEntrySchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/TimeEntries' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/consecutive_numberings: | |
get: | |
tags: | |
- consecutive_numberings | |
summary: Provides consecutive numberings | |
description: List of one consecutive numbering schema can be provided | |
operationId: ListConsecutiveNumberings | |
parameters: | |
- in: query | |
name: "entity_type" | |
description: "Filter consecutive numbering based on entity type." | |
required: true | |
schema: | |
type: string | |
example: item | |
- in: query | |
name: "subtype" | |
description: "Filter consecutive numbering based on subtype." | |
required: false | |
schema: | |
type: string | |
example: product | |
#- $ref: '#/components/parameters/FILTERS-PAGINATION' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
$ref: '#/components/responses/ConsecutiveNumberings' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/consecutive_numberings/{id}: | |
put: | |
tags: | |
- consecutive_numberings | |
summary: Update an existing consecutive numbering setting | |
description: Update an existing consecutive numbering by Id | |
operationId: UpdateConsecutiveNumbering | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent consecutive numbering | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ConsecutiveNumberingSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/ConsecutiveNumberings' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/tags: | |
get: | |
tags: | |
- tags | |
summary: List all tags | |
description: Returns a list of all tags | |
operationId: ListTags | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/TagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
post: | |
tags: | |
- tags | |
summary: Create a new tag | |
description: Creates a new tag | |
operationId: CreateTag | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TagSchemaCreate' | |
responses: | |
'201': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/tags/{id}: | |
get: | |
tags: | |
- tags | |
summary: Find tag by ID | |
description: Returns a single tag | |
operationId: ReadTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
put: | |
tags: | |
- tags | |
summary: Update an existing tag | |
description: Update an existing tag by Id | |
operationId: UpdateTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existing tag | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TagSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
delete: | |
tags: | |
- tags | |
summary: Deletes a tag | |
description: Deletes a tag | |
operationId: DeleteTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/GenericResponseSchema' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/entity_tags: | |
get: | |
tags: | |
- entity_tags | |
summary: List all entity tags | |
description: Returns a list of all entity tags | |
operationId: ListEntityTags | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/EntityTagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
post: | |
tags: | |
- entity_tags | |
summary: Create a new entity tag | |
description: Creates a new entity tag | |
operationId: CreateEntityTag | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EntityTagSchemaCreate' | |
responses: | |
'201': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EntityTagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/entity_tags/{id}: | |
get: | |
tags: | |
- entity_tags | |
summary: Find entity tag by ID | |
description: Returns a single entity tag | |
operationId: ReadEntityTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EntityTagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
put: | |
tags: | |
- entity_tags | |
summary: Update an existing entity tag | |
description: Update an existing entity tag by Id | |
operationId: UpdateEntityTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Update an existing entity tag | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EntityTagSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EntityTagSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
delete: | |
tags: | |
- entity_tags | |
summary: Deletes an entity tag | |
description: Deletes an entity tag | |
operationId: DeleteEntityTag | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'204': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/GenericResponseSchema' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/validate_xml: | |
post: | |
tags: | |
- xml_validation | |
summary: Validates an XML file against a specified XSD schema. | |
description: This endpoint allows you to validate an XML file against a given XSD. | |
operationId: validateXml | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/XMLValidationSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/XMLValidation' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/history: | |
get: | |
tags: | |
- history | |
summary: Provides a history of updates in an entry. | |
description: List of one consecutive numbering schema can be provided | |
operationId: ListHistory | |
parameters: | |
- in: query | |
name: "entity_type" | |
description: "Type of the entity." | |
required: true | |
schema: | |
type: string | |
example: item | |
enum: | |
- company_user | |
- contact | |
- document | |
- item | |
- note | |
- task | |
- user | |
- vat_rate | |
- time_entry | |
- in: query | |
name: "entity_id" | |
description: "ID of the entity." | |
required: false | |
schema: | |
type: string | |
example: 85d4454e-a819-41a5-b796-4c00493f7aed | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
$ref: '#/components/responses/History' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/exports: | |
post: | |
tags: | |
- exports | |
summary: Starts a new export process | |
description: Starts a new export process | |
operationId: CreateExport | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ExportSchemaCreate' | |
responses: | |
'201': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ExportSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/exports/{id}: | |
get: | |
tags: | |
- exports | |
summary: Find export by ID | |
description: Returns a single entity tag | |
operationId: ReadExport | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ExportSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/default_texts: | |
get: | |
tags: | |
- default_texts | |
summary: Provides default texts | |
description: Multiple default texts can be provided | |
operationId: ListDefaultTexts | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/DefaultTextSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
post: | |
tags: | |
- default_texts | |
summary: Create a new default text | |
description: This endpoint allows you to create a new default text entry. | |
operationId: CreateDefaultText | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DefaultTextSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/DefaultTexts' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/default_texts/{id}: | |
get: | |
tags: | |
- default_texts | |
summary: Find default text by ID | |
description: Returns a single default text | |
operationId: ReadDefaultText | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DefaultTextSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
put: | |
tags: | |
- default_texts | |
summary: Update an existing default text | |
description: Update an existing default text by Id | |
operationId: UpdateDefaultText | |
parameters: | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Update an existing default text | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DefaultTextSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DefaultTextSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/role_and_permissions: | |
get: | |
tags: | |
- roles_and_permissions | |
summary: Provides role and permissions | |
description: Multiple role and permissions can be provided | |
operationId: ListRoleAndPermissions | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/RoleAndPermissionSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
/file_attachments: | |
post: | |
tags: | |
- file_attachments | |
summary: Create a new file attachment | |
description: | | |
Attach file to an entity | |
operationId: CreateFileAttachment | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/FileAttachmentSchemaCreate' | |
responses: | |
'201': | |
$ref: '#/components/responses/FileAttachments' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
get: | |
tags: | |
- file_attachments | |
summary: Provides file attachments | |
description: | | |
Retrieves a list of existing file attachments. Multiple file attachments can be returned | |
operationId: ListFileAttachments | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/FileAttachmentWithFileSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
delete: | |
tags: | |
- file_attachments | |
summary: Deletes one or more file attachments | |
description: | | |
Deletes one or more file attachments. This action removes the association between a file an an entity | |
operationId: DeleteFileAttachment | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
description: Successful operation | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/document_attachments: | |
post: | |
tags: | |
- document_attachments | |
summary: Create a new document attachment | |
description: | | |
Attach document to an entity (currently only TASK) | |
operationId: CreateDocumentAttachment | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentAttachmentSchemaCreate' | |
responses: | |
'201': | |
$ref: '#/components/responses/DocumentAttachments' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
get: | |
tags: | |
- document_attachments | |
summary: Provides document attachments | |
description: | | |
Retrieves a list of existing document attachments. Multiple document attachments can be returned | |
operationId: ListDocumentAttachments | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentAttachmentSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
delete: | |
tags: | |
- document_attachments | |
summary: Deletes one or more document attachments | |
description: | | |
Deletes one or more document attachments. This action removes the association between a document and an entity | |
operationId: DeleteDocumentAttachment | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DeleteManySchema' | |
responses: | |
'204': | |
description: Successful operation | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/cashbooks: | |
get: | |
tags: | |
- finances | |
summary: List all cashbooks | |
description: List all cashbooks | |
operationId: ListCashBooks | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: Successful response | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/CashbookSchemaRead' | |
post: | |
tags: | |
- finances | |
summary: Create a new cashbook | |
description: This endpoint allows you to create a new cashbook | |
operationId: CreateCashBook | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CashbookSchemaCreate' | |
responses: | |
'201': | |
description: Created | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CashbookSchemaRead' | |
/cashbooks/{id}: | |
get: | |
tags: | |
- finances | |
summary: Get a specific cashbook | |
description: This endpoint retrieves the details of a specific cashbook identified by its unique ID. | |
operationId: ReadCashBook | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
format: uuid | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful response | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CashbookSchemaRead' | |
put: | |
tags: | |
- finances | |
summary: Update or archive a cashbook | |
description: Updates a cashbook's description or archives the cashbook | |
operationId: UpdateCashBook | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
format: uuid | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CashbookSchemaUpdate' | |
responses: | |
'200': | |
description: Cashbook successfully updated or archived | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CashbookSchemaRead' | |
/cashbooks/{id}/transactions: | |
post: | |
tags: | |
- finances | |
summary: Create a new transaction for a cashbook | |
description: This endpoint allows you to create a new transaction associated with a specific cashbook | |
operationId: CreateTransaction | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
format: uuid | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TransactionSchemaCreate' | |
responses: | |
'201': | |
description: Created | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TransactionSchemaRead' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
get: | |
tags: | |
- finances | |
summary: list all transactions for a cashbook | |
description: This endpoint retrieves a list of all transactions associated with a specific cashbook | |
operationId: ReadTransactions | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
format: uuid | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
- $ref: '#/components/parameters/SEARCH' | |
responses: | |
'200': | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TransactionSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
/subscription_plans: | |
get: | |
tags: | |
- subscriptions | |
summary: List all subscription plans | |
description: Returns a list of available subscription plans | |
operationId: ListSubscriptionPlans | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
responses: | |
'200': | |
description: Successful response | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/SubscriptionPlanSchemaRead' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/discounts/validate: | |
post: | |
tags: | |
- subscriptions | |
summary: Validate subscription discount | |
description: Validates a discount code for subscription plans | |
operationId: ValidateSubscriptionDiscount | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
description: Discount validation request | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/SubscriptionDiscountValidateSchema' | |
responses: | |
'200': | |
description: Successful validation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/SubscriptionDiscountSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/companies/{id}/company_subscription_plans: | |
get: | |
tags: | |
- subscriptions | |
summary: List company subscription plans of a company | |
description: Returns subscription plans for a specific company | |
operationId: ReadCompanySubscriptionPlans | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/CompanySubscriptionPlanSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/companies/{id}/company_subscription_plans/upgrade: | |
post: | |
tags: | |
- subscriptions | |
summary: Upgrade Company Subscription Plan | |
description: Upgrades company's subscription plan to higher plan. | |
operationId: UpgradeCompanySubscriptionPlan | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Company subscription plan upgrade request. | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySubscriptionPlanUpgradeSchema' | |
responses: | |
'200': | |
description: Successful upgrade | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/CompanySubscriptionPlanSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/public_holidays: | |
get: | |
tags: | |
- public_holidays | |
summary: Provides public holidays | |
description: Multiple public holidays can be provided | |
operationId: ListPublicHolidays | |
parameters: | |
- in: query | |
name: year | |
description: Filter holidays by year | |
required: false | |
schema: | |
type: integer | |
example: 2024 | |
- in: query | |
name: region_code | |
description: Filter holidays by German federal state | |
required: false | |
schema: | |
$ref: '#/components/schemas/GermanFederalState' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/PublicHolidaySchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/vacations: | |
get: | |
tags: | |
- vacations | |
summary: Provides entitled vacations of company users | |
description: Multiple vacations can be provided | |
operationId: ListVacationdays | |
parameters: | |
- in: query | |
name: year | |
description: Filter vacations by year | |
required: false | |
schema: | |
type: integer | |
example: 2024 | |
- in: query | |
name: user_id | |
description: Filter vacations by user_id | |
required: false | |
schema: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
- $ref: '#/components/parameters/ORDER-DIRECTION' | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/VacationSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- vacations | |
summary: Create a new vacation | |
description: "This endpoint allows adding a new vacation of a user" | |
operationId: CreateVacation | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VacationSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/responses/Vacations' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/vacations/{id}: | |
put: | |
tags: | |
- vacations | |
summary: Update an existing vacation | |
description: Update an existing vacation by Id | |
operationId: UpdateVacation | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
requestBody: | |
description: Update an existent vacation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VacationSchemaUpdate' | |
required: true | |
responses: | |
'200': | |
$ref: '#/components/responses/Vacations' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- vacations | |
summary: Deletes a vacation | |
description: delete a vacation entry of a user | |
operationId: DeleteVacation | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/ID-IN-PATH' | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'423': | |
$ref: '#/components/responses/DisabledUser' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/work_time_contracts: | |
get: | |
tags: | |
- work_time_contracts | |
summary: Provides work time contracts | |
description: Multiple work time contracts can be provided | |
operationId: ListWorkTimeContracts | |
parameters: | |
- in: query | |
name: user_id | |
description: Filter work time contracts by user ID | |
required: false | |
schema: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
- in: query | |
name: work_time_contract_start | |
description: Filter work time contracts by start date | |
required: false | |
schema: | |
type: string | |
format: date | |
example: "2024-01-01" | |
- in: query | |
name: work_time_contract_end | |
description: Filter work time contracts by end date | |
required: false | |
schema: | |
type: string | |
format: date | |
example: "2024-12-31" | |
responses: | |
'200': | |
description: successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/WorkTimeContractSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
post: | |
tags: | |
- work_time_contracts | |
summary: Create a new work time contract | |
description: Creates a new work time contract | |
operationId: CreateWorkTimeContract | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/WorkTimeContractSchemaCreate' | |
responses: | |
'201': | |
description: Work time contract created successfully | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/WorkTimeContractSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'409': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
delete: | |
tags: | |
- work_time_contracts | |
summary: Delete multiple work time contracts | |
description: Delete one or more work time contracts by their IDs | |
operationId: DeleteWorkTimeContracts | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
ids: | |
type: array | |
items: | |
type: string | |
format: uuid | |
description: Array of work time contract IDs to delete | |
minItems: 1 | |
example: ["12345678-1234-5678-1234-567812345678", "87654321-4321-8765-4321-876543218765"] | |
required: | |
- ids | |
responses: | |
'204': | |
$ref: '#/components/responses/DeleteNoContent' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/work_time_contracts/{id}: | |
put: | |
tags: | |
- work_time_contracts | |
summary: Update a work time contract | |
description: Update an existing work time contract by ID | |
operationId: UpdateWorkTimeContract | |
parameters: | |
- in: path | |
name: id | |
required: true | |
description: ID of the work time contract to update | |
schema: | |
type: string | |
format: uuid | |
example: "12345678-1234-5678-1234-567812345678" | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/WorkTimeContractSchemaUpdate' | |
responses: | |
'200': | |
description: Work time contract updated successfully | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/WorkTimeContractSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'409': | |
$ref: '#/components/responses/ValidationFailed' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/feature_flags: | |
get: | |
tags: | |
- feature_flags | |
summary: Get all feature flags | |
description: Retrieve all feature flags with their current status as key-value pairs. Returns all flags in a single response (no pagination). | |
operationId: getFeatureFlags | |
responses: | |
'200': | |
description: All feature flags retrieved successfully | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
data: | |
type: array | |
items: | |
type: object | |
additionalProperties: | |
type: boolean | |
description: All feature flags as key-value pairs in a single object | |
example: | |
cashbook_is_enabled: true | |
another_feature: false | |
new_ui_enabled: false | |
maxItems: 1 | |
description: Array containing a single object with all feature flags | |
total_result_count: | |
type: integer | |
description: Always 1 (single object containing all flags) | |
example: 1 | |
total_page_count: | |
type: integer | |
description: Always 1 (no pagination for feature flags) | |
example: 1 | |
page_size: | |
type: integer | |
description: Not applicable for feature flags (all returned) | |
example: 50 | |
current_page: | |
type: integer | |
description: Always 0 (no pagination for feature flags) | |
example: 0 | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [] | |
/company_smtp_config: | |
post: | |
tags: | |
- company_smtp_config | |
summary: Create SMTP configuration for a company | |
description: Create a new SMTP configuration (one per company). | |
operationId: CreateCompanySmtpConfig | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaCreate' | |
responses: | |
'200': | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaRead' | |
'400': | |
$ref: '#/components/responses/MissingOrInvalid' | |
'409': | |
$ref: '#/components/responses/ValidationFailed' | |
'422': | |
$ref: '#/components/responses/ValidationFailed' | |
'403': | |
$ref: '#/components/responses/Forbidden' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
get: | |
tags: | |
- company_smtp_config | |
summary: List SMTP configurations | |
description: Retrieves all SMTP configurations for the given company (max 1). | |
operationId: ListSmtpConfigs | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- $ref: '#/components/parameters/PAGE_SIZE-PAGINATION' | |
- $ref: '#/components/parameters/PAGE-PAGINATION' | |
responses: | |
'200': | |
description: Successful response | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaRead' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
/company_smtp_config/{id}: | |
get: | |
tags: | |
- company_smtp_config | |
summary: Get a company SMTP config | |
description: Get a company SMTP configuration for a company | |
operationId: GetCompanySmtpConfig | |
parameters: | |
- in: path | |
name: id | |
required: true | |
schema: | |
type: string | |
format: uuid | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
responses: | |
'200': | |
description: Successful response | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaRead' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
put: | |
tags: | |
- company_smtp_config | |
summary: Update Company SMTP config | |
description: Update Company SMTP configuration for company | |
operationId: UpdateCompanySmtpConfig | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- name: id | |
in: path | |
required: true | |
schema: | |
type: string | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaUpdate' | |
responses: | |
'200': | |
$ref: '#/components/responses/CompanySmtpConfig' | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
delete: | |
tags: | |
- company_smtp_config | |
summary: Delete SMTP configuration | |
description: Delete SMTP configuration for company | |
operationId: DeleteSmtpConfig | |
parameters: | |
- $ref: '#/components/parameters/X-WCS-COMPANY_ID-HEADER' | |
- name: id | |
in: path | |
required: true | |
schema: | |
type: string | |
responses: | |
'204': | |
description: Successfully deleted | |
'404': | |
$ref: '#/components/responses/NotFound' | |
'500': | |
$ref: '#/components/responses/ServerError' | |
security: | |
- keycloakAuth: [ ] | |
components: | |
securitySchemes: | |
keycloakAuth: | |
type: http | |
scheme: bearer | |
bearerFormat: JWT | |
schemas: | |
GermanFederalState: | |
type: string | |
enum: | |
- NATIONAL | |
- BW # Baden-Württemberg | |
- BY # Bayern | |
- BE # Berlin | |
- BB # Brandenburg | |
- HB # Bremen | |
- HH # Hamburg | |
- HE # Hessen | |
- MV # Mecklenburg-Vorpommern | |
- NI # Niedersachsen | |
- NW # Nordrhein-Westfalen | |
- RP # Rheinland-Pfalz | |
- SL # Saarland | |
- SN # Sachsen | |
- ST # Sachsen-Anhalt | |
- SH # Schleswig-Holstein | |
- TH # Thüringen | |
description: German federal states where this holiday is valid | |
example: "NATIONAL" | |
PublicHolidaySchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
region_code: | |
$ref: '#/components/schemas/GermanFederalState' | |
name: | |
type: string | |
description: Name of the public holiday | |
example: "Neujahr" | |
date: | |
type: string | |
format: date | |
description: Date of the holiday | |
example: "2024-01-01" | |
required: | |
- id | |
- region_code | |
- name | |
- date | |
PublicHolidaySchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/PublicHolidaySchema' | |
- type: object | |
VacationSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
year: | |
type: integer | |
description: year of which vacations will be allocated | |
example: 2025 | |
vacation_limit: | |
type: integer | |
description: vacations of a user in a year | |
example: 28 | |
carry_over_vacation: | |
description: vacation days carried over from last year | |
type: integer | |
example: 4 | |
carry_over_vacation_expiration_date: | |
type: string | |
format: date | |
description: expiration date of carried over vacation | |
example: "2025-12-31" | |
company_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
user_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
VacationSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/VacationSchema' | |
- type: object | |
VacationSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/VacationSchema' | |
- type: object | |
required: | |
- id | |
- company_id | |
- user_id | |
VacationSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/VacationSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
required: | |
- year | |
- vacation_limit | |
- company_id | |
- user_id | |
ZippedDocumentsSchema: | |
type: object | |
properties: | |
year: | |
type: number | |
example: 2025 | |
description: Year for filtering documents | |
month: | |
type: number | |
example: 4 | |
description: The month you want to get the files from | |
include_datev_xml: | |
type: boolean | |
example: true | |
description: If true, include datev xml file in the zip and generate document.xml | |
ZippedDocumentsSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ZippedDocumentsSchema' | |
DocumentPDFSchema: | |
type: object | |
properties: | |
document_id: | |
type: string | |
format: uuid | |
description: The ID of the document | |
required: | |
- document_id | |
DocumentPDFSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/DocumentPDFSchema' | |
type: object | |
properties: | |
presigned_url: | |
type: string | |
description: presigned URL of the PDF file on S3 | |
DocumentPDFSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/DocumentPDFSchema' | |
type: object | |
properties: | |
pdf_binary: | |
type: string | |
description: base64-encoded pdf binary | |
required: | |
- pdf_binary | |
EInvoiceSchema: | |
type: object | |
properties: | |
document_id: | |
type: string | |
format: uuid | |
profile: | |
type: string | |
enum: [MINIMUM, BASICWL, BASIC, EN16931, EXTENDED] | |
default: MINIMUM | |
presigned_url: | |
type: string | |
EInvoiceSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/EInvoiceSchema' | |
XMLValidationSchema: | |
type: object | |
properties: | |
file_name: | |
type: string | |
example: 'example_xml.xml' | |
schema_name: | |
type: string | |
description: "Name of XSD schema" | |
example: 'autodetect' | |
default: 'autodetect' | |
enum: | |
- factur-x | |
- datev-ledger | |
- datev-document | |
- autodetect | |
XMLValidationSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/XMLValidationSchema' | |
DocumentSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
document_details: | |
type: object | |
description: The document details of the document, can be any valid JSON object. | |
type: | |
type: string | |
description: document types | |
example: LETTER | |
enum: | |
- LETTER | |
- EXPENSE | |
- OFFER | |
- INVOICE | |
- CUSTOM | |
- DEFECT | |
- CONFIRMATION | |
- PHOTOREPORT | |
- CHECKLISTMACHINETESTING | |
- SERVICEREPORT | |
- CANCELLATIONINVOICE | |
document_items: | |
type: array | |
description: A list of items in the document (e.g., invoice or offer), each represents a distinct row or position in the document item table. | |
items: | |
$ref: '#/components/schemas/DocumentItemSchema' | |
required: | |
- document_details | |
- type | |
DocumentSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/DocumentSchema' | |
- type: object | |
properties: | |
document_items: | |
type: array | |
description: A list of items in the document (e.g., invoice or offer), each represents a distinct row or position in the document item table. | |
items: | |
$ref: '#/components/schemas/DocumentItemSchemaRead' | |
template_schema: | |
type: object | |
description: The schema of the document, can be any valid JSON object. | |
tags: | |
type: array | |
items: | |
$ref: '#/components/schemas/TagReferencedSchemaRead' | |
nullable: true | |
files: | |
type: array | |
items: | |
$ref: '#/components/schemas/FileSchemaRead' | |
nullable: false | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the document was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the document was last updated. | |
example: "2024-01-01T00:00:00Z" | |
DocumentSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/DocumentSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
DocumentSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/DocumentSchema' | |
- $ref: '#/components/schemas/CompanyRelationIdentifierSchema' | |
- type: object | |
required: | |
- id | |
TemplateSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
schema_name: | |
type: object | |
description: The schema of the template, can be any valid JSON object. | |
type: | |
type: string | |
description: template types | |
example: LETTER | |
enum: | |
- LETTER | |
- EXPENSE | |
- OFFER | |
- INVOICE | |
- CUSTOM | |
- DEFECT | |
- CONFIRMATION | |
- PHOTOREPORT | |
- CHECKLISTMACHINETESTING | |
- SERVICEREPORT | |
- CANCELLATIONINVOICE | |
required: | |
- type | |
TemplateSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/TemplateSchema' | |
- type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
states: | |
type: array | |
nullable: true | |
description: "list of states available for a template" | |
items: | |
type: string | |
enum: | |
- DRAFT | |
- PENDING_APPROVAL | |
- APPROVED | |
- FINALIZED | |
- SENT | |
- ACCEPTED | |
- REJECTED | |
- CONFIRMED | |
- CANCELED | |
- PAID | |
- OVERDUE | |
example: ["DRAFT", "PENDING_APPROVAL", "APPROVED", "FINALIZED", "SENT"] | |
required: | |
- type | |
TemplateSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TemplateSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
TemplateSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/TemplateSchema' | |
- $ref: '#/components/schemas/CompanyRelationIdentifierSchema' | |
- type: object | |
required: | |
- id | |
OrderProcessSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
order_process_number: | |
type: string | |
example: "auf00000005" | |
description: "the number of the order process" | |
nullable: true | |
type: | |
type: string | |
description: "type of the order process" | |
enum: | |
- order | |
nullable: false | |
contact_id: | |
type: string | |
format: uuid | |
description: "uuid of the recipient contact" | |
contact_details: | |
$ref: "#/components/schemas/OrderProcessContact" | |
state: | |
type: string | |
description: "state of the order process" | |
example: DRAFT | |
enum: | |
- DRAFT | |
- PENDING_APPROVAL | |
- APPROVED | |
- SENT | |
- PAID | |
- OVERDUE | |
- DONE | |
created_by: | |
type: string | |
format: uuid | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- type | |
- state | |
OrderProcessContact: | |
type: object | |
properties: | |
name: | |
type: string | |
example: "Musterfirma GmbH/Max Mustermann" | |
maxLength: 50 | |
minLength: 1 | |
contact_person: | |
type: string | |
example: "Max Mustermann" | |
maxLength: 50 | |
minLength: 1 | |
address: | |
type: string | |
example: "Cuvrystraße 53" | |
maxLength: 50 | |
minLength: 1 | |
zip: | |
type: string | |
example: "10997" | |
maxLength: 10 | |
minLength: 1 | |
city: | |
type: string | |
example: "Berlin" | |
maxLength: 40 | |
minLength: 1 | |
country_code: | |
type: string | |
description: Two digit ISO31661 country code | |
example: "DE" | |
minLength: 1 | |
OrderProcessSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/OrderProcessSchema' | |
- type: object | |
properties: | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the order process was created. | |
example: "2024-01-01T00:00:00Z" | |
required: | |
- id | |
OrderProcessSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
order_process_number: | |
type: string | |
example: "auf00000005" | |
description: "the number of the order process" | |
nullable: true | |
type: | |
type: string | |
description: "type of the order process" | |
enum: | |
- order | |
nullable: false | |
contact_id: | |
type: string | |
format: uuid | |
description: "uuid of the recipient contact" | |
contact_details: | |
$ref: "#/components/schemas/OrderProcessContact" | |
state: | |
type: string | |
description: "state of the order process" | |
example: DRAFT | |
enum: | |
- DRAFT | |
- PENDING_APPROVAL | |
- APPROVED | |
- SENT | |
- PAID | |
- OVERDUE | |
- DONE | |
created_by: | |
type: string | |
format: uuid | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
OrderProcessSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/OrderProcessSchema' | |
- type: object | |
CompanySchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
name: | |
type: string | |
description: At least 2 characters | |
example: ACME | |
state: | |
type: string | |
description: Company subscription state | |
example: testing | |
enum: | |
- testing | |
- free | |
- paying | |
- dunning | |
timezone: | |
type: string | |
description: IANA Timezone for the company | |
example: "Europe/Berlin" | |
default: "UTC" | |
enum: | |
- "UTC" | |
- "Europe/Berlin" | |
onboarding_survey_status: | |
type: string | |
example: unstarted | |
enum: | |
- unstarted | |
- step_1 | |
- step_2 | |
- completed | |
logo_id: | |
type: string | |
format: uuid | |
nullable: true | |
details: | |
$ref: '#/components/schemas/CompanyDetails' | |
contact_data: | |
$ref: '#/components/schemas/ContactData' | |
contact_person: | |
$ref: '#/components/schemas/ContactPerson' | |
bank_details: | |
type: array | |
items: | |
$ref: '#/components/schemas/CompanyBankDetails' | |
users: | |
description: TBD a list of users | |
CompanySchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/CompanySchema' | |
- type: object | |
type: object | |
properties: | |
users: | |
description: TBD a list of users | |
external_details: | |
$ref: '#/components/schemas/ExternalCompanyDetails' | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
CompanySchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/CompanySchema' | |
- type: object | |
CompanySchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/CompanySchema' | |
- type: object | |
type: object | |
required: | |
- id | |
AddressSchema: | |
type: object | |
properties: | |
street: | |
type: string | |
zip: | |
type: string | |
city: | |
type: string | |
country_code: | |
type: string | |
additional_information: | |
type: string | |
CompanyUserSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
user_id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
company_id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
is_mobile: | |
type: boolean | |
description: has mobile subscription plan. | |
example: True | |
work_address: | |
$ref: '#/components/schemas/AddressSchema' | |
state: | |
type: string | |
description: user state | |
example: active | |
enum: | |
- active | |
- disabled | |
- invited | |
- access_requested | |
- not_invited | |
role: | |
type: string | |
example: "Admin" | |
enum: | |
- CompanyOwner | |
- Admin | |
- Member | |
user_data: | |
$ref: '#/components/schemas/UserDataSchema' | |
CompanyUserSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/CompanyUserSchema' | |
- type: object | |
type: object | |
properties: | |
external_details: | |
$ref: '#/components/schemas/ExternalCompanyUserDetails' | |
CompanyUserSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
state: | |
type: string | |
description: user state | |
example: active | |
nullable: true | |
enum: | |
- active | |
- disabled | |
- invited | |
- access_requested | |
- not_invited | |
work_address: | |
$ref: '#/components/schemas/AddressSchema' | |
role: | |
type: string | |
example: CompanyOwner | |
nullable: true | |
enum: | |
- CompanyOwner | |
- Admin | |
- Member | |
is_mobile: | |
type: boolean | |
description: "Has a mobile subscription plan" | |
example: true | |
nullable: true | |
required: | |
- company_id | |
- state | |
CompanyDetails: | |
type: object | |
properties: | |
size: | |
type: string | |
enum: | |
- "1" | |
- "2-5" | |
- "6-10" | |
- "> 10" | |
trade: | |
type: string | |
enum: | |
- building_services | |
- construction | |
- interior | |
- wood | |
- landscaping_gardening | |
- metal | |
- automotive_cargo | |
- miscellaneous | |
vat_id: | |
type: string | |
example: DE124356789012345678 | |
maxLength: 20 | |
minLength: 1 | |
nullable: true | |
tax_number: | |
type: string | |
example: 123/456/78901 | |
maxLength: 20 | |
minLength: 1 | |
nullable: true | |
managing_directors: | |
type: array | |
example: [\"Anton Hofmann\", \"Birte Rüdiger\"] | |
items: | |
type: string | |
district_court: | |
type: string | |
example: Amtgericht Pankow | |
company_registration_number: | |
type: string | |
example: DE781237 | |
ContactData: | |
type: object | |
properties: | |
email: | |
type: string | |
format: email | |
example: [email protected] | |
phone: | |
type: string | |
address: | |
type: string | |
additional_address: | |
type: string | |
zip: | |
type: string | |
city: | |
type: string | |
country_code: | |
type: string | |
example: DE | |
ContactPerson: | |
type: object | |
properties: | |
salutation: | |
type: string | |
enum: | |
- Herr | |
- Frau | |
title: | |
type: string | |
firstname: | |
type: string | |
lastname: | |
type: string | |
email: | |
type: string | |
phone: | |
type: string | |
CompanyBankDetails: | |
type: object | |
properties: | |
iban: | |
type: string | |
bic: | |
type: string | |
bank_name: | |
type: string | |
account_owner: | |
type: string | |
ExternalCompanyDetails: | |
type: object | |
properties: | |
creation_source: | |
type: string | |
example: "wuerth_e-shop" | |
external_company_id: | |
type: string | |
example: "1461847" | |
AcceptedRetryResponseSchema: | |
type: object | |
properties: | |
message: | |
type: string | |
ErrorResponseSchema: | |
type: object | |
properties: | |
http_code: | |
type: integer | |
error_message: | |
type: string | |
ValidationErrorDetail: | |
type: object | |
properties: | |
field: | |
type: string | |
message: | |
type: string | |
code: | |
type: string | |
description: The error code associated with the validation error. | |
ValidationErrorResponseSchema: | |
allOf: | |
- $ref: '#/components/schemas/ErrorResponseSchema' | |
- type: object | |
type: object | |
properties: | |
errors: | |
type: array | |
items: | |
$ref: '#/components/schemas/ValidationErrorDetail' | |
DeleteManySchema: | |
description: The payload for deleting multiple resources. | |
type: array | |
example: [ "091a8acb-a8ce-4f31-a9d8-7285cfc616ca","a494d4e1-61a0-4599-b14d-96b91163c897" ] | |
items: | |
type: string | |
format: uuid | |
example: "091a8acb-a8ce-4f31-a9d8-7285cfc616ca" | |
minItems: 1 | |
GenericResponseSchema: | |
type: object | |
properties: | |
message: | |
type: string | |
VatRateSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
rate: | |
type: number | |
description: constraints are ge=0, le=1 | |
example: 0.19 | |
name: | |
type: string | |
description: min. length 3 characters | |
country_code: | |
type: string | |
description: Two digit ISO31661 country code | |
example: DE | |
is_default: | |
type: boolean | |
description: Identifies the pre-selected VAT rate in create views | |
example: true | |
VatRateSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/VatRateSchema' | |
- type: object | |
type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
VatRateSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/VatRateSchema' | |
- type: object | |
VatRateSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/VatRateSchema' | |
- type: object | |
required: | |
- id | |
ImportSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
rate: | |
type: number | |
description: constraints are ge=0, le=1 | |
example: 0.19 | |
name: | |
type: string | |
description: min. length 3 characters | |
country_code: | |
type: string | |
description: Two digit ISO31661 country code | |
example: DE | |
original_file_name: | |
type: string | |
description: original file name | |
file_path: | |
type: string | |
description: storage file path | |
entity_type: | |
type: string | |
enum: | |
- item | |
file_type: | |
type: string | |
description: extension of file that will upload. | |
example: jpg | |
enum: | |
- csv | |
- jpg | |
- jpeg | |
- png | |
file_size: | |
type: number | |
description: size of the file that is being uploaded in bytes | |
FieldMappings: | |
$ref: '#/components/schemas/FieldMappingsSchema' | |
state: | |
type: string | |
enum: | |
- url_generated | |
- uploaded | |
- mapped | |
- validated | |
- imported | |
- validation_failed | |
- import_failed | |
progress: | |
type: integer | |
description: Percentage value with constraints ge=0 and le=100 | |
required: | |
- original_file_name | |
- entity_type | |
- file_type | |
- state | |
FieldMappingsSchema: | |
type: object | |
properties: | |
type: | |
type: integer | |
nullable: true | |
image: | |
type: integer | |
nullable: true | |
title: | |
type: integer | |
nullable: true | |
number: | |
type: integer | |
nullable: true | |
company_id: | |
type: integer | |
nullable: true | |
description: | |
type: integer | |
nullable: true | |
item_number: | |
type: integer | |
nullable: true | |
sales_price_net: | |
type: integer | |
nullable: true | |
measurement_unit: | |
type: integer | |
nullable: true | |
measurement_value: | |
type: integer | |
nullable: true | |
sales_price_gross: | |
type: integer | |
nullable: true | |
sales_price_currency: | |
type: integer | |
nullable: true | |
sales_price_vat_rate_id: | |
type: integer | |
nullable: true | |
identifier_numbers.EAN-Code: | |
type: integer | |
nullable: true | |
identifier_numbers.Alternative Artikelnummer-Code: | |
type: integer | |
nullable: true | |
identifier_numbers.ASIN: | |
type: integer | |
nullable: true | |
identifier_numbers.ISBN: | |
type: integer | |
nullable: true | |
identifier_numbers.JAN-Code: | |
type: integer | |
nullable: true | |
identifier_numbers.OEM-Nummer: | |
type: integer | |
nullable: true | |
identifier_numbers.UPC-Code: | |
type: integer | |
nullable: true | |
identifier_numbers.Zolltarifnummer: | |
type: integer | |
nullable: true | |
ImportSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ImportSchema' | |
type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
ImportSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ImportSchema' | |
- type: object | |
ImportSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ImportSchema' | |
- $ref: '#/components/schemas/CompanyRelationIdentifierSchema' | |
- type: object | |
required: | |
- id | |
ResourceIdentifierSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: 091a8acb-a8ce-4f31-a9d8-7285cfc616ca | |
CompanyRelationIdentifierSchema: | |
type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
description: UUID of the company. | |
example: "321ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
required: | |
- company_id | |
IdentifierNumber: | |
type: object | |
properties: | |
type: | |
type: string | |
minLength: 1 | |
number: | |
type: string | |
minLength: 1 | |
ComponentSchema: | |
allOf: | |
- $ref: "#/components/schemas/ItemBaseSchema" | |
type: object | |
properties: | |
original_item_id: | |
type: string | |
format: uuid | |
description: "ID of the masterdata item from which this component is copied from" | |
quantity: | |
type: number | |
example: 1 | |
unit: | |
type: string | |
example: "pce" | |
ComponentSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ComponentSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
required: | |
- id | |
DocumentItemComponentSchema: | |
allOf: | |
- $ref: '#/components/schemas/ComponentSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
required: | |
- id | |
ComponentSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ComponentSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
ComponentSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ComponentSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
required: | |
- id | |
LaborEffortSchema: | |
type: object | |
properties: | |
time_effort: | |
description: effort time in minutes | |
type: integer | |
example: 45 | |
hourly_rate_item_id: | |
description: UUID of the master data item with type hourly_rate | |
type: string | |
format: UUID | |
example: 51584918-bd8c-4d47-9c8b-e92e8ebf70f6 | |
description: | |
type: string | |
example: "labor effort in minutes and hourly rates" | |
LaborEffortSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/LaborEffortSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
required: | |
- id | |
LaborEffortSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/LaborEffortSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
LaborEffortSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/LaborEffortSchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
required: | |
- id | |
ItemBaseSchema: | |
type: object | |
properties: | |
title: | |
type: string | |
description: min. length 3 characters | |
minLength: 3 | |
description: | |
type: string | |
description: max. length 1200 characters | |
maxLength: 1200 | |
sales_price_net: | |
type: number | |
format: decimal | |
description: The net sales price for items, the max digits 10, decimal places 2 | |
sales_price_gross: | |
type: number | |
format: decimal | |
description: The gross sales price for items, the max digits 10, decimal places 2 | |
sales_price_currency: | |
type: string | |
description: The sales price currency is EURO for items | |
sales_price_vat_rate_id: | |
type: string | |
format: uuid | |
description: ID of the linked VAT rate | |
required: | |
- title | |
ItemSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
type: | |
type: string | |
description: item types | |
example: product | |
enum: | |
- product | |
- service | |
- hourly_rate | |
title: | |
type: string | |
description: min. length 3 characters | |
image_id: | |
type: string | |
format: uuid | |
nullable: true | |
description: | |
type: string | |
description: max. length 2000 characters | |
maxLength: 2000 | |
item_number: | |
type: string | |
description: the number of the item | |
nullable: true | |
measurement_unit: | |
type: string | |
nullable: true | |
measurement_value: | |
type: number | |
nullable: true | |
identifier_numbers: | |
type: array | |
items: | |
type: object | |
properties: | |
type: | |
type: string | |
minLength: 1 | |
number: | |
type: string | |
minLength: 1 | |
description: An array of identifier numbers for reading items | |
sales_price_net: | |
type: number | |
format: decimal | |
nullable: true | |
description: The net sales price for items, the max digits 10, decimal places 2 | |
sales_price_gross: | |
type: number | |
format: decimal | |
nullable: true | |
description: The gross sales price for items, the max digits 10, decimal places 2 | |
sales_price_currency: | |
type: string | |
nullable: true | |
description: The sales price currency is EURO for items | |
sales_price_vat_rate_id: | |
type: string | |
format: uuid | |
nullable: true | |
suppliers: | |
type: array | |
items: | |
$ref: '#/components/schemas/ItemSupplierSchema' | |
nullable: true | |
required: | |
- type | |
- title | |
ImagePathsSchema: | |
type: object | |
nullable: true | |
description: Paths to associated images | |
properties: | |
resized_62px: | |
type: string | |
description: URL for resized image (62px) | |
resized_300px: | |
type: string | |
description: URL for resized image (300px) | |
resized_960px: | |
type: string | |
description: URL for resized image (960px) | |
required: | |
- resized_62px | |
- resized_300px | |
- resized_960px | |
ItemSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ItemSchema' | |
- type: object | |
required: | |
- id | |
properties: | |
image_paths: | |
allOf: | |
- $ref: '#/components/schemas/ImagePathsSchema' | |
original: | |
type: string | |
nullable: true | |
description: URL for original image | |
required: | |
- images | |
- original | |
tags: | |
type: array | |
items: | |
$ref: '#/components/schemas/TagReferencedSchemaRead' | |
nullable: true | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was created. | |
example: "2024-01-01T00:00:00Z" | |
suppliers: | |
type: array | |
items: | |
$ref: '#/components/schemas/ItemSupplierSchemaRead' | |
nullable: true | |
components: | |
type: array | |
description: "sub items that are components of the service" | |
items: | |
$ref: '#/components/schemas/ComponentSchemaRead' | |
labor_efforts: | |
type: array | |
description: "sub items that are labor efforts of the service" | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaRead' | |
ItemSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ItemSchema' | |
- type: object | |
type: object | |
properties: | |
components: | |
type: array | |
description: "sub items that are components of the service" | |
items: | |
$ref: '#/components/schemas/ComponentSchemaCreate' | |
labor_efforts: | |
type: array | |
description: "sub items that are labor efforts of the service" | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaCreate' | |
ItemSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ItemSchema' | |
- $ref: '#/components/schemas/CompanyRelationIdentifierSchema' | |
- type: object | |
properties: | |
suppliers: | |
type: array | |
items: | |
$ref: '#/components/schemas/ItemSupplierSchemaRead' | |
nullable: true | |
components: | |
type: array | |
description: "sub items that are components of the service" | |
items: | |
$ref: '#/components/schemas/ComponentSchemaUpdate' | |
labor_efforts: | |
type: array | |
description: "sub items that are labor efforts of the service" | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaUpdate' | |
required: | |
- id | |
UserSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
salutation: | |
type: string | |
description: Salutation of the user. | |
example: "Herr" | |
enum: | |
- Herr | |
- Frau | |
title: | |
type: string | |
description: Title of the user. | |
example: Dr. | |
firstname: | |
type: string | |
description: Firstname of the user. | |
example: John | |
lastname: | |
type: string | |
description: Lastname of the user. | |
example: Doe | |
phone: | |
type: string | |
description: Phone number of the user | |
example: "+4915632145789" | |
onboarding_survey_status: | |
type: string | |
example: UNSTARTED | |
enum: | |
- UNSTARTED | |
- COMPLETED | |
required: | |
- firstname | |
- lastname | |
UserSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/UserSchema' | |
- type: object | |
type: object | |
properties: | |
email: | |
type: string | |
format: email | |
description: Email of the user. | |
example: [email protected] | |
companies: | |
type: array | |
description: List of companies the user belongs to. | |
items: | |
$ref: '#/components/schemas/CompanySchemaRead' | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
UserDataSchema: | |
allOf: | |
- type: object | |
type: object | |
properties: | |
salutation: | |
type: string | |
description: Salutation of the user. | |
enum: | |
- Herr | |
- Frau | |
title: | |
type: string | |
description: Title of the user. | |
example: Dr. | |
nullable: true | |
firstname: | |
type: string | |
description: First name of the user. | |
example: John | |
lastname: | |
type: string | |
description: Last name of the user. | |
example: Doe | |
phone: | |
type: string | |
description: Phone number of the user. | |
example: null | |
nullable: true | |
email: | |
type: string | |
format: email | |
description: Email of the user. | |
example: [email protected] | |
ExternalCompanyUserDetails: | |
type: object | |
properties: | |
creation_source: | |
type: string | |
example: "wuerth_e-shop" | |
external_user_id: | |
type: string | |
example: "9430607" | |
UserSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/UserSchema' | |
- type: object | |
type: object | |
required: | |
- id | |
UserReferenceSchema: | |
allOf: | |
- $ref: '#/components/schemas/GenericResponseSchema' | |
- type: object | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
firstname: | |
type: string | |
description: The first name of the user. | |
lastname: | |
type: string | |
description: The last name of the user. | |
UserInviteSchema: | |
type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
role: | |
type: string | |
example: "Admin" | |
enum: | |
- CompanyOwner | |
- Admin | |
- Member | |
email: | |
type: string | |
format: email | |
example: "[email protected]" | |
is_mobile: | |
type: boolean | |
default: false | |
description: "Has a mobile subscription plan" | |
nullable: false | |
firstname: | |
type: string | |
description: Firstname of the contact. | |
example: "John" | |
lastname: | |
type: string | |
description: Lastname of the contact. | |
example: "Doe" | |
partner_number: | |
type: string | |
description: Partner number on Würth Onlineshop. | |
UserInviteSchemaRead: | |
allOf: | |
- $ref: "#/components/schemas/UserSchema" | |
- type: object | |
type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
required: | |
- id | |
UserInviteSchemaUpdate: | |
allOf: | |
- $ref: "#/components/schemas/UserInviteSchema" | |
- type: object | |
type: object | |
required: | |
- id | |
properties: | |
id: | |
type: string | |
format: uuid | |
description: Unique ID of the invited user | |
example: "47d7a0a8-fd2f-4615-a6e2-556c45e55827" | |
ContactBankAccount: | |
type: object | |
properties: | |
iban: | |
type: string | |
description: IBAN of the bank account. | |
example: "DE02120300000000202051" | |
bic: | |
type: string | |
description: BIC of the bank account. | |
example: "BYLADEM1001" | |
bank_name: | |
type: string | |
description: Name of the bank account. | |
example: "DEUTSCHE KREDITBANK BERLIN" | |
account_owner: | |
type: string | |
description: Name of the bank account owner. | |
example: "John Doe" | |
ContactSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
contact_number: | |
type: string | |
description: Contact number. | |
example: "123456" | |
minLength: 1 | |
maxLength: 16 | |
salutation: | |
type: string | |
description: Salutation of the contact. | |
example: "Herr" | |
enum: | |
- Herr | |
- Frau | |
title: | |
type: string | |
description: Title of the contact. | |
example: "Dr." | |
maxLength: 10 | |
firstname: | |
type: string | |
description: Firstname of the contact. | |
example: "John" | |
maxLength: 20 | |
lastname: | |
type: string | |
description: Lastname of the contact. | |
example: "Doe" | |
maxLength: 20 | |
company_name: | |
type: string | |
description: Company name of the contact. | |
example: "WCS" | |
maxLength: 200 | |
email: | |
type: string | |
format: email | |
description: Email the contact. | |
example: "[email protected]" | |
phone: | |
type: string | |
description: Phone number of the contact | |
example: "+4915632145789" | |
website: | |
type: string | |
description: Website of the contact. | |
example: "www.john-doe.com" | |
address: | |
type: string | |
description: Address of the contact. | |
example: "Suncity Street 23" | |
maxLength: 50 | |
additional_address: | |
type: string | |
description: Additional address of the contact. | |
example: "Moon Rover Block" | |
maxLength: 200 | |
zip: | |
type: string | |
description: Postal code of the contact. | |
example: "74516" | |
maxLength: 10 | |
city: | |
type: string | |
description: City of the contact. | |
example: "New York" | |
maxLength: 50 | |
country_code: | |
type: string | |
pattern: '^[A-Z]{2}$' | |
description: Country code of the contact. Confirming ISO-31661 | |
example: "DE" | |
bank_accounts: | |
type: array | |
items: | |
$ref: '#/components/schemas/ContactBankAccount' | |
required: | |
- contact_number | |
ContactSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ContactSchema' | |
- type: object | |
type: object | |
ContactSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ContactSchema' | |
- type: object | |
properties: | |
tags: | |
type: array | |
items: | |
$ref: '#/components/schemas/TagReferencedSchemaRead' | |
nullable: true | |
type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was created. | |
example: "2024-01-01T00:00:00Z" | |
required: | |
- id | |
ContactSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ContactSchema' | |
- $ref: '#/components/schemas/CompanyRelationIdentifierSchema' | |
- type: object | |
type: object | |
required: | |
- id | |
PresignedUrlSchema: | |
type: object | |
properties: | |
entity_type: | |
type: string | |
description: Type of related entity. | |
example: item | |
enum: | |
- item | |
- image | |
- document | |
file_type: | |
type: string | |
example: csv | |
enum: | |
- csv | |
- jpg | |
- jpeg | |
- png | |
original_file_name: | |
type: string | |
example: "example_image.jpg" | |
file_size: | |
type: number | |
description: size of the file that is being uploaded in bytes | |
resource_path: | |
type: string | |
example: import | |
enum: | |
- import | |
- item | |
- logo | |
- document | |
caption: | |
type: string | |
description: small description of a photo | |
example: any string value | |
nullable: true | |
required: | |
- entity_type | |
- file_type | |
- original_file_name | |
- resource_path | |
- file_size | |
ImportRequestBody: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
required: | |
- id | |
ImagePresignUrlSchema: | |
type: object | |
properties: | |
presignedURL: | |
$ref: "#/components/schemas/ImageSchema" | |
ImageSchema: | |
type: object | |
properties: | |
original: | |
type: string | |
resized_62px: | |
type: string | |
resized_300px: | |
type: string | |
resized_960px: | |
type: string | |
FilePathsSchema: | |
type: object | |
properties: | |
original: | |
type: string | |
images: | |
$ref: '#/components/schemas/ImageSchema' | |
FileSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
company_id: | |
type: string | |
format: uuid | |
entity_type: | |
type: string | |
enum: | |
- image | |
- item | |
- document | |
file_path: | |
$ref: '#/components/schemas/FilePathsSchema' | |
file_size: | |
type: number | |
nullable: true | |
description: size of the file in bytes | |
state: | |
type: string | |
enum: | |
- url_generated | |
- uploaded | |
- resized | |
- processing_failed | |
- deleted | |
original_file_name: | |
type: string | |
description: original file name | |
nullable: false | |
caption: | |
type: string | |
example: string | |
nullable: true | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
FileSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/FileSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
required: | |
- id | |
example: | |
id: "f47ac10b-58cc-4372-a567-0e02b2c3d479" | |
FileSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/FileSchema' | |
type: object | |
properties: | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was last updated. | |
example: "2024-01-01T00:00:00Z" | |
FileSchemaUpdate: | |
$ref: '#/components/schemas/FileSchema' | |
NoteSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
entity_id: | |
type: string | |
format: uuid | |
description: UUID of the entity related to the note. | |
example: "321ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
entity_type: | |
type: string | |
description: Type of related entity. | |
example: item | |
enum: | |
- company | |
- contact | |
- item | |
- user | |
- task | |
body: | |
type: string | |
description: max. length 500 characters. | |
NoteSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/NoteSchema' | |
- type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the note was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the note was last updated. | |
example: "2024-01-01T00:00:00Z" | |
created_by_user: | |
allOf: | |
- $ref: '#/components/schemas/UserReferenceSchema' | |
- type: object | |
updated_by_user: | |
allOf: | |
- $ref: '#/components/schemas/UserReferenceSchema' | |
- type: object | |
required: | |
- id | |
NoteSchemaCreate: | |
properties: | |
entity_id: | |
type: string | |
format: uuid | |
description: UUID of the entity related to the note. | |
example: "321ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
entity_type: | |
type: string | |
description: Type of related entity. | |
example: item | |
enum: | |
- company | |
- contact | |
- item | |
- user | |
- task | |
body: | |
type: string | |
description: max. length 500 characters. | |
NoteSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/NoteSchema' | |
- type: object | |
required: | |
- id | |
TaskSchema: | |
type: object | |
properties: | |
title: | |
type: string | |
description: maximum 100 characters | |
example: ACME | |
description: | |
type: string | |
description: maximum 1200 characters | |
example: Task for construction | |
nullable: true | |
location: | |
$ref: '#/components/schemas/LocationSchema' | |
archived_at: | |
type: string | |
format: date-time | |
nullable: true | |
example: "2024-01-01T00:00:00Z" | |
started_at: | |
type: string | |
format: date-time | |
nullable: true | |
example: "2024-01-01T00:00:00Z" | |
completed_at: | |
type: string | |
format: date-time | |
nullable: true | |
example: "2024-01-01T00:00:00Z" | |
status: | |
type: string | |
example: open | |
enum: | |
- completed | |
- in_progress | |
- open | |
priority: | |
type: string | |
example: low | |
enum: | |
- low | |
- medium | |
- high | |
- none | |
contact_id: | |
type: string | |
format: uuid | |
nullable: true | |
company_id: | |
type: string | |
format: uuid | |
TaskSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TaskSchema' | |
- type: object | |
type: object | |
properties: | |
task_users: | |
type: array | |
items: | |
$ref: '#/components/schemas/TaskCreateTaskUserSchemaCreate' | |
kanban_board_previous_task_id: | |
type: string | |
format: uuid | |
nullable: true | |
default: null | |
description: This field should be always set to default value null. This will put new task to the top in kanban column. | |
required: | |
- title | |
- company_id | |
TaskSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/TaskSchema' | |
- type: object | |
type: object | |
properties: | |
kanban_board_previous_task_id: | |
type: string | |
format: uuid | |
nullable: true | |
description: | | |
This field specifies the task after which the current task should be positioned on the Kanban board. It can have three states: | |
1. Null: The value is null, which places the task in the first position. | |
2. UUID: The value is a specific task ID, which places the current task immediately after the specified task. | |
3. Omitted: The field is not provided, which means the task's position will not be updated. This field can not be ommited if task status is changed. | |
required: | |
- id | |
- title | |
- company_id | |
TaskSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/TaskSchema' | |
- type: object | |
type: object | |
properties: | |
kanban_card_position_index: | |
type: number | |
nullable: true | |
example: 1.5 | |
description: kanban position index of the task for sorting task status wise | |
task_users: | |
type: array | |
items: | |
$ref: '#/components/schemas/TaskUserSchemaRead' | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
TaskUserSchema: | |
type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
user_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
task_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
role: | |
type: string | |
example: requester | |
enum: | |
- requester | |
- owner | |
- follower | |
TaskUserSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TaskUserSchema' | |
- type: object | |
type: object | |
required: | |
- user_id | |
- role | |
- task_id | |
- company_id | |
TaskUserSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/TaskUserSchema' | |
- type: object | |
type: object | |
TaskUserSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: "123e4567-e89b-12d3-a456-426614174000" | |
user_id: | |
type: string | |
format: uuid | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
required: | |
- user_id | |
- id | |
TimeEntrySchema: | |
type: object | |
properties: | |
start_time: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
end_time: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
description: | |
type: string | |
description: maximum 1200 characters | |
example: A note to time entry | |
user_id: | |
type: string | |
format: uuid | |
required: | |
- start_time | |
- end_time | |
- user_id | |
TaskCreateTaskUserSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TaskUserSchema' | |
type: object | |
required: | |
- role | |
- user_id | |
TimeEntryReferencedEntitiesSchema: | |
type: object | |
properties: | |
referenced_entities: | |
type: array | |
items: | |
type: object | |
properties: | |
entity_id: | |
type: string | |
format: uuid | |
entity_type: | |
type: string | |
enum: | |
- TASK | |
- DOCUMENT_ITEM | |
- HOURLY_RATE_ITEM | |
description: Referenced entities of the time entry. | |
TimeEntrySchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TimeEntrySchema' | |
- $ref: '#/components/schemas/TimeEntryReferencedEntitiesSchema' | |
- type: object | |
type: object | |
TimeEntrySchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/TimeEntrySchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
example: "123e4567-e89b-12d3-a456-426614174000" | |
type: object | |
TimeEntrySchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/TimeEntrySchema' | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/TimeEntryReferencedEntitiesSchema' | |
- type: object | |
type: object | |
properties: | |
duration: | |
type: number | |
description: Duration of the time entry in seconds | |
example: 3600 | |
company_id: | |
type: string | |
format: uuid | |
required: | |
- duration | |
- company_id | |
- id | |
LocationSchema: | |
type: object | |
properties: | |
google_place_id: | |
type: string | |
address: | |
type: string | |
city: | |
type: string | |
zip: | |
type: string | |
additional_address: | |
type: string | |
nullable: true | |
country_code: | |
type: string | |
nullable: true | |
longitude: | |
type: number | |
nullable: true | |
latitude: | |
type: number | |
nullable: true | |
ConsecutiveNumberingSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
entity_type: | |
type: string | |
description: Entity type of the consecutive numbering. | |
enum: | |
- item | |
- order_process | |
- document | |
subtype: | |
type: string | |
description: Subtype of entity type of the consecutive numbering. | |
enum: | |
- product | |
- offer | |
- order | |
- invoice | |
- cancellationinvoice | |
consecutive_schema: | |
type: string | |
description: Consecutive schema of the consecutive numbering. | |
example: "art{consecutive_number}" | |
is_enabled: | |
type: boolean | |
description: Consecutive numbering is enabled or not. | |
example: True | |
consecutive_number: | |
type: integer | |
description: Consecutive number of the consecutive numbering. | |
example: 10 | |
digit: | |
type: integer | |
description: Digit of the consecutive numbering with ge=1 and le=10. | |
example: 8 | |
required: | |
- entity_type | |
- subtype | |
ConsecutiveNumberingSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ConsecutiveNumberingSchema' | |
- type: object | |
type: object | |
required: | |
- entity_type | |
- subtype | |
ConsecutiveNumberingSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
description: "ID of the consecutive numbering setting to be updated." | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
consecutive_number: | |
type: integer | |
description: "the number from which we start generating the consecutive numberings" | |
example: 5 | |
consecutive_schema: | |
type: string | |
description: "the format of the consecutive numbering" | |
example: "re{consecutive_number}" | |
digit: | |
type: integer | |
description: "Minimum number of digits to be handled by the consecutive numbering" | |
example: 4 | |
PermissionEndpoint: | |
type: object | |
properties: | |
methods: | |
type: array | |
items: | |
type: string | |
enum: [ GET, POST, PUT, DELETE ] | |
description: HTTP methods allowed for this endpoint. | |
endpoint: | |
type: string | |
description: The API endpoint. | |
required: | |
- methods | |
- endpoint | |
PermissionSchema: | |
type: object | |
properties: | |
user_id: | |
type: string | |
format: uuid | |
description: UUID of the user. | |
example: 85d4454e-a819-41a5-b796-4c00493f7aed | |
company_id: | |
type: string | |
format: uuid | |
description: UUID of the company. | |
example: 85d4454e-a819-41a5-b796-4c00493f7aed | |
role: | |
type: string | |
description: Role of the user in respect to company. | |
example: "CompanyOwner" | |
permissions: | |
type: array | |
description: List of endpoints and methods the user has access to. | |
items: | |
$ref: '#/components/schemas/PermissionEndpoint' | |
required: | |
- user_id | |
- company_id | |
- role | |
- permissions | |
PermissionSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/PermissionSchema' | |
- type: object | |
type: object | |
EntityTagSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
tag_id: | |
type: string | |
format: uuid | |
entity_id: | |
type: string | |
format: uuid | |
entity_type: | |
type: string | |
enum: | |
- company | |
- contact | |
- item | |
- user | |
EntityTagSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/EntityTagSchema' | |
- type: object | |
properties: | |
tag_name: | |
type: string | |
nullable: true | |
created_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
EntityTagSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/EntityTagSchema' | |
- type: object | |
properties: | |
created_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
tag_name: | |
type: string | |
nullable: true | |
EntityTagSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/EntityTagSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
TagSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
name: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
pattern: "^[a-zA-Z0-9\\-_&()]+$" | |
TagSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/TagSchema' | |
- type: object | |
properties: | |
created_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
TagSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/TagSchema' | |
TagSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/TagSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
TagReferencedSchemaRead: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
entity_tag_id: | |
type: string | |
format: uuid | |
name: | |
type: string | |
HistorySchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
id: | |
type: string | |
description: History ID. | |
example: "14b10914-9b5a-4f01-818d-ac9e5d399093" | |
entity_id: | |
type: string | |
description: ID of an specific entity (e.g item or contact). | |
example: "12310914-9b5a-4f01-818d-ac9e5d399321" | |
diff: | |
type: object | |
description: Values before and after update for different fields. | |
additionalProperties: | |
type: object | |
properties: | |
new: | |
type: string | |
description: The new value for this field. | |
example: "ac6468ee-7ade-4a0a-8854-a00536c86334" | |
old: | |
type: string | |
description: The old value for this field. Can be null if not previously set. | |
nullable: true | |
example: null | |
example: | |
updated_by: | |
new: "4a62f74b-ead6-4c2b-8bb4-8e572e44f43e" | |
old: null | |
bank_accounts: | |
new: "[{\"bic\": \"DEUTDEFFXXX\", \"iban\": \"DE89370400440532013000\", \"bank_name\": \"Deutsche Bank\", \"account_owner\": \"John Doe\"}]" | |
old: "[{\"bic\": \"INGDDEFFXXX\", \"iban\": \"DE75512108001245126199\", \"bank_name\": \"ING\", \"account_owner\": \"Jane Smith\"}]" | |
contact_number: | |
new: "+491234567890" | |
old: "+499876543210" | |
updated_at: | |
type: string | |
description: Update timestamp. | |
example: "2024-06-06T13:22:38.888919" | |
updated_by: | |
type: object | |
description: User responsible for the update. | |
example: { | |
'id': 'eac58d35-4a68-4bd5-bc28-172ca2eb326b', | |
'salutation': 'Herr', | |
'title': null, | |
'firstname': 'John', | |
'lastname': 'Doe' | |
} | |
required: | |
- entity_type | |
HistorySchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/HistorySchema' | |
- type: object | |
properties: | |
created_at: | |
type: string | |
description: Create timestamp. | |
example: "2024-06-06T13:20:38.888919" | |
type: object | |
required: | |
- entity_type | |
ItemSupplierSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
contact_id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
item_id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
company_id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
purchase_price_net: | |
type: number | |
format: decimal | |
nullable: true | |
description: The net sales price for items, the max digits 10, decimal places 2 | |
sales_price_gross: | |
type: number | |
format: decimal | |
nullable: true | |
description: The gross sales price for items, the max digits 10, decimal places 2 | |
supplier_item_number: | |
type: string | |
nullable: true | |
ItemSupplierSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ItemSupplierSchema' | |
- type: object | |
properties: | |
contact: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
description: "Unique identifier for the supplier" | |
contact_number: | |
type: string | |
description: "Contact number of the supplier" | |
salutation: | |
type: string | |
nullable: true | |
description: "Salutation of the supplier" | |
title: | |
type: string | |
nullable: true | |
description: "Title of the supplier" | |
firstname: | |
type: string | |
nullable: true | |
description: "First name of the supplier" | |
lastname: | |
type: string | |
nullable: true | |
description: "Last name of the supplier" | |
company_name: | |
type: string | |
nullable: true | |
description: "Name of the company" | |
created_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
ItemSupplierSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ItemSupplierSchema' | |
ItemSupplierSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ItemSupplierSchema' | |
- type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: '550e8400-e29b-41d4-a716-446655440000' | |
ExportSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
fields: | |
type: array | |
description: Entity fields that will be exported. | |
items: | |
type: string | |
example: ["title", "description"] | |
entity_type: | |
type: string | |
description: Entity type to be exported | |
example: "product" | |
format: | |
type: string | |
description: Export file format. | |
example: "csv" | |
ExportSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/ExportSchema' | |
- type: object | |
ExportSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ExportSchema' | |
- type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
description: UUID of the company. | |
example: "321ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
file_id: | |
type: string | |
format: uuid | |
description: UUID of the exported file. | |
nullable: true | |
example: "567ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
expires_at: | |
type: string | |
description: Until when the file is available for download. | |
nullable: true | |
example: "2024-01-01T00:00:00Z" | |
created_at: | |
type: string | |
format: date-time | |
description: Create timestamp. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
example: "2024-01-01T00:00:00Z" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "eac58d35-4a68-4bd5-bc28-172ca2eb326b" | |
type: object | |
required: | |
- entity_type | |
DocumentTypeEnum: | |
type: string | |
description: Document type enumeration. | |
enum: | |
- OFFER | |
- CONFIRMATION | |
- INVOICE | |
- SERVICEREPORT | |
- CANCELLATIONINVOICE | |
DefaultTextSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
category: | |
type: string | |
description: Category of the default text | |
example: INTRO_TEXT | |
enum: | |
- INTRO_TEXT | |
- OUTRO_TEXT | |
- PAYMENT_TERMS | |
- TAX_INFORMATION | |
title: | |
type: string | |
description: Title of the default text. | |
minLength: 1 | |
maxLength: 100 | |
content: | |
type: string | |
description: Content of the default text. | |
minLength: 1 | |
maxLength: 5000 | |
vat_category_code: | |
type: string | |
nullable: true | |
description: > | |
VAT category code. **Required when `category` is `TAX_INFORMATION`**. | |
example: E | |
enum: | |
- Z | |
- E | |
- AE | |
- K | |
- G | |
- O | |
- L | |
- M | |
document_types: | |
type: array | |
description: | | |
List of document types for this default text. | |
If null, it means it is a draft default text not assigned to any document yet. | |
items: | |
$ref: '#/components/schemas/DocumentTypeEnum' | |
nullable: true | |
default: [] | |
payment_term_days: | |
type: integer | |
description: Number of days after invoice date when payment is due | |
minimum: 0 | |
default: 14 | |
nullable: true | |
example: 14 | |
required: | |
- category | |
- title | |
- content | |
DefaultTextSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/DefaultTextSchema' | |
- type: object | |
properties: | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
DefaultTextSchemaCreate: | |
allOf: | |
- $ref: '#/components/schemas/DefaultTextSchema' | |
- type: object | |
DefaultTextSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/DefaultTextSchema' | |
- type: object | |
required: | |
- id | |
RoleAndPermissionSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
name: | |
type: string | |
minLength: 1 | |
maxLength: 30 | |
description: | |
type: string | |
minLength: 1 | |
maxLength: 500 | |
permissions: | |
type: array | |
items: | |
type: object | |
properties: | |
endpoint: | |
type: string | |
description: API endpoint for the permission. | |
methods: | |
type: array | |
description: Allowed HTTP methods for the endpoint. | |
items: | |
type: string | |
example: | |
- endpoint: "/vat_rates" | |
methods: [ "GET", "POST" ] | |
- endpoint: "/imports" | |
methods: [ "GET" ] | |
required: | |
- id | |
- name | |
- description | |
- permissions | |
RoleAndPermissionSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/RoleAndPermissionSchema' | |
- type: object | |
FileAttachmentSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
company_id: | |
type: string | |
format: uuid | |
entity_type: | |
type: string | |
enum: | |
- TASK | |
- DOCUMENT | |
description: The type of an entity, to which a file will be attached. | |
entity_id: | |
type: string | |
format: uuid | |
description: An id of the entity, to which a file will be attached. | |
file_entity_id: | |
type: string | |
format: uuid | |
required: | |
- id | |
- entity_type | |
- entity_id | |
- file_entity_id | |
FileAttachmentSchemaCreate: | |
allOf: | |
- type: object | |
properties: | |
entity_type: | |
type: string | |
enum: | |
- TASK | |
- DOCUMENT | |
description: The type of an entity, to which a file will be attached. | |
entity_id: | |
type: string | |
format: uuid | |
file_entity_id: | |
type: string | |
format: uuid | |
description: An id of an entity, to which a file will be attached. | |
required: | |
- entity_type | |
- entity_id | |
- file_entity_id | |
FileAttachmentSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/FileAttachmentSchema' | |
- type: object | |
properties: | |
created_by_user: | |
allOf: | |
- $ref: '#/components/schemas/UserReferenceSchema' | |
- type: object | |
updated_by_user: | |
allOf: | |
- $ref: '#/components/schemas/UserReferenceSchema' | |
- type: object | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the file was last updated. | |
example: "2024-01-01T00:00:00Z" | |
FileAttachmentWithFileSchemaRead: | |
type: object | |
allOf: | |
- $ref: '#/components/schemas/FileAttachmentSchemaRead' | |
- type: object | |
properties: | |
file: | |
$ref: '#/components/schemas/FileSchemaRead' | |
DocumentAttachmentSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
company_id: | |
type: string | |
format: uuid | |
entity_type: | |
type: string | |
enum: | |
- TASK | |
description: The type of an entity, to which a document will be attached. | |
entity_id: | |
type: string | |
format: uuid | |
description: An id of the entity, to which a document will be attached. | |
document_entity_id: | |
type: string | |
format: uuid | |
document_entity: | |
$ref: '#/components/schemas/DocumentSchemaRead' | |
required: | |
- id | |
- entity_type | |
- entity_id | |
- document_entity_id | |
DocumentAttachmentSchemaCreate: | |
allOf: | |
- type: object | |
properties: | |
entity_type: | |
type: string | |
enum: | |
- TASK | |
description: The type of an entity, to which a document will be attached. | |
entity_id: | |
type: string | |
format: uuid | |
document_entity_id: | |
type: string | |
format: uuid | |
description: An id of a document entity, which will be attached. | |
required: | |
- entity_type | |
- entity_id | |
- document_entity_id | |
DocumentAttachmentSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/DocumentAttachmentSchema' | |
- type: object | |
CashbookTypes: | |
type: string | |
enum: ["MANUAL", "ONLINE_BANKING"] | |
CashbookSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
description: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
description: "Brief description of the cashbook." | |
iban: | |
type: string | |
nullable: true | |
description: "IBAN of the bank account, validated if provided." | |
bic: | |
type: string | |
nullable: true | |
description: "BIC of the bank account, validated if provided." | |
cashbook_type: | |
$ref: '#/components/schemas/CashbookTypes' | |
company_id: | |
type: string | |
format: uuid | |
starting_balance: | |
type: number | |
format: decimal | |
description: "Initial balance set at the time of creation." | |
opening_balance_date: | |
type: string | |
format: date-time | |
nullable: false | |
description: "Opening balance date for cashbook" | |
current_balance: | |
type: number | |
format: decimal | |
description: "Current balance, initialized to `starting_balance` if not provided." | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
archived: | |
type: boolean | |
description: "Indicates if the cashbook has been archived." | |
nullable: true | |
archived_at: | |
type: string | |
format: date-time | |
nullable: true | |
description: "Timestamp for when the cashbook was archived." | |
archived_by: | |
type: string | |
format: uuid | |
nullable: true | |
description: "UUID of the user who archived the cashbook." | |
created_at: | |
type: string | |
format: date-time | |
description: "Timestamp for cashbook creation." | |
updated_at: | |
type: string | |
format: date-time | |
description: "Timestamp for the last update." | |
CashbookSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/CashbookSchema' | |
CashbookSchemaCreate: | |
type: object | |
required: | |
- description | |
- cashbook_type | |
- starting_balance | |
- opening_balance_date | |
properties: | |
description: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
description: "Brief description of the cashbook." | |
cashbook_type: | |
$ref: '#/components/schemas/CashbookTypes' | |
starting_balance: | |
type: number | |
format: decimal | |
description: "Initial balance for the cashbook entry." | |
opening_balance_date: | |
type: string | |
format: date-time | |
nullable: false | |
description: "Opening balance date for cashbook" | |
current_balance: | |
type: number | |
format: decimal | |
nullable: true | |
description: "Defaults to starting_balance if not provided." | |
CashbookSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
description: "ID of the cashbook to be updated." | |
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6" | |
description: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
description: "Optional description of the cashbook." | |
iban: | |
type: string | |
description: "IBAN of the bank account, validated if provided." | |
example: "DE02120300000000202051" | |
bic: | |
type: string | |
description: "BIC of the bank account, validated if provided." | |
example: "BYLADEM1001" | |
archived: | |
type: boolean | |
description: "Flag to archive or unarchive the cashbook." | |
example: true | |
TransactionTypes: | |
type: string | |
enum: [ INCOME, EXPENSE ] | |
TransactionSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
cashbook_id: | |
type: string | |
format: uuid | |
description: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
number: | |
type: string | |
nullable: true | |
total_amount: | |
type: number | |
format: decimal | |
transaction_type: | |
$ref: '#/components/schemas/TransactionTypes' | |
transaction_date: | |
type: string | |
format: date-time | |
nullable: false | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
created_at: | |
type: string | |
format: date-time | |
updated_at: | |
type: string | |
format: date-time | |
TransactionSchemaCreate: | |
type: object | |
required: | |
- cashbook_id | |
- description | |
- total_amount | |
- transaction_type | |
- transaction_date | |
properties: | |
cashbook_id: | |
type: string | |
format: uuid | |
description: "Identifier of the cashbook the transaction belongs to." | |
description: | |
type: string | |
minLength: 3 | |
maxLength: 50 | |
description: "Brief description of the transaction." | |
total_amount: | |
type: number | |
format: decimal | |
description: "Total amount including VAT, validated as a currency decimal." | |
transaction_type: | |
$ref: '#/components/schemas/TransactionTypes' | |
transaction_date: | |
type: string | |
format: date-time | |
description: "Date and time when the transaction occurred." | |
TransactionSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/TransactionSchema' | |
DocumentItemSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: UUID | |
example: eec30cad-ccc2-416e-af6f-06b3d64cb7fb | |
title: | |
type: string | |
description: | |
type: string | |
sales_price_net: | |
type: number | |
example: 1.50 | |
sales_price_gross: | |
type: number | |
quantity: | |
type: number | |
example: 1 | |
unit: | |
type: string | |
example: "pce" | |
position: | |
type: integer | |
description: "Position of the item in the document" | |
example: 0 | |
nullable: true | |
document_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
task_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
source_document_item_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
description: Document item ID from which this item was copied. Used for tracking the immediate source when modifying document items list and managing copied items. | |
origin_document_item_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
description: Document item ID from which the copying process originally started. Enables querying all document items sharing the same origin to track the complete chain of changes from the initial source. | |
sales_price_currency: | |
type: string | |
example: "€" | |
sales_price_vat_rate_id: | |
type: string | |
format: UUID | |
example: dea47f3d-cf18-4c1e-a3ab-3acd018ce4c2 | |
components: | |
description: List of items that are part of this document item. | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentItemComponentSchema' | |
labor_efforts: | |
type: array | |
description: List of labor efforts that are part of this document item. | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaRead' | |
DocumentItemSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/DocumentItemSchema' | |
- type: object | |
type: object | |
properties: | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the document item was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the document item was last updated. | |
example: "2024-01-01T00:00:00Z" | |
company_id: | |
type: string | |
format: uuid | |
example: "321ea12f-1dde-4ced-bd7e-ef5724d988cc" | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
DocumentItemSchemaCreate: | |
type: object | |
properties: | |
title: | |
type: string | |
description: | |
type: string | |
sales_price_net: | |
type: number | |
example: 1.50 | |
sales_price_gross: | |
type: number | |
quantity: | |
type: number | |
example: 1 | |
unit: | |
type: string | |
example: "pce" | |
position: | |
type: integer | |
description: "Position of the item in the document" | |
example: 0 | |
nullable: true | |
document_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
task_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
source_document_item_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
description: Document item ID from which this item was copied. Used for tracking the immediate source when modifying document items list and managing copied items. | |
origin_document_item_id: | |
type: string | |
format: UUID | |
example: e34dfb27-fca7-43a6-9e36-188fb0a19d29 | |
description: Document item ID from which the copying process originally started. Enables querying all document items sharing the same origin to track the complete chain of changes from the initial source. | |
sales_price_currency: | |
type: string | |
example: "€" | |
sales_price_vat_rate_id: | |
type: string | |
format: UUID | |
example: dea47f3d-cf18-4c1e-a3ab-3acd018ce4c2 | |
components: | |
description: List of items that are part of this document item. | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentItemComponentSchema' | |
labor_efforts: | |
type: array | |
description: List of labor efforts that are part of this document item. | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaRead' | |
required: | |
- title | |
DocumentItemSchemaUpdate: | |
type: object | |
properties: | |
id: | |
type: string | |
format: UUID | |
example: eec30cad-ccc2-416e-af6f-06b3d64cb7fb | |
title: | |
type: string | |
description: | |
type: string | |
sales_price_net: | |
type: number | |
example: 1.50 | |
sales_price_gross: | |
type: number | |
quantity: | |
type: number | |
example: 1 | |
unit: | |
type: string | |
example: "pce" | |
position: | |
type: integer | |
description: "Position of the item in the document" | |
example: 0 | |
nullable: true | |
sales_price_currency: | |
type: string | |
example: "€" | |
sales_price_vat_rate_id: | |
type: string | |
format: UUID | |
example: dea47f3d-cf18-4c1e-a3ab-3acd018ce4c2 | |
components: | |
description: List of items that are part of this document item. | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentItemComponentSchema' | |
labor_efforts: | |
type: array | |
description: List of labor efforts that are part of this document item. | |
items: | |
$ref: '#/components/schemas/LaborEffortSchemaRead' | |
required: | |
- title | |
SubscriptionPlanSchema: | |
type: object | |
description: Schema for subscription plan data | |
properties: | |
id: | |
type: string | |
format: uuid | |
name: | |
type: string | |
maxLength: 50 | |
nullable: false | |
description: | |
type: string | |
format: text | |
nullable: true | |
amount: | |
type: number | |
format: decimal | |
description: Currency amount for the subscription | |
nullable: false | |
minimum_duration: | |
type: string | |
maxLength: 10 | |
description: "Duration format (e.g., P1D, P1M, P1Y)" | |
nullable: false | |
contract_duration: | |
type: string | |
maxLength: 10 | |
description: "Duration format (e.g., P1M, P1Y)" | |
nullable: true | |
type: | |
type: string | |
enum: | |
- TRIAL | |
- BASE | |
- PACKAGE | |
- PRO | |
- MOBILE | |
- ENTERPRISE | |
nullable: false | |
required: | |
- id | |
- name | |
- amount | |
- minimum_duration | |
- type | |
SubscriptionPlanSchemaRead: | |
description: Schema for reading subscription plan data | |
allOf: | |
- $ref: '#/components/schemas/SubscriptionPlanSchema' | |
- type: object | |
properties: | |
parent: | |
description: Reference to a parent subscription plan | |
nullable: true | |
allOf: | |
- $ref: '#/components/schemas/SubscriptionPlanSchema' | |
SubscriptionDiscountValidateSchema: | |
type: object | |
properties: | |
name: | |
type: string | |
description: The name/code of the discount to validate | |
example: "SUMMER2025" | |
required: | |
- name | |
SubscriptionDiscountSchema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
name: | |
type: string | |
description: The name/code of the discount | |
example: "SUMMER2025" | |
amount: | |
type: number | |
format: decimal | |
is_recurring: | |
type: boolean | |
description: Defines if the discount is one time or recurring one. | |
type: | |
type: string | |
enum: [PERCENTAGE, FIXED] | |
example: "FIXED" | |
required: | |
- id | |
- name | |
- amount | |
- is_recurring | |
- type | |
SubscriptionDiscountSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/SubscriptionDiscountSchema' | |
- type: object | |
CompanySubscriptionPlanSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
type: object | |
properties: | |
duration: | |
type: string | |
description: Duration of the subscription plan (e.g., P1D, P1M, P1Y) | |
nullable: true | |
state: | |
type: string | |
enum: [ACTIVE, EXPIRED, CANCELLED, DUNNING] | |
description: Current state of the subscription plan | |
start_date: | |
type: string | |
format: date-time | |
description: Start date of the subscription plan | |
end_date: | |
type: string | |
format: date-time | |
description: End date of the subscription plan | |
company_id: | |
type: string | |
format: uuid | |
description: ID of the company this subscription plan belongs to | |
active_seats: | |
$ref: '#/components/schemas/activeSeatsSchema' | |
subscription_plan: | |
$ref: '#/components/schemas/SubscriptionPlanSchemaRead' | |
required: | |
- id | |
- state | |
- start_date | |
- end_date | |
- company_id | |
- subscription_plan_id | |
activeSeatsSchema: | |
description: Number of Desktop and Mobile 'seats' for Company Subscription | |
nullable: true | |
type: object | |
properties: | |
desktop: | |
type: integer | |
description: Number of active Desktop users | |
example: 10 | |
mobile: | |
type: integer | |
description: Number of active Mobile users | |
example: 5 | |
CompanySubscriptionPlanUpgradeUserSchema: | |
type: object | |
properties: | |
user_id: | |
type: string | |
format: uuid | |
description: ID of the user to upgrade | |
subscription_plan_id: | |
type: string | |
format: uuid | |
description: ID of the subscription plan for this user | |
required: | |
- user_id | |
- subscription_plan_id | |
CompanySubscriptionPlanUpgradeSchema: | |
type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
description: ID of the company to upgrade | |
packages: | |
type: array | |
description: List of package subscription plan IDs | |
items: | |
type: string | |
format: uuid | |
default: [] | |
subscription_plan_id: | |
type: string | |
format: uuid | |
description: ID of the main subscription plan to upgrade to | |
discount_id: | |
type: string | |
format: uuid | |
description: Optional ID of a discount to apply | |
nullable: true | |
users: | |
type: array | |
description: List of user upgrades | |
items: | |
$ref: '#/components/schemas/CompanySubscriptionPlanUpgradeUserSchema' | |
total_price: | |
type: number | |
format: decimal | |
description: Total price for the upgrade | |
required: | |
- company_id | |
- subscription_plan_id | |
- users | |
- total_price | |
SmtpEncryptionTypes: | |
type: string | |
enum: [ "ssl", "tls", "none" ] | |
CompanySmtpConfigSchema: | |
type: object | |
properties: | |
id: | |
type: string | |
format: uuid | |
company_id: | |
type: string | |
format: uuid | |
smtp_host: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server hostname." | |
smtp_port: | |
type: integer | |
format: int32 | |
description: "SMTP server port." | |
smtp_username: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server username." | |
smtp_encryption: | |
$ref: '#/components/schemas/SmtpEncryptionTypes' | |
CompanySmtpConfigSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/CompanySmtpConfigSchema' | |
CompanySmtpConfigSchemaCreate: | |
type: object | |
required: | |
- smtp_host | |
- smtp_port | |
- smtp_username | |
- smtp_password | |
properties: | |
smtp_host: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server hostname." | |
smtp_port: | |
type: integer | |
format: int32 | |
description: "SMTP server port." | |
smtp_username: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server username." | |
smtp_password: | |
type: string | |
minLength: 1 | |
maxLength: 512 | |
description: "SMTP server password." | |
smtp_encryption: | |
$ref: '#/components/schemas/SmtpEncryptionTypes' | |
CompanySmtpConfigSchemaUpdate: | |
type: object | |
properties: | |
smtp_host: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server hostname." | |
smtp_port: | |
type: integer | |
format: int32 | |
description: "SMTP server port." | |
smtp_username: | |
type: string | |
minLength: 1 | |
maxLength: 255 | |
description: "SMTP server username." | |
smtp_password: | |
type: string | |
minLength: 1 | |
maxLength: 512 | |
description: "SMTP server password." | |
smtp_encryption: | |
$ref: '#/components/schemas/SmtpEncryptionTypes' | |
WorkingDays: | |
type: string | |
enum: | |
- MONDAY | |
- TUESDAY | |
- WEDNESDAY | |
- THURSDAY | |
- FRIDAY | |
- SATURDAY | |
- SUNDAY | |
description: Days of the week for working days | |
TypeOfVacationRule: | |
type: string | |
enum: | |
- FULL_TIME | |
- PART_TIME_FIXED_NUMBER_DAYS_PER_WEEK | |
- PART_TIME_EVENLY_DISTRIBUTED_HOURS | |
- PART_TIME_VARYING_WORK_DAYS | |
description: Type of vacation rule for work time contracts | |
TargetWorkingDaysSchema: | |
type: object | |
properties: | |
day: | |
$ref: '#/components/schemas/WorkingDays' | |
hours: | |
type: number | |
format: decimal | |
description: Number of hours to work on this day | |
required: | |
- day | |
- hours | |
WorkTimeContractSchemaCreate: | |
type: object | |
properties: | |
user_id: | |
type: string | |
format: uuid | |
description: ID of the user this contract belongs to | |
target_working_days: | |
type: array | |
description: List of target working days and hours | |
items: | |
$ref: '#/components/schemas/TargetWorkingDaysSchema' | |
work_time_contract_start: | |
type: string | |
format: date-time | |
description: Start date and time of the work time contract | |
work_time_contract_end: | |
type: string | |
format: date-time | |
description: End date and time of the work time contract | |
nullable: true | |
weekly_hours: | |
type: number | |
format: decimal | |
description: Total weekly hours for this contract | |
nullable: true | |
required: | |
- user_id | |
- target_working_days | |
- work_time_contract_start | |
WorkTimeContractSchemaRead: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
properties: | |
company_id: | |
type: string | |
format: uuid | |
description: ID of the company this contract belongs to | |
user_id: | |
type: string | |
format: uuid | |
description: ID of the user this contract belongs to | |
target_working_days: | |
type: array | |
description: List of target working days and hours | |
items: | |
$ref: '#/components/schemas/TargetWorkingDaysSchema' | |
work_time_contract_start: | |
type: string | |
format: date-time | |
description: Start date and time of the work time contract | |
work_time_contract_end: | |
type: string | |
format: date-time | |
description: End date and time of the work time contract | |
nullable: true | |
weekly_hours: | |
type: number | |
format: decimal | |
description: Total weekly hours for this contract | |
nullable: true | |
created_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the contract was created. | |
example: "2024-01-01T00:00:00Z" | |
updated_at: | |
type: string | |
format: date-time | |
description: Timestamp of when the contract was last updated. | |
required: | |
- id | |
- company_id | |
- user_id | |
- target_working_days | |
- work_time_contract_start | |
- created_at | |
- updated_at | |
WorkTimeContractSchemaUpdate: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- type: object | |
properties: | |
user_id: | |
type: string | |
format: uuid | |
description: ID of the user this contract belongs to | |
target_working_days: | |
type: array | |
description: List of target working days and hours | |
items: | |
$ref: '#/components/schemas/TargetWorkingDaysSchema' | |
work_time_contract_start: | |
type: string | |
format: date-time | |
description: Start date and time of the work time contract | |
work_time_contract_end: | |
type: string | |
format: date-time | |
description: End date and time of the work time contract | |
nullable: true | |
weekly_hours: | |
type: number | |
format: decimal | |
description: Total weekly hours for this contract | |
nullable: true | |
required: | |
- id | |
responses: | |
Companies: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySchemaRead' | |
CompanyUsers: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/CompanyUserSchemaRead' | |
OrderProcesses: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/OrderProcessSchemaRead' | |
Documents: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentSchemaRead' | |
Templates: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TemplateSchemaRead' | |
Items: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ItemSchemaRead' | |
DocumentItems: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/DocumentItemSchemaRead' | |
Contacts: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ContactSchemaRead' | |
Users: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/UserSchemaRead' | |
UserInvites: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: "#/components/schemas/UserInviteSchemaRead" | |
Permission: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/PermissionSchemaRead' | |
Imports: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ImportSchemaRead' | |
VatRates: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VatRateSchemaRead' | |
Tasks: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/TaskSchemaRead' | |
TaskWithRelationships: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/ResourceIdentifierSchema' | |
- $ref: '#/components/schemas/TaskSchema' | |
type: object | |
properties: | |
document_attachments: | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentAttachmentSchemaRead' | |
file_attachments: | |
type: array | |
items: | |
$ref: '#/components/schemas/FileAttachmentWithFileSchemaRead' | |
kanban_card_position_index: | |
type: number | |
nullable: true | |
example: 1.5 | |
description: kanban position index of the task for sorting task status wise | |
task_users: | |
type: array | |
items: | |
$ref: '#/components/schemas/TaskUserSchemaRead' | |
document_items: | |
type: array | |
items: | |
$ref: '#/components/schemas/DocumentItemSchemaRead' | |
created_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
updated_by: | |
type: string | |
format: uuid | |
nullable: true | |
example: "12345678-1234-5678-1234-567812345678" | |
TaskUsers: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/TaskUserSchemaRead' | |
TimeEntries: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/TimeEntrySchemaRead' | |
Files: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/FileSchemaRead' | |
ImagePresignUrl: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ImagePresignUrlSchema' | |
Notes: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/NoteSchemaRead' | |
ConsecutiveNumberings: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/ConsecutiveNumberingSchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
History: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
type: array | |
items: | |
$ref: '#/components/schemas/HistorySchemaRead' | |
headers: | |
X-WCS-PAGE: | |
$ref: '#/components/headers/X-WCS-PAGE-HEADER' | |
X-WCS-PAGE_SIZE: | |
$ref: '#/components/headers/X-WCS-PAGE_SIZE-HEADER' | |
X-WCS-TOTAL_PAGE_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_PAGE_COUNT-HEADER' | |
X-WCS-TOTAL_RESULT_COUNT: | |
$ref: '#/components/headers/X-WCS-TOTAL_RESULT_COUNT-HEADER' | |
DefaultTexts: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DefaultTextSchemaRead' | |
FileAttachments: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/FileAttachmentSchemaRead' | |
DocumentAttachments: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentAttachmentSchemaRead' | |
DeleteNoContent: | |
description: Successful deleted | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/GenericResponseSchema' | |
AcceptedRetryResponse: | |
description: Retry after duration | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/AcceptedRetryResponseSchema' | |
MissingOrInvalid: | |
description: Missing or invalid payload | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ErrorResponseSchema' | |
DisabledUser: | |
description: User is disabled | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ErrorResponseSchema' | |
NotFound: | |
description: Not Found | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ErrorResponseSchema' | |
Forbidden: | |
description: Forbidden | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ErrorResponseSchema' | |
ValidationFailed: | |
description: Validation exception | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ValidationErrorResponseSchema' | |
ServerError: | |
description: Server error | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/ErrorResponseSchema' | |
FilesPresignedUrl: | |
description: Presigned URL for file upload | |
content: | |
application/json: | |
schema: | |
type: object | |
properties: | |
id: | |
type: string | |
presignedURL: | |
type: object | |
properties: | |
url: | |
type: string | |
fields: | |
type: object | |
properties: | |
Content-Type: | |
type: string | |
example: "image/jpeg" | |
Cache-Control: | |
type: string | |
example: "max-age=3600" | |
Content-Disposition: | |
type: string | |
example: "attachment; filename=\"original.jpg\"" | |
x-amz-meta-company_id: | |
type: string | |
example: "c9e18632-3b86-45d7-9e0e-d784b37ec66d" | |
x-amz-meta-entity_type: | |
type: string | |
example: "image" | |
x-amz-meta-workflow: | |
type: string | |
example: "imageProcessing" | |
x-amz-meta-file_id: | |
type: string | |
example: "42000e43-8267-430b-842a-dda6253052a5" | |
x-amz-meta-file_type: | |
type: string | |
example: "csv" | |
x-amz-meta-resource_path: | |
type: string | |
example: "item or logo, ..." | |
key: | |
type: string | |
example: "temp/42000e43-8267-430b-842a-dda6253052a5.csv" | |
x-amz-algorithm: | |
type: string | |
example: "AWS4-HMAC-SHA256" | |
x-amz-credential: | |
type: string | |
example: "test_aws_credential" | |
x-amz-date: | |
type: string | |
example: "20240507T105303Z" | |
x-amz-security-token: | |
type: string | |
example: "security_token" | |
x-amz-signature: | |
type: string | |
example: signature | |
x-amz-meta-created_by: | |
type: string | |
example: "42000e43-8267-430b-842a-dda6253052a5" | |
policy: | |
type: string | |
example: policy | |
EInvoice: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/EInvoiceSchemaRead' | |
DocumentPDF: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DocumentPDFSchemaRead' | |
XMLValidation: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/GenericResponseSchema' | |
RoleAndPermissions: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/RoleAndPermissionSchemaRead' | |
CompanySmtpConfig: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CompanySmtpConfigSchemaRead' | |
Vacations: | |
description: Successful operation | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/VacationSchemaRead' | |
parameters: | |
ID-IN-PATH: | |
name: id | |
in: path | |
description: ID of the entity | |
required: true | |
schema: | |
type: string | |
format: uuid | |
FILTERS-PAGINATION: | |
name: filters | |
in: query | |
description: Filter values | |
required: false | |
schema: | |
type: string | |
PAGE_SIZE-PAGINATION: | |
name: page_size | |
in: query | |
description: Max. number of items to be returned per page. Max page size is 50. | |
required: false | |
schema: | |
type: integer | |
minimum: 1 | |
maximum: 50 | |
default: 50 | |
PAGE-PAGINATION: | |
name: page | |
in: query | |
description: Current page. Starting page index is 0. | |
required: false | |
schema: | |
type: integer | |
minimum: 0 | |
default: 0 | |
ORDER-DIRECTION: | |
name: order-direction | |
in: query | |
description: order direction value | |
example: "asc or desc" | |
required: false | |
schema: | |
type: string | |
SEARCH: | |
name: search | |
in: query | |
description: Search string, min. 3 characters | |
required: false | |
schema: | |
type: string | |
X-WCS-COMPANY_ID-HEADER: | |
in: header | |
name: X-WCS-COMPANY_ID | |
schema: | |
type: string | |
format: uuid | |
description: Company ID | |
required: true | |
headers: | |
X-WCS-PAGE-HEADER: | |
schema: | |
type: integer | |
description: Current page. Starting page index is 0. | |
X-WCS-PAGE_SIZE-HEADER: | |
schema: | |
type: integer | |
description: Requested page size. Max page size is 200. | |
X-WCS-TOTAL_PAGE_COUNT-HEADER: | |
schema: | |
type: integer | |
description: Total number of pages. | |
X-WCS-TOTAL_RESULT_COUNT-HEADER: | |
schema: | |
type: integer | |
description: Total number of results. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment