Files
gremiumhub/api/legalconsenthub.yml

1859 lines
58 KiB
YAML

openapi: "3.0.3"
info:
title: legalconsenthub
version: 0.1.0
description: A platform for digital applications, approvals and discussions.
contact:
name: Denis Lugowski
email: denis.lugowski@gmail.com
servers:
- url: http://localhost:8080
security:
- bearerAuth: []
paths:
####### Application Forms #######
/application-forms:
get:
summary: Get all ApplicationForms
operationId: getAllApplicationForms
tags:
- application-form
parameters:
- in: query
name: organizationId
schema:
type: string
description: Filter application forms by organization ID
responses:
"200":
description: Paged list of application forms
content:
application/json:
schema:
$ref: "#/components/schemas/PagedApplicationFormDto"
"500":
description: Internal server error
post:
summary: Create a new ApplicationForm
operationId: createApplicationForm
tags:
- application-form
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
responses:
"201":
description: Successfully created application form
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get a specific ApplicationForm
operationId: getApplicationFormById
tags:
- application-form
responses:
"200":
description: Get application form by ID
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
put:
summary: Updates a ApplicationForm
operationId: updateApplicationForm
tags:
- application-form
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
responses:
"200":
description: Successfully updated application form
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a ApplicationForm
operationId: deleteApplicationForm
tags:
- application-form
responses:
"204":
description: Application Form successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}/versions/{versionNumber}/pdf:
get:
summary: Returns the application form version rendered as PDF
operationId: getApplicationFormVersionPdf
tags:
- application-form-version
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: versionNumber
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: Application form version as PDF
content:
application/pdf:
schema:
type: string
format: binary
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}/submit:
post:
summary: Submit an application form
operationId: submitApplicationForm
tags:
- application-form
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Application form successfully submitted
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{applicationFormId}/subsections/{subsectionId}/form-elements:
post:
summary: Add a new form element to a specific subsection
operationId: addFormElementToSubSection
tags:
- application-form
parameters:
- name: applicationFormId
in: path
required: true
schema:
type: string
format: uuid
description: The ID of the application form
- name: subsectionId
in: path
required: true
schema:
type: string
format: uuid
description: The ID of the form element subsection
- name: position
in: query
required: true
schema:
type: integer
description: The position to insert the form element
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/FormElementDto"
responses:
"201":
description: Form element successfully added
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}/versions:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get all versions of an application form
operationId: getApplicationFormVersions
tags:
- application-form-version
responses:
"200":
description: List of versions
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ApplicationFormVersionListItemDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}/versions/{versionNumber}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: versionNumber
in: path
required: true
schema:
type: integer
get:
summary: Get specific version with full snapshot
operationId: getApplicationFormVersion
tags:
- application-form-version
responses:
"200":
description: Version details with snapshot
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormVersionDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{id}/versions/{versionNumber}/restore:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: versionNumber
in: path
required: true
schema:
type: integer
post:
summary: Restore a specific version
operationId: restoreApplicationFormVersion
tags:
- application-form-version
responses:
"200":
description: Restored application form
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
####### Application Form Templates #######
/application-form-templates:
get:
summary: Get all ApplicationFormTemplates
operationId: getAllApplicationFormTemplates
tags:
- application-form-template
responses:
"200":
description: Paged list of application form templates
content:
application/json:
schema:
$ref: "#/components/schemas/PagedApplicationFormDto"
"500":
description: Internal server error
post:
summary: Create a new ApplicationFormTemplate
operationId: createApplicationFormTemplate
tags:
- application-form-template
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
responses:
"201":
description: Successfully created application form template
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-form-templates/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get a specific ApplicationFormTemplate
operationId: getApplicationFormTemplateById
tags:
- application-form-template
responses:
"200":
description: Get application form template by ID
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
put:
summary: Updates a ApplicationFormTemplate
operationId: updateApplicationFormTemplate
tags:
- application-form-template
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
responses:
"200":
description: Successfully updated application form template
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a ApplicationFormTemplate
operationId: deleteApplicationFormTemplate
tags:
- application-form-template
responses:
"204":
description: Application Form Template successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
####### Users #######
/users/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
get:
summary: Get a specific user
operationId: getUserById
tags:
- user
responses:
"200":
description: Get user by ID
content:
application/json:
schema:
$ref: "#/components/schemas/UserDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a user
operationId: deleteUser
tags:
- user
responses:
"204":
description: User successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/users/{id}/email-preferences:
parameters:
- name: id
in: path
required: true
schema:
type: string
put:
summary: Update user email preferences
operationId: updateUserEmailPreferences
tags:
- user
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateEmailPreferencesDto"
responses:
"200":
description: Email preferences updated successfully
content:
application/json:
schema:
$ref: "#/components/schemas/UserDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
####### Comments #######
/comments/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
put:
summary: Update a comment
operationId: updateComment
tags:
- comment
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CommentDto"
responses:
"200":
description: Successfully updated comment
content:
application/json:
schema:
$ref: "#/components/schemas/CommentDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a comment
operationId: deleteComment
tags:
- comment
responses:
"204":
description: Comment successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{applicationFormId}/comments:
parameters:
- name: applicationFormId
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get comments for specific application form
operationId: getCommentsByApplicationFormId
tags:
- comment
parameters:
- in: query
name: formElementId
required: false
schema:
type: string
format: uuid
description: If provided, only comments for this form element are returned.
- in: query
name: cursorCreatedAt
required: false
schema:
type: string
format: date-time
description: Cursor for pagination (createdAt of the last received comment). When omitted, returns the first page.
- in: query
name: limit
required: false
schema:
type: integer
format: int32
default: 10
minimum: 1
maximum: 50
description: Number of comments to return.
responses:
"200":
description: Get comments for application form ID
content:
application/json:
schema:
$ref: "#/components/schemas/CursorPagedCommentDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{applicationFormId}/comments/counts:
parameters:
- name: applicationFormId
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get comment counts grouped by form element for an application form
operationId: getGroupedCommentCountByApplicationFromId
tags:
- comment
responses:
"200":
description: Map of formElementId to comment count
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationFormCommentCountsDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/application-forms/{applicationFormId}/form-elements/{formElementId}/comments:
parameters:
- name: applicationFormId
in: path
required: true
schema:
type: string
format: uuid
- name: formElementId
in: path
required: true
schema:
type: string
format: uuid
post:
summary: Create a new comment for a form element
operationId: createComment
tags:
- comment
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCommentDto"
responses:
"201":
description: Successfully created comment
content:
application/json:
schema:
$ref: "#/components/schemas/CommentDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
####### Roles #######
/roles:
get:
summary: Get all roles
operationId: getAllRoles
tags:
- role
responses:
"200":
description: List of roles
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/RoleDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
post:
summary: Create a new role
operationId: createRole
tags:
- role
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRoleDto"
responses:
"201":
description: Successfully created role
content:
application/json:
schema:
$ref: "#/components/schemas/RoleDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/roles/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get a specific role
operationId: getRoleById
tags:
- role
responses:
"200":
description: Get role by ID
content:
application/json:
schema:
$ref: "#/components/schemas/RoleDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a role
operationId: deleteRole
tags:
- role
responses:
"204":
description: Role successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
####### Notifications #######
/notifications:
get:
summary: Get notifications for the current user
operationId: getNotifications
tags:
- notification
parameters:
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID to get notifications for
- in: query
name: page
schema:
type: integer
default: 0
description: Page number
- in: query
name: size
schema:
type: integer
default: 20
description: Page size
responses:
"200":
description: Paged list of notifications
content:
application/json:
schema:
$ref: "#/components/schemas/PagedNotificationDto"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
post:
summary: Create a new notification
operationId: createNotification
tags:
- notification
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateNotificationDto"
responses:
"201":
description: Successfully created notification
content:
application/json:
schema:
$ref: "#/components/schemas/NotificationDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
/notifications/unread:
get:
summary: Get unread notifications for the current user
operationId: getUnreadNotifications
tags:
- notification
parameters:
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID to get unread notifications for
responses:
"200":
description: List of unread notifications
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/NotificationDto"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"403":
description: User is not authorized to access this organization
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
/notifications/unread/count:
get:
summary: Get count of unread notifications for a user (public endpoint)
operationId: getUnreadNotificationCount
tags:
- notification
parameters:
- in: query
name: userId
required: true
schema:
type: string
description: Keycloak user ID to get notification count for
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID to get notification count for
responses:
"200":
description: Count of unread notifications
content:
application/json:
schema:
type: integer
format: int64
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
/notifications/mark-all-read:
put:
summary: Mark all notifications as read for the current user
operationId: markAllNotificationsAsRead
tags:
- notification
parameters:
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID to mark notifications as read for
responses:
"204":
description: All notifications marked as read
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"403":
description: User is not authorized to access this organization
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
/notifications/clear-all:
delete:
summary: Clear all notifications for the current user
operationId: clearAllNotifications
tags:
- notification
parameters:
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID to clear notifications for
responses:
"204":
description: All notifications cleared
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"403":
description: User is not authorized to access this organization
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
/notifications/{id}/mark-read:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
put:
summary: Mark a specific notification as read
operationId: markNotificationAsRead
tags:
- notification
parameters:
- in: query
name: organizationId
required: true
schema:
type: string
description: Organization ID for authorization
responses:
"200":
description: Notification marked as read
content:
application/json:
schema:
$ref: "#/components/schemas/NotificationDto"
"404":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/NotFound"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"403":
description: User is not authorized to access this organization
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
####### Files #######
/files:
get:
summary: Get all files
operationId: getAllFiles
tags:
- file
responses:
"200":
description: Successful response
"500":
description: Internal server error
post:
summary: Upload a new file
operationId: uploadFile
tags:
- file
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: "#/components/schemas/UploadFileDto"
responses:
"201":
description: File uploaded
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
/files/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
get:
summary: Get a specific file
operationId: getFileById
tags:
- file
responses:
"200":
description: Get file by ID
content:
application/json:
schema:
$ref: "#/components/schemas/FileDto"
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
delete:
summary: Delete a file
operationId: deleteFile
tags:
- file
responses:
"204":
description: File successfully deleted
"400":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/BadRequest"
"401":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/Unauthorized"
"500":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServerError"
"503":
$ref: "https://api.swaggerhub.com/domains/smartbear-public/ProblemDetails/1.0.0#/components/responses/ServiceUnavailable"
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
####### ApplicationFormDto #######
ApplicationFormDto:
type: object
required:
- name
- formElementSections
- isTemplate
properties:
id:
type: string
format: uuid
nullable: true
name:
type: string
formElementSections:
type: array
items:
$ref: "#/components/schemas/FormElementSectionDto"
isTemplate:
type: boolean
default: false
organizationId:
type: string
nullable: true
createdBy:
$ref: "#/components/schemas/UserDto"
nullable: true
lastModifiedBy:
$ref: "#/components/schemas/UserDto"
nullable: true
createdAt:
type: string
format: date-time
nullable: true
modifiedAt:
type: string
format: date-time
nullable: true
status:
allOf:
- $ref: "#/components/schemas/ApplicationFormStatus"
nullable: true
commentCount:
type: integer
format: int64
nullable: true
readOnly: true
description: Total number of comments associated with this application form.
PagedApplicationFormDto:
type: object
allOf:
- $ref: "#/components/schemas/Page"
required:
- content
properties:
content:
type: array
items:
$ref: "#/components/schemas/ApplicationFormDto"
ApplicationFormSnapshotDto:
type: object
required:
- name
- status
- organizationId
- sections
properties:
name:
type: string
status:
$ref: "#/components/schemas/ApplicationFormStatus"
organizationId:
type: string
sections:
type: array
items:
$ref: "#/components/schemas/FormElementSectionSnapshotDto"
####### ApplicationFormVersion #######
ApplicationFormVersionDto:
type: object
required:
- id
- applicationFormId
- versionNumber
- name
- status
- organizationId
- snapshot
- createdBy
- createdAt
properties:
id:
type: string
format: uuid
applicationFormId:
type: string
format: uuid
versionNumber:
type: integer
name:
type: string
status:
$ref: "#/components/schemas/ApplicationFormStatus"
organizationId:
type: string
snapshot:
$ref: "#/components/schemas/ApplicationFormSnapshotDto"
createdBy:
$ref: "#/components/schemas/UserDto"
createdAt:
type: string
format: date-time
ApplicationFormVersionListItemDto:
type: object
required:
- id
- applicationFormId
- versionNumber
- name
- status
- organizationId
- createdBy
- createdAt
properties:
id:
type: string
format: uuid
applicationFormId:
type: string
format: uuid
versionNumber:
type: integer
name:
type: string
status:
$ref: "#/components/schemas/ApplicationFormStatus"
organizationId:
type: string
createdBy:
$ref: "#/components/schemas/UserDto"
createdAt:
type: string
format: date-time
####### Form #######
FormElementSectionDto:
type: object
required:
- title
- formElementSubSections
properties:
id:
type: string
format: uuid
nullable: true
title:
type: string
shortTitle:
type: string
description:
type: string
formElementSubSections:
type: array
items:
$ref: "#/components/schemas/FormElementSubSectionDto"
applicationFormId:
type: string
format: uuid
nullable: true
isTemplate:
type: boolean
default: false
description: If true, this section is a template for spawning
templateReference:
type: string
description: Unique reference key for this template section
titleTemplate:
type: string
description: Title template with placeholder (e.g., "Modul{{triggerValue}}")
spawnedFromElementReference:
type: string
description: Reference of the form element that triggered this section
FormElementSectionSnapshotDto:
type: object
required:
- title
- subsections
properties:
title:
type: string
shortTitle:
type: string
description:
type: string
subsections:
type: array
items:
$ref: "#/components/schemas/FormElementSubSectionSnapshotDto"
isTemplate:
type: boolean
default: false
templateReference:
type: string
titleTemplate:
type: string
spawnedFromElementReference:
type: string
FormElementSubSectionDto:
type: object
required:
- title
- formElements
properties:
id:
type: string
format: uuid
nullable: true
title:
type: string
subtitle:
type: string
formElements:
type: array
items:
$ref: "#/components/schemas/FormElementDto"
formElementSectionId:
type: string
format: uuid
nullable: true
FormElementSubSectionSnapshotDto:
type: object
required:
- title
- elements
properties:
title:
type: string
subtitle:
type: string
elements:
type: array
items:
$ref: "#/components/schemas/FormElementSnapshotDto"
FormElementDto:
type: object
required:
- options
- type
properties:
id:
type: string
format: uuid
nullable: true
reference:
type: string
description: Unique reference key for this form element (e.g., "art_der_massnahme")
title:
type: string
description:
type: string
options:
type: array
items:
$ref: "#/components/schemas/FormOptionDto"
type:
$ref: "#/components/schemas/FormElementType"
formElementSubSectionId:
type: string
format: uuid
nullable: true
visibilityCondition:
$ref: "#/components/schemas/FormElementVisibilityCondition"
sectionSpawnTrigger:
$ref: "#/components/schemas/SectionSpawnTriggerDto"
isClonable:
type: boolean
default: false
description: If true, user can add more instances of this element
FormElementSnapshotDto:
type: object
required:
- type
- options
properties:
reference:
type: string
title:
type: string
description:
type: string
type:
$ref: "#/components/schemas/FormElementType"
options:
type: array
items:
$ref: "#/components/schemas/FormOptionDto"
visibilityCondition:
$ref: "#/components/schemas/FormElementVisibilityCondition"
sectionSpawnTrigger:
$ref: "#/components/schemas/SectionSpawnTriggerDto"
isClonable:
type: boolean
default: false
FormOptionDto:
type: object
required:
- value
- label
- processingPurpose
- employeeDataCategory
properties:
value:
type: string
label:
type: string
processingPurpose:
$ref: "#/components/schemas/ProcessingPurpose"
employeeDataCategory:
$ref: "#/components/schemas/EmployeeDataCategory"
FormElementType:
type: string
enum:
- SELECT
- CHECKBOX
- RADIOBUTTON
- TEXTFIELD
- TEXTAREA
- SWITCH
- RICH_TEXT
- DATE
- TABLE
FormElementVisibilityCondition:
type: object
required:
- formElementConditionType
- sourceFormElementReference
- formElementExpectedValue
properties:
formElementConditionType:
$ref: "#/components/schemas/VisibilityConditionType"
sourceFormElementReference:
type: string
description: Reference key of the source form element to check
formElementExpectedValue:
type: string
description: Expected value to compare against the source element's value property
formElementOperator:
$ref: "#/components/schemas/VisibilityConditionOperator"
default: EQUALS
VisibilityConditionType:
type: string
enum:
- SHOW
- HIDE
VisibilityConditionOperator:
type: string
enum:
- EQUALS
- NOT_EQUALS
- IS_EMPTY
- IS_NOT_EMPTY
SectionSpawnTriggerDto:
type: object
required:
- templateReference
- sectionSpawnConditionType
- sectionSpawnOperator
properties:
templateReference:
type: string
description: Reference key of the section template to spawn
sectionSpawnConditionType:
$ref: "#/components/schemas/VisibilityConditionType"
sectionSpawnExpectedValue:
type: string
description: Expected value to trigger spawning
sectionSpawnOperator:
$ref: "#/components/schemas/VisibilityConditionOperator"
####### UserDto #######
UserDto:
type: object
required:
- keycloakId
- name
- organizationId
properties:
keycloakId:
type: string
name:
type: string
organizationId:
type: string
nullable: true
email:
type: string
nullable: true
emailOnFormCreated:
type: boolean
default: true
emailOnFormSubmitted:
type: boolean
default: true
UpdateEmailPreferencesDto:
type: object
properties:
email:
type: string
nullable: true
emailOnFormCreated:
type: boolean
emailOnFormSubmitted:
type: boolean
UserStatus:
type: string
enum:
- INVITED
- ACTIVE
- BLOCKED
- SUSPENDED_SUBSCRIPTION
UserRole:
type: string
description: "User's role in the organization"
enum:
- owner
- admin
- employer
- works_council_member
- employee
####### CommentDto #######
CommentDto:
type: object
required:
- id
- message
- applicationFormId
- formElementId
- createdAt
- modifiedAt
- createdBy
properties:
id:
type: string
format: uuid
message:
type: string
applicationFormId:
type: string
format: uuid
formElementId:
type: string
format: uuid
createdAt:
type: string
format: date-time
modifiedAt:
type: string
format: date-time
createdBy:
$ref: "#/components/schemas/UserDto"
CreateCommentDto:
type: object
required:
- message
properties:
message:
type: string
CursorPagedCommentDto:
type: object
required:
- content
- hasMore
properties:
content:
type: array
items:
$ref: "#/components/schemas/CommentDto"
nextCursorCreatedAt:
type: string
format: date-time
nullable: true
description: Cursor to fetch the next page (createdAt of the last item in this page). Null when no more pages.
hasMore:
type: boolean
description: Whether more comments exist after this page.
ApplicationFormCommentCountsDto:
type: object
required:
- counts
properties:
counts:
type: object
additionalProperties:
type: integer
format: int64
description: Keys are formElementId (UUID), values are comment counts.
####### RoleDto #######
RoleDto:
type: object
required:
- id
- name
properties:
id:
type: string
format: uuid
name:
type: string
CreateRoleDto:
type: object
required:
- name
properties:
name:
type: string
####### Notification #######
NotificationDto:
type: object
required:
- id
- title
- message
- clickTarget
- isRead
- type
- createdAt
- organizationId
properties:
id:
type: string
format: uuid
title:
type: string
message:
type: string
clickTarget:
type: string
isRead:
type: boolean
recipient:
nullable: true
allOf:
- $ref: "#/components/schemas/UserDto"
targetRoles:
type: string
description: Comma-separated list of target roles (only for role-based notifications)
nullable: true
type:
$ref: "#/components/schemas/NotificationType"
organizationId:
type: string
createdAt:
type: string
format: date-time
CreateNotificationDto:
type: object
required:
- title
- message
- clickTarget
- type
- organizationId
properties:
title:
type: string
message:
type: string
clickTarget:
type: string
recipientId:
type: string
description: Keycloak ID of the recipient user. If not provided, notification will be role-based or organization-wide.
nullable: true
targetRoles:
type: array
items:
type: string
description: List of roles to send notification to. If both recipientId and targetRoles are null, notification will be sent to all organization members.
nullable: true
type:
$ref: "#/components/schemas/NotificationType"
organizationId:
type: string
description: The organization ID for this notification
PagedNotificationDto:
type: object
allOf:
- $ref: "#/components/schemas/Page"
required:
- content
properties:
content:
type: array
items:
$ref: "#/components/schemas/NotificationDto"
NotificationType:
type: string
enum:
- INFO
- WARNING
- ERROR
####### FileDto #######
FileDto:
type: object
required:
- id
- name
- file
- createdAt
- modifiedAt
properties:
id:
type: string
format: uuid
name:
type: string
file:
type: string
createdAt:
type: string
format: date-time
modifiedAt:
type: string
format: date-time
UploadFileDto:
type: object
required:
- name
- file
properties:
name:
type: string
file:
type: string
format: binary
####### Miscellaneous #######
ProcessingPurpose:
type: string
enum:
- SYSTEM_OPERATION
- BUSINESS_PROCESS
- DATA_ANALYSIS
- NONE
EmployeeDataCategory:
type: string
enum:
- NON_CRITICAL
- REVIEW_REQUIRED
- SENSITIVE
- NONE
ComplianceStatus:
type: string
enum:
- NON_CRITICAL
- WARNING
- CRITICAL
ApplicationFormStatus:
type: string
enum:
- DRAFT
- SUBMITTED
- APPROVED
- REJECTED
- SIGNED
####### Supporting components #######
Page:
type: object
required:
- number
- size
- numberOfElements
- last
- totalPages
- first
- totalElements
- empty
properties:
number:
type: integer
format: int32
example: 0
size:
type: integer
format: int32
example: 100
numberOfElements:
type: integer
format: int32
example: 0
last:
type: boolean
example: true
totalPages:
type: integer
format: int32
example: 0
first:
type: boolean
example: true
totalElements:
type: integer
format: int64
example: 0
empty:
type: boolean
example: true