From 9d954144a4f640073f7ab29807b037468f8479e1 Mon Sep 17 00:00:00 2001 From: Timo K Date: Mon, 16 Dec 2024 20:06:49 +0100 Subject: [PATCH] Spsh 1327 (#374) * display kopers banner * spsh banner tests * test StartView --- src/api-client/generated/api.ts | 135 + src/api-client/openapispec.json | 12953 +++++++++++----------- src/components/alert/SpshBanner.spec.ts | 46 + src/components/alert/SpshBanner.vue | 68 + src/locales/de-DE.json | 12 +- src/stores/AuthStore.ts | 4 + src/views/StartView.spec.ts | 90 + src/views/StartView.vue | 98 +- 8 files changed, 6644 insertions(+), 6762 deletions(-) create mode 100644 src/components/alert/SpshBanner.spec.ts create mode 100644 src/components/alert/SpshBanner.vue diff --git a/src/api-client/generated/api.ts b/src/api-client/generated/api.ts index 82c623fd2..fca03672b 100644 --- a/src/api-client/generated/api.ts +++ b/src/api-client/generated/api.ts @@ -1936,6 +1936,25 @@ export interface PersonResponseEmail { } +/** + * + * @export + * @interface PersonTimeLimitInfoResponse + */ +export interface PersonTimeLimitInfoResponse { + /** + * + * @type {string} + * @memberof PersonTimeLimitInfoResponse + */ + 'occasion': string | null; + /** + * + * @type {string} + * @memberof PersonTimeLimitInfoResponse + */ + 'deadline': string | null; +} /** * * @export @@ -3068,6 +3087,12 @@ export interface UserinfoResponse { * @memberof UserinfoResponse */ 'acr': string; + /** + * + * @type {Array} + * @memberof UserinfoResponse + */ + 'timeLimits': Array; } /** * @@ -10085,3 +10110,113 @@ export class RolleApi extends BaseAPI implements RolleApiInterface { } +/** + * StatusApi - axios parameter creator + * @export + */ +export const StatusApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + statusControllerGetStatus: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/status`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * StatusApi - functional programming interface + * @export + */ +export const StatusApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = StatusApiAxiosParamCreator(configuration) + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async statusControllerGetStatus(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.statusControllerGetStatus(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * StatusApi - factory interface + * @export + */ +export const StatusApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = StatusApiFp(configuration) + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + statusControllerGetStatus(options?: any): AxiosPromise { + return localVarFp.statusControllerGetStatus(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * StatusApi - interface + * @export + * @interface StatusApi + */ +export interface StatusApiInterface { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof StatusApiInterface + */ + statusControllerGetStatus(options?: AxiosRequestConfig): AxiosPromise; + +} + +/** + * StatusApi - object-oriented interface + * @export + * @class StatusApi + * @extends {BaseAPI} + */ +export class StatusApi extends BaseAPI implements StatusApiInterface { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof StatusApi + */ + public statusControllerGetStatus(options?: AxiosRequestConfig) { + return StatusApiFp(this.configuration).statusControllerGetStatus(options).then((request) => request(this.axios, this.basePath)); + } +} + + diff --git a/src/api-client/openapispec.json b/src/api-client/openapispec.json index bc8590525..fb6448206 100644 --- a/src/api-client/openapispec.json +++ b/src/api-client/openapispec.json @@ -1,6849 +1,6288 @@ { - "openapi": "3.0.0", - "paths": { - "/api/auth/login": { - "get": { - "operationId": "AuthenticationController_login", - "summary": "Used to start OIDC authentication.", - "parameters": [ - { - "required": false, - "name": "redirectUrl", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "302": { - "description": "Redirection to orchestrate OIDC flow." - } - }, - "tags": [ - "auth" - ] - } - }, - "/api/auth/logout": { - "get": { - "operationId": "AuthenticationController_logout", - "summary": "Used to log out the current user.", - "parameters": [], - "responses": { - "302": { - "description": "Redirect to logout." - }, - "500": { - "description": "Internal server error while trying to log out." - } - }, - "tags": [ - "auth" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/auth/logininfo": { - "get": { - "operationId": "AuthenticationController_info", - "summary": "Info about logged in user.", - "parameters": [], - "responses": { - "200": { - "description": "Returns info about the logged in user.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserinfoResponse" - } - } - } - }, - "401": { - "description": "User is not logged in." - } - }, - "tags": [ - "auth" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "openapi": "3.0.0", + "paths": { + "/api/auth/login": { + "get": { + "operationId": "AuthenticationController_login", + "summary": "Used to start OIDC authentication.", + "parameters": [ + { + "required": false, + "name": "redirectUrl", + "in": "query", + "schema": { + "type": "string" } + } + ], + "responses": { + "302": { + "description": "Redirection to orchestrate OIDC flow." + } }, - "/api/auth/reset-password": { - "get": { - "operationId": "AuthenticationController_resetPassword", - "summary": "Redirect to Keycloak password reset.", - "parameters": [ - { - "name": "redirectUrl", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "login_hint", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "302": { - "description": "Redirect to Keycloak password reset page." - } - }, - "tags": [ - "auth" - ] - } - }, - "/api/personen": { - "post": { - "operationId": "PersonController_createPersonMigration", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePersonMigrationBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The person was successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } - } - }, - "400": { - "description": "A username was given. Creation with username is not supported." - }, - "401": { - "description": "Not authorized to create the person." - }, - "403": { - "description": "Insufficient permissions to create the person." - }, - "404": { - "description": "Insufficient permissions to create the person." - }, - "500": { - "description": "Internal server error while creating the person." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["auth"] + } + }, + "/api/auth/logout": { + "get": { + "operationId": "AuthenticationController_logout", + "summary": "Used to log out the current user.", + "parameters": [], + "responses": { + "302": { + "description": "Redirect to logout." + }, + "500": { + "description": "Internal server error while trying to log out." + } + }, + "tags": ["auth"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/auth/logininfo": { + "get": { + "operationId": "AuthenticationController_info", + "summary": "Info about logged in user.", + "parameters": [], + "responses": { + "200": { + "description": "Returns info about the logged in user.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserinfoResponse" + } + } + } + }, + "401": { + "description": "User is not logged in." + } + }, + "tags": ["auth"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/auth/reset-password": { + "get": { + "operationId": "AuthenticationController_resetPassword", + "summary": "Redirect to Keycloak password reset.", + "parameters": [ + { + "name": "redirectUrl", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "login_hint", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "302": { + "description": "Redirect to Keycloak password reset page." + } + }, + "tags": ["auth"] + } + }, + "/api/personen": { + "post": { + "operationId": "PersonController_createPersonMigration", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePersonMigrationBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "The person was successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } + }, + "400": { + "description": "A username was given. Creation with username is not supported." + }, + "401": { + "description": "Not authorized to create the person." + }, + "403": { + "description": "Insufficient permissions to create the person." + }, + "404": { + "description": "Insufficient permissions to create the person." + }, + "500": { + "description": "Internal server error while creating the person." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "PersonController_findPersons", + "parameters": [ + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "referrer", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "familienname", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "vorname", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "sichtfreigabe", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "default": "nein", + "enum": ["ja", "nein"], + "type": "string" + } + }, + { + "name": "organisationIDs", + "required": false, + "in": "query", + "description": "List of Organisation ID used to filter for Persons.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "rolleIDs", + "required": false, + "in": "query", + "description": "List of Role ID used to filter for Persons.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "suchFilter", + "required": false, + "in": "query", + "description": "Search filter used to filter for Persons. It could be the vorname, familienname, referrer or the personalnummer.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "Order to sort by.", + "schema": { + "nullable": true, + "enum": ["asc", "desc"], + "type": "string" + } + }, + { + "name": "sortField", + "required": false, + "in": "query", + "description": "Field to sort by.", + "schema": { + "nullable": true, + "enum": ["familienname", "vorname", "personalnummer", "referrer"], + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The persons were successfully returned. WARNING: This endpoint returns all persons as default when no paging parameters were set.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "get": { - "operationId": "PersonController_findPersons", - "parameters": [ - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "referrer", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "familienname", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "vorname", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "sichtfreigabe", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "default": "nein", - "enum": [ - "ja", - "nein" - ], - "type": "string" - } - }, - { - "name": "organisationIDs", - "required": false, - "in": "query", - "description": "List of Organisation ID used to filter for Persons.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "rolleIDs", - "required": false, - "in": "query", - "description": "List of Role ID used to filter for Persons.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "suchFilter", - "required": false, - "in": "query", - "description": "Search filter used to filter for Persons. It could be the vorname, familienname, referrer or the personalnummer.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "sortOrder", - "required": false, - "in": "query", - "description": "Order to sort by.", - "schema": { - "nullable": true, - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortField", - "required": false, - "in": "query", - "description": "Field to sort by.", - "schema": { - "nullable": true, - "enum": [ - "familienname", - "vorname", - "personalnummer", - "referrer" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The persons were successfully returned. WARNING: This endpoint returns all persons as default when no paging parameters were set.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get persons." - }, - "403": { - "description": "Insufficient permissions to get persons." - }, - "500": { - "description": "Internal server error while getting all persons." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } } + }, + "401": { + "description": "Not authorized to get persons." + }, + "403": { + "description": "Insufficient permissions to get persons." + }, + "500": { + "description": "Internal server error while getting all persons." + } }, - "/api/personen/{personId}": { - "delete": { - "operationId": "PersonController_deletePersonById", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The person and all their kontexte were successfully deleted." - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The person was not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}": { + "delete": { + "operationId": "PersonController_deletePersonById", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "The person and all their kontexte were successfully deleted." + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The person was not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "PersonController_findPersonById", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The person was successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } + }, + "400": { + "description": "Person ID is required" + }, + "401": { + "description": "Not authorized to get the person." + }, + "403": { + "description": "Insufficient permissions to get the person." + }, + "404": { + "description": "The person does not exist or insufficient permissions." + }, + "500": { + "description": "Internal server error while getting the person." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "PersonController_updatePerson", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePersonBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "The person was successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The person was not found or insufficient permissions to update person." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}/personenkontexte": { + "post": { + "operationId": "PersonController_createPersonenkontext", + "summary": "", + "deprecated": true, + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The personenkontext was successfully created." + }, + "400": { + "description": "The personenkontext already exists." + }, + "401": { + "description": "Not authorized to create the personenkontext." + }, + "403": { + "description": "Not permitted to create the personenkontext." + }, + "404": { + "description": "Insufficient permissions to create personenkontext for person." + }, + "500": { + "description": "Internal server error while creating the personenkontext." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "PersonController_findPersonenkontexte", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + }, + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "personId", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "referrer", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "personenstatus", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/Personenstatus" + } + }, + { + "name": "sichtfreigabe", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/Sichtfreigabe" + } + } + ], + "responses": { + "200": { + "description": "The personenkontexte were successfully pulled.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "get": { - "operationId": "PersonController_findPersonById", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The person was successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } - } - }, - "400": { - "description": "Person ID is required" - }, - "401": { - "description": "Not authorized to get the person." - }, - "403": { - "description": "Insufficient permissions to get the person." - }, - "404": { - "description": "The person does not exist or insufficient permissions." - }, - "500": { - "description": "Internal server error while getting the person." - } - }, - "tags": [ - "personen" - ], - "security": [ + "content": { + "application/json": { + "schema": { + "allOf": [ { - "oauth2": [ - "openid" - ] + "$ref": "#/components/schemas/RawPagedResponse" }, { - "bearer": [] - } - ] - }, - "put": { - "operationId": "PersonController_updatePerson", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdatePersonBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The person was successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } + "required": ["items"], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextResponse" + } } - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The person was not found or insufficient permissions to update person." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] + } } - ] + ] + } + } } + }, + "401": { + "description": "Not authorized to get personenkontexte." + }, + "403": { + "description": "Insufficient permissions to get personenkontexte." + }, + "404": { + "description": "No personenkontexte were found." + }, + "500": { + "description": "Internal server error while getting all personenkontexte." + } }, - "/api/personen/{personId}/personenkontexte": { - "post": { - "operationId": "PersonController_createPersonenkontext", - "summary": "", - "deprecated": true, - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The personenkontext was successfully created." - }, - "400": { - "description": "The personenkontext already exists." - }, - "401": { - "description": "Not authorized to create the personenkontext." - }, - "403": { - "description": "Not permitted to create the personenkontext." - }, - "404": { - "description": "Insufficient permissions to create personenkontext for person." - }, - "500": { - "description": "Internal server error while creating the personenkontext." - } - }, - "tags": [ - "personen" - ], - "security": [ + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}/password": { + "patch": { + "operationId": "PersonController_resetPasswordByPersonId", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "202": { + "description": "Password for person was successfully reset.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "The person does not exist or insufficient permissions to update person." + }, + "500": { + "description": "Internal server error." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}/lock-user": { + "put": { + "operationId": "PersonController_lockPerson", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LockUserBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "User has been successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonLockResponse" + } + } + } + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The person was not found." + }, + "500": { + "description": "An internal server error occurred." + }, + "502": { + "description": "A downstream server returned an error." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}/sync": { + "post": { + "operationId": "PersonController_syncPerson", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "User will be synced." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The person was not found." + }, + "500": { + "description": "An internal server error occurred." + }, + "502": { + "description": "A downstream server returned an error." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen/{personId}/metadata": { + "patch": { + "operationId": "PersonController_updateMetadata", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonMetadataBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "The metadata for user was successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } + }, + "400": { + "description": "Request has a wrong format.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonError" + } + } + } + }, + "401": { + "description": "Not authorized to update the metadata." + }, + "403": { + "description": "Not permitted to update the metadata." + }, + "500": { + "description": "Internal server error while updating the metadata for user." + } + }, + "tags": ["personen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personen-frontend": { + "get": { + "operationId": "PersonFrontendController_findPersons", + "parameters": [ + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "referrer", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "familienname", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "vorname", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "sichtfreigabe", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "default": "nein", + "enum": ["ja", "nein"], + "type": "string" + } + }, + { + "name": "organisationIDs", + "required": false, + "in": "query", + "description": "List of Organisation ID used to filter for Persons.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "rolleIDs", + "required": false, + "in": "query", + "description": "List of Role ID used to filter for Persons.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "suchFilter", + "required": false, + "in": "query", + "description": "Search filter used to filter for Persons. It could be the vorname, familienname, referrer or the personalnummer.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "Order to sort by.", + "schema": { + "nullable": true, + "enum": ["asc", "desc"], + "type": "string" + } + }, + { + "name": "sortField", + "required": false, + "in": "query", + "description": "Field to sort by.", + "schema": { + "nullable": true, + "enum": ["familienname", "vorname", "personalnummer", "referrer"], + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The persons were successfully returned. WARNING: This endpoint returns all persons as default when no paging parameters were set.", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "oauth2": [ - "openid" - ] + "$ref": "#/components/schemas/RawPagedResponse" }, { - "bearer": [] + "required": ["items"], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonendatensatzResponse" + } + } + } } - ] + ] + } + } + } + }, + "401": { + "description": "Not authorized to get persons." + }, + "403": { + "description": "Insufficient permissions to get persons." + }, + "500": { + "description": "Internal server error while getting all persons." + } + }, + "tags": ["personen-frontend"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/dbiam/personenuebersicht": { + "post": { + "operationId": "DBiamPersonenuebersichtController_findPersonenuebersichten", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonenuebersichtBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "The personenuebersichten were successfully returned.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "get": { - "operationId": "PersonController_findPersonenkontexte", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - }, - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "personId", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "referrer", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, + "content": { + "application/json": { + "schema": { + "allOf": [ { - "name": "personenstatus", - "required": false, - "in": "query", - "schema": { - "$ref": "#/components/schemas/Personenstatus" - } + "$ref": "#/components/schemas/RawPagedResponse" }, { - "name": "sichtfreigabe", - "required": false, - "in": "query", - "schema": { - "$ref": "#/components/schemas/Sichtfreigabe" - } - } - ], - "responses": { - "200": { - "description": "The personenkontexte were successfully pulled.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/RawPagedResponse" - }, - { - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextResponse" - } - } - } - } - ] - } - } + "required": ["items"], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DBiamPersonenuebersichtResponse" + } } - }, - "401": { - "description": "Not authorized to get personenkontexte." - }, - "403": { - "description": "Insufficient permissions to get personenkontexte." - }, - "404": { - "description": "No personenkontexte were found." - }, - "500": { - "description": "Internal server error while getting all personenkontexte." + } } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + ] + } + } } + }, + "401": { + "description": "Not authorized to get personenuebersichten." + }, + "403": { + "description": "Insufficient permission to get personenuebersichten." + }, + "500": { + "description": "Internal server error while getting personenuebersichten." + } }, - "/api/personen/{personId}/password": { - "patch": { - "operationId": "PersonController_resetPasswordByPersonId", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "Password for person was successfully reset.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "404": { - "description": "The person does not exist or insufficient permissions to update person." - }, - "500": { - "description": "Internal server error." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["dbiam-personenuebersicht"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/dbiam/personenuebersicht/{personId}": { + "get": { + "operationId": "DBiamPersonenuebersichtController_findPersonenuebersichtenByPerson", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The ID for the person.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The personenuebersichten were successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DBiamPersonenuebersichtResponse" + } + } } + }, + "401": { + "description": "Not authorized to get personenuebersicht." + }, + "403": { + "description": "Insufficient permission to get personenuebersicht." + }, + "500": { + "description": "Internal server error while getting personenuebersicht." + } }, - "/api/personen/{personId}/lock-user": { - "put": { - "operationId": "PersonController_lockPerson", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LockUserBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "User has been successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonLockResponse" - } - } - } - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The person was not found." - }, - "500": { - "description": "An internal server error occurred." - }, - "502": { - "description": "A downstream server returned an error." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["dbiam-personenuebersicht"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/person-info": { + "get": { + "operationId": "PersonInfoController_info", + "summary": "Info about logged in person.", + "parameters": [], + "responses": { + "200": { + "description": "Returns info about the person.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonInfoResponse" + } + } } + }, + "401": { + "description": "person is not logged in." + } }, - "/api/personen/{personId}/sync": { - "post": { - "operationId": "PersonController_syncPerson", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "User will be synced." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The person was not found." - }, - "500": { - "description": "An internal server error occurred." - }, - "502": { - "description": "A downstream server returned an error." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["person-info"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen": { + "post": { + "operationId": "OrganisationController_createOrganisation", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganisationBodyParams" + } } + } }, - "/api/personen/{personId}/metadata": { - "patch": { - "operationId": "PersonController_updateMetadata", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonMetadataBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The metadata for user was successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } - } - }, - "400": { - "description": "Request has a wrong format.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonError" - } - } - } - }, - "401": { - "description": "Not authorized to update the metadata." - }, - "403": { - "description": "Not permitted to update the metadata." - }, - "500": { - "description": "Internal server error while updating the metadata for user." - } - }, - "tags": [ - "personen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "201": { + "description": "The organisation was successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } + }, + "400": { + "description": "The organisation already exists.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } } + }, + "401": { + "description": "Not authorized to create the organisation." + }, + "403": { + "description": "Not permitted to create the organisation." + }, + "500": { + "description": "Internal server error while creating the organisation." + } }, - "/api/personen-frontend": { - "get": { - "operationId": "PersonFrontendController_findPersons", - "parameters": [ - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "referrer", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "familienname", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "vorname", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "sichtfreigabe", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "default": "nein", - "enum": [ - "ja", - "nein" - ], - "type": "string" - } - }, - { - "name": "organisationIDs", - "required": false, - "in": "query", - "description": "List of Organisation ID used to filter for Persons.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "rolleIDs", - "required": false, - "in": "query", - "description": "List of Role ID used to filter for Persons.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "suchFilter", - "required": false, - "in": "query", - "description": "Search filter used to filter for Persons. It could be the vorname, familienname, referrer or the personalnummer.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "sortOrder", - "required": false, - "in": "query", - "description": "Order to sort by.", - "schema": { - "nullable": true, - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "name": "sortField", - "required": false, - "in": "query", - "description": "Field to sort by.", - "schema": { - "nullable": true, - "enum": [ - "familienname", - "vorname", - "personalnummer", - "referrer" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The persons were successfully returned. WARNING: This endpoint returns all persons as default when no paging parameters were set.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/RawPagedResponse" - }, - { - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonendatensatzResponse" - } - } - } - } - ] - } - } - } - }, - "401": { - "description": "Not authorized to get persons." - }, - "403": { - "description": "Insufficient permissions to get persons." - }, - "500": { - "description": "Internal server error while getting all persons." - } - }, - "tags": [ - "personen-frontend" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/dbiam/personenuebersicht": { - "post": { - "operationId": "DBiamPersonenuebersichtController_findPersonenuebersichten", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonenuebersichtBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The personenuebersichten were successfully returned.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/RawPagedResponse" - }, - { - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DBiamPersonenuebersichtResponse" - } - } - } - } - ] - } - } - } - }, - "401": { - "description": "Not authorized to get personenuebersichten." - }, - "403": { - "description": "Insufficient permission to get personenuebersichten." - }, - "500": { - "description": "Internal server error while getting personenuebersichten." - } - }, - "tags": [ - "dbiam-personenuebersicht" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "OrganisationController_findOrganizations", + "parameters": [ + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "kennung", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "name", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "searchString", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "typ", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/OrganisationsTyp" + } + }, + { + "name": "systemrechte", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + } + }, + { + "name": "excludeTyp", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationsTyp" + } } + }, + { + "name": "administriertVon", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "organisationIds", + "required": false, + "in": "query", + "description": "Liefert Organisationen mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien).", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "The organizations were successfully returned.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } + } + }, + "401": { + "description": "Not authorized to get organizations." + }, + "403": { + "description": "Insufficient permissions to get organizations." + }, + "500": { + "description": "Internal server error while getting all organizations." + } }, - "/api/dbiam/personenuebersicht/{personId}": { - "get": { - "operationId": "DBiamPersonenuebersichtController_findPersonenuebersichtenByPerson", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The ID for the person.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The personenuebersichten were successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DBiamPersonenuebersichtResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get personenuebersicht." - }, - "403": { - "description": "Insufficient permission to get personenuebersicht." - }, - "500": { - "description": "Internal server error while getting personenuebersicht." - } - }, - "tags": [ - "dbiam-personenuebersicht" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/person-info": { - "get": { - "operationId": "PersonInfoController_info", - "summary": "Info about logged in person.", - "parameters": [], - "responses": { - "200": { - "description": "Returns info about the person.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonInfoResponse" - } - } - } - }, - "401": { - "description": "person is not logged in." - } - }, - "tags": [ - "person-info" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/organisationen": { - "post": { - "operationId": "OrganisationController_createOrganisation", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganisationBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The organisation was successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - }, - "400": { - "description": "The organisation already exists.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to create the organisation." - }, - "403": { - "description": "Not permitted to create the organisation." - }, - "500": { - "description": "Internal server error while creating the organisation." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}": { + "put": { + "operationId": "OrganisationController_updateOrganisation", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrganisationBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "The organisation was successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } + }, + "400": { + "description": "Request has wrong format.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } + } + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The organisation was not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "OrganisationController_findOrganisationById", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The organization was successfully pulled.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } + }, + "400": { + "description": "Organization ID is required" + }, + "401": { + "description": "Not authorized to get the organization." + }, + "403": { + "description": "Insufficient permissions to get the organization." + }, + "404": { + "description": "The organization does not exist." + }, + "500": { + "description": "Internal server error while getting the organization." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/root": { + "get": { + "operationId": "OrganisationController_getRootOrganisation", + "parameters": [], + "responses": { + "200": { + "description": "The root organization was successfully retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get the root organization." + }, + "403": { + "description": "Insufficient permissions to get the root organization." + }, + "404": { + "description": "The root organization does not exist." + }, + "500": { + "description": "Internal server error while getting the root organization." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/root/children": { + "get": { + "operationId": "OrganisationController_getRootChildren", + "parameters": [], + "responses": { + "200": { + "description": "The root organizations were successfully pulled.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationRootChildrenResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get the organizations." + }, + "403": { + "description": "Insufficient permissions to get the organizations." + }, + "500": { + "description": "Internal server error while getting the organization." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/parents-by-ids": { + "post": { + "operationId": "OrganisationController_getParentsByIds", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParentOrganisationsByIdsBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "The parent organizations were successfully pulled.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParentOrganisationenResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get the organizations." + }, + "403": { + "description": "Insufficient permissions to get the organizations." + }, + "500": { + "description": "Internal server error while getting the organization." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}/administriert": { + "get": { + "operationId": "OrganisationController_getAdministrierteOrganisationen", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + }, + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "searchFilter", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The organizations were successfully returned.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "get": { - "operationId": "OrganisationController_findOrganizations", - "parameters": [ - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "kennung", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "name", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "searchString", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "typ", - "required": false, - "in": "query", - "schema": { - "$ref": "#/components/schemas/OrganisationsTyp" - } - }, - { - "name": "systemrechte", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - } - }, - { - "name": "excludeTyp", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationsTyp" - } - } - }, - { - "name": "administriertVon", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "organisationIds", - "required": false, - "in": "query", - "description": "Liefert Organisationen mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien).", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], - "responses": { - "200": { - "description": "The organizations were successfully returned.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get organizations." - }, - "403": { - "description": "Insufficient permissions to get organizations." - }, - "500": { - "description": "Internal server error while getting all organizations." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } } + }, + "401": { + "description": "Not authorized to get organizations." + }, + "403": { + "description": "Insufficient permissions to get organizations." + }, + "500": { + "description": "Internal server error while getting all organizations." + } }, - "/api/organisationen/{organisationId}": { - "put": { - "operationId": "OrganisationController_updateOrganisation", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateOrganisationBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The organisation was successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - }, - "400": { - "description": "Request has wrong format.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The organisation was not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "OrganisationController_addAdministrierteOrganisation", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationByIdBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "The organisation was successfully updated." + }, + "400": { + "description": "The organisation could not be modified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } + } + }, + "401": { + "description": "Not authorized to modify the organisation." + }, + "403": { + "description": "Not permitted to modify the organisation." + }, + "500": { + "description": "Internal server error while modifying the organisation." + } + }, + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}/zugehoerig": { + "get": { + "operationId": "OrganisationController_getZugehoerigeOrganisationen", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The organizations were successfully returned.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "get": { - "operationId": "OrganisationController_findOrganisationById", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The organization was successfully pulled.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - }, - "400": { - "description": "Organization ID is required" - }, - "401": { - "description": "Not authorized to get the organization." - }, - "403": { - "description": "Insufficient permissions to get the organization." - }, - "404": { - "description": "The organization does not exist." - }, - "500": { - "description": "Internal server error while getting the organization." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/organisationen/root": { - "get": { - "operationId": "OrganisationController_getRootOrganisation", - "parameters": [], - "responses": { - "200": { - "description": "The root organization was successfully retrieved.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get the root organization." - }, - "403": { - "description": "Insufficient permissions to get the root organization." - }, - "404": { - "description": "The root organization does not exist." - }, - "500": { - "description": "Internal server error while getting the root organization." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/organisationen/root/children": { - "get": { - "operationId": "OrganisationController_getRootChildren", - "parameters": [], - "responses": { - "200": { - "description": "The root organizations were successfully pulled.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationRootChildrenResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get the organizations." - }, - "403": { - "description": "Insufficient permissions to get the organizations." - }, - "500": { - "description": "Internal server error while getting the organization." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/organisationen/parents-by-ids": { - "post": { - "operationId": "OrganisationController_getParentsByIds", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ParentOrganisationsByIdsBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The parent organizations were successfully pulled.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ParentOrganisationenResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get the organizations." - }, - "403": { - "description": "Insufficient permissions to get the organizations." - }, - "500": { - "description": "Internal server error while getting the organization." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + } } + }, + "401": { + "description": "Not authorized to get organizations." + }, + "403": { + "description": "Insufficient permissions to get organizations." + }, + "500": { + "description": "Internal server error while getting all organizations." + } }, - "/api/organisationen/{organisationId}/administriert": { - "get": { - "operationId": "OrganisationController_getAdministrierteOrganisationen", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - }, - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "searchFilter", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The organizations were successfully returned.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get organizations." - }, - "403": { - "description": "Insufficient permissions to get organizations." - }, - "500": { - "description": "Internal server error while getting all organizations." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "post": { - "operationId": "OrganisationController_addAdministrierteOrganisation", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationByIdBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The organisation was successfully updated." - }, - "400": { - "description": "The organisation could not be modified.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to modify the organisation." - }, - "403": { - "description": "Not permitted to modify the organisation." - }, - "500": { - "description": "Internal server error while modifying the organisation." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "OrganisationController_addZugehoerigeOrganisation", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" } - }, - "/api/organisationen/{organisationId}/zugehoerig": { - "get": { - "operationId": "OrganisationController_getZugehoerigeOrganisationen", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The organizations were successfully returned.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get organizations." - }, - "403": { - "description": "Insufficient permissions to get organizations." - }, - "500": { - "description": "Internal server error while getting all organizations." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "post": { - "operationId": "OrganisationController_addZugehoerigeOrganisation", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationByIdBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The organisation was successfully updated." - }, - "400": { - "description": "The organisation could not be modified.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to modify the organisation." - }, - "403": { - "description": "Not permitted to modify the organisation." - }, - "500": { - "description": "Internal server error while modifying the organisation." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationByIdBodyParams" + } } + } }, - "/api/organisationen/{organisationId}/klasse": { - "delete": { - "operationId": "OrganisationController_deleteKlasse", - "summary": "", - "description": "Delete an organisation of type Klasse by id.", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The organisation was deleted successfully." - }, - "400": { - "description": "The input was not valid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to delete the organisation." - }, - "404": { - "description": "The organisation that should be deleted does not exist." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "201": { + "description": "The organisation was successfully updated." + }, + "400": { + "description": "The organisation could not be modified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } } + }, + "401": { + "description": "Not authorized to modify the organisation." + }, + "403": { + "description": "Not permitted to modify the organisation." + }, + "500": { + "description": "Internal server error while modifying the organisation." + } }, - "/api/organisationen/{organisationId}/name": { - "patch": { - "operationId": "OrganisationController_updateOrganisationName", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationByNameBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The organizations were successfully updated.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - } - } - }, - "400": { - "description": "The organisation could not be modified.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to modify the organisation." - }, - "403": { - "description": "Not permitted to modify the organisation." - }, - "500": { - "description": "Internal server error while modifying the organisation." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}/klasse": { + "delete": { + "operationId": "OrganisationController_deleteKlasse", + "summary": "", + "description": "Delete an organisation of type Klasse by id.", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "The organisation was deleted successfully." + }, + "400": { + "description": "The input was not valid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } } + }, + "401": { + "description": "Not authorized to delete the organisation." + }, + "404": { + "description": "The organisation that should be deleted does not exist." + } }, - "/api/organisationen/{organisationId}/enable-for-its-learning": { - "put": { - "operationId": "OrganisationController_enableForitslearning", - "parameters": [ - { - "name": "organisationId", - "required": true, - "in": "path", - "description": "The id of an organization", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The organization was successfully enabled for itslearning.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - } - } - }, - "400": { - "description": "The organisation could not be modified.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamOrganisationError" - } - } - } - }, - "401": { - "description": "Not authorized to modify the organisation." - }, - "403": { - "description": "Not permitted to modify the organisation." - }, - "500": { - "description": "Internal server error while modifying the organisation." - } - }, - "tags": [ - "organisationen" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}/name": { + "patch": { + "operationId": "OrganisationController_updateOrganisationName", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationByNameBodyParams" + } + } + } }, - "/api/rolle": { - "get": { - "operationId": "RolleController_findRollen", - "summary": "", - "description": "List all rollen.", - "parameters": [ - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "searchStr", - "required": false, - "in": "query", - "description": "The name for the role.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The rollen were successfully returned", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get rollen." - }, - "403": { - "description": "Insufficient permissions to get rollen." - }, - "500": { - "description": "Internal server error while getting all rollen." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "200": { + "description": "The organizations were successfully updated.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "post": { - "operationId": "RolleController_createRolle", - "summary": "", - "description": "Create a new rolle.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateRolleBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The rolle was successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleResponse" - } - } - } - }, - "400": { - "description": "The input was not valid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamRolleError" - } - } - } - }, - "401": { - "description": "Not authorized to create the rolle." - }, - "403": { - "description": "Insufficient permissions to create the rolle." - }, - "500": { - "description": "Internal server error while creating the rolle." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + } + } + }, + "400": { + "description": "The organisation could not be modified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } } + }, + "401": { + "description": "Not authorized to modify the organisation." + }, + "403": { + "description": "Not permitted to modify the organisation." + }, + "500": { + "description": "Internal server error while modifying the organisation." + } }, - "/api/rolle/{rolleId}": { - "get": { - "operationId": "RolleController_findRolleByIdWithServiceProviders", - "summary": "", - "description": "Get rolle by id.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The rolle was successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get rolle by id." - }, - "403": { - "description": "Insufficient permission to get rolle by id." - }, - "500": { - "description": "Internal server error while getting rolle by id." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "patch": { - "operationId": "RolleController_addSystemRecht", - "summary": "", - "description": "Add systemrecht to a rolle.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddSystemrechtBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The systemrecht was successfully added to rolle." - }, - "400": { - "description": "The input was not valid." - }, - "401": { - "description": "Not authorized to create the rolle." - }, - "403": { - "description": "Insufficient permissions to create the rolle." - }, - "500": { - "description": "Internal server error while adding systemrecht to rolle." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "put": { - "operationId": "RolleController_updateRolle", - "summary": "", - "description": "Update rolle.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateRolleBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "The rolle was successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" - } - } - } - }, - "400": { - "description": "The input was not valid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamRolleError" - } - } - } - }, - "401": { - "description": "Not authorized to update the rolle." - }, - "403": { - "description": "Insufficient permissions to update the rolle." - }, - "500": { - "description": "Internal server error while updating the rolle." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/organisationen/{organisationId}/enable-for-its-learning": { + "put": { + "operationId": "OrganisationController_enableForitslearning", + "parameters": [ + { + "name": "organisationId", + "required": true, + "in": "path", + "description": "The id of an organization", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The organization was successfully enabled for itslearning.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "delete": { - "operationId": "RolleController_deleteRolle", - "summary": "", - "description": "Delete a role by id.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Role was deleted successfully." - }, - "400": { - "description": "The input was not valid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamRolleError" - } - } - } - }, - "401": { - "description": "Not authorized to delete the role." - }, - "404": { - "description": "The rolle that should be deleted does not exist." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + } + } + }, + "400": { + "description": "The organisation could not be modified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamOrganisationError" + } + } } + }, + "401": { + "description": "Not authorized to modify the organisation." + }, + "403": { + "description": "Not permitted to modify the organisation." + }, + "500": { + "description": "Internal server error while modifying the organisation." + } }, - "/api/rolle/{rolleId}/serviceProviders": { - "get": { - "operationId": "RolleController_getRolleServiceProviderIds", - "summary": "", - "description": "Get service-providers for a rolle by its id.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Returns a list of service-provider ids.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleServiceProviderResponse" - } - } - } - }, - "401": { - "description": "Not authorized to retrieve service-providers for rolle." - }, - "404": { - "description": "The rolle does not exist." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "put": { - "operationId": "RolleController_updateServiceProvidersById", - "summary": "", - "description": "Add a service-provider to a rolle by id.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleServiceProviderBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "Adding service-provider finished successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServiceProviderResponse" - } - } - } - } - }, - "400": { - "description": "The service-provider is already attached to rolle." - }, - "401": { - "description": "Not authorized to retrieve service-providers for rolle." - }, - "404": { - "description": "The rolle or the service-provider to add does not exist." - }, - "500": { - "description": "Internal server error, the service-provider may could not be found after attaching to rolle." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["organisationen"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/rolle": { + "get": { + "operationId": "RolleController_findRollen", + "summary": "", + "description": "List all rollen.", + "parameters": [ + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "searchStr", + "required": false, + "in": "query", + "description": "The name for the role.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The rollen were successfully returned", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "delete": { - "operationId": "RolleController_removeServiceProviderById", - "summary": "", - "description": "Remove a service-provider from a rolle by id.", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "path", - "description": "The id for the rolle.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolleServiceProviderBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "Removing service-provider finished successfully." - }, - "401": { - "description": "Not authorized to retrieve service-providers for rolle." - }, - "404": { - "description": "The rolle or the service-provider that should be removed does not exist." - } - }, - "tags": [ - "rolle" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/provider/all": { - "get": { - "operationId": "ProviderController_getAllServiceProviders", - "summary": "", - "description": "Get all service-providers.", - "parameters": [], - "responses": { - "200": { - "description": "The service-providers were successfully returned.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServiceProviderResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get available service providers." - }, - "403": { - "description": "Insufficient permissions to get service-providers." - }, - "500": { - "description": "Internal server error while getting all service-providers." - } - }, - "tags": [ - "provider" - ], - "security": [ - { - "bearer": [] - }, - { - "oauth2": [ - "openid" - ] - } - ] - } - }, - "/api/provider": { - "get": { - "operationId": "ProviderController_getAvailableServiceProviders", - "summary": "", - "description": "Get service-providers available for logged-in user.", - "parameters": [], - "responses": { - "200": { - "description": "The service-providers were successfully returned.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServiceProviderResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get available service providers." - }, - "403": { - "description": "Insufficient permissions to get service-providers." - }, - "500": { - "description": "Internal server error while getting all service-providers." - } - }, - "tags": [ - "provider" - ], - "security": [ - { - "bearer": [] - }, - { - "oauth2": [ - "openid" - ] - } - ] + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" + } + } + } } + }, + "401": { + "description": "Not authorized to get rollen." + }, + "403": { + "description": "Insufficient permissions to get rollen." + }, + "500": { + "description": "Internal server error while getting all rollen." + } }, - "/api/provider/{angebotId}/logo": { - "get": { - "operationId": "ProviderController_getServiceProviderLogo", - "parameters": [ - { - "name": "angebotId", - "required": true, - "in": "path", - "description": "The id of the service provider", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The logo for the service provider was successfully returned.", - "content": { - "image/*": { - "schema": { - "type": "file", - "format": "binary" - } - } - } - }, - "400": { - "description": "Angebot ID is required." - }, - "401": { - "description": "Not authorized to get service provider logo." - }, - "403": { - "description": "Insufficient permissions to get the logo." - }, - "404": { - "description": "The service-provider does not exist or has no logo." - }, - "500": { - "description": "Internal server error while getting the logo." - } - }, - "tags": [ - "provider" - ], - "security": [ - { - "bearer": [] - }, - { - "oauth2": [ - "openid" - ] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "RolleController_createRolle", + "summary": "", + "description": "Create a new rolle.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRolleBodyParams" + } } + } }, - "/api/personenkontexte/{personenkontextId}": { - "get": { - "operationId": "PersonenkontextController_findPersonenkontextById", - "parameters": [ - { - "name": "personenkontextId", - "required": true, - "in": "path", - "description": "The id for the personenkontext.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The personenkontext was successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonendatensatzResponseAutomapper" - } - } - } - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The personenkontext was not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "put": { - "operationId": "PersonenkontextController_updatePersonenkontextWithId", - "summary": "", - "deprecated": true, - "parameters": [ - { - "name": "personenkontextId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The personenkontext was successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonenkontextResponse" - } - } - } - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The personenkontext was not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "PersonenkontextController_deletePersonenkontextById", - "parameters": [ - { - "name": "personenkontextId", - "required": true, - "in": "path", - "description": "The id for the personenkontext.", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteRevisionBodyParams" - } - } - } - }, - "responses": { - "204": { - "description": "The personenkontext was successfully deleted." - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The personenkontext was not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "201": { + "description": "The rolle was successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleResponse" + } + } + } + }, + "400": { + "description": "The input was not valid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamRolleError" + } + } } + }, + "401": { + "description": "Not authorized to create the rolle." + }, + "403": { + "description": "Insufficient permissions to create the rolle." + }, + "500": { + "description": "Internal server error while creating the rolle." + } }, - "/api/personenkontexte": { - "get": { - "operationId": "PersonenkontextController_findPersonenkontexte", - "parameters": [ - { - "name": "offset", - "required": false, - "in": "query", - "description": "The offset of the paginated list.", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The requested limit for the page size.", - "schema": { - "type": "number" - } - }, - { - "name": "personId", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "referrer", - "required": false, - "in": "query", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "personenstatus", - "required": false, - "in": "query", - "schema": { - "$ref": "#/components/schemas/Personenstatus" - } - }, - { - "name": "sichtfreigabe", - "required": false, - "in": "query", - "schema": { - "$ref": "#/components/schemas/Sichtfreigabe" - } - } - ], - "responses": { - "200": { - "description": "The personenkontexte were successfully returned.", - "headers": { - "X-Paging-Offset": { - "description": "The offset of the first item from the list. List starts with index 0." - }, - "X-Paging-Limit": { - "description": "The maximum amount of items returned in one request." - }, - "X-Paging-Total": { - "description": "The total amount of items in the list." - }, - "X-Paging-pageTotal": { - "description": "The total amount of items in the paginated list." - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextdatensatzResponse" - } - } - } - } - }, - "400": { - "description": "Request has wrong format." - }, - "401": { - "description": "Request is not authorized." - }, - "403": { - "description": "Insufficient permissions to perform operation." - }, - "404": { - "description": "The personenkontexte were not found." - }, - "500": { - "description": "An internal server error occurred." - } - }, - "tags": [ - "personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/rolle/{rolleId}": { + "get": { + "operationId": "RolleController_findRolleByIdWithServiceProviders", + "summary": "", + "description": "Get rolle by id.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The rolle was successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" + } + } } + }, + "401": { + "description": "Not authorized to get rolle by id." + }, + "403": { + "description": "Insufficient permission to get rolle by id." + }, + "500": { + "description": "Internal server error while getting rolle by id." + } }, - "/api/personenkontexte/{personId}/hatSystemrecht": { - "get": { - "operationId": "PersonenkontextController_hatSystemRecht", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The id for the account.", - "schema": { - "nullable": false, - "type": "string" - } - }, - { - "name": "systemRecht", - "required": true, - "in": "query", - "schema": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - } - ], - "responses": { - "200": { - "description": "The SchulStrukturKnoten associated with this personId and systemrecht. Can return empty list", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SystemrechtResponse" - } - } - } - }, - "404": { - "description": "The systemrecht could not be found (does not exist as type of systemrecht)." - } - }, - "tags": [ - "personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "RolleController_addSystemRecht", + "summary": "", + "description": "Add systemrecht to a rolle.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddSystemrechtBodyParams" + } } + } }, - "/api/dbiam/personenkontext/{personId}": { - "get": { - "operationId": "DBiamPersonenkontextController_findPersonenkontextsByPerson", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The ID for the person.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The personenkontexte were successfully returned.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DBiamPersonenkontextResponse" - } - } - } - } - }, - "401": { - "description": "Not authorized to get available personenkontexte." - }, - "403": { - "description": "Insufficient permission to get personenkontexte for this user." - }, - "500": { - "description": "Internal server error while getting personenkontexte." - } - }, - "tags": [ - "dbiam-personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/dbiam/personenkontext": { - "post": { - "operationId": "DBiamPersonenkontextController_createPersonenkontextMigration", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonenkontextMigrationBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "Personenkontext was successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DBiamPersonenkontextResponse" - } - } - } - }, - "400": { - "description": "The personenkontext could not be created, may due to unsatisfied specifications.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonenkontextError" - } - } - } - }, - "401": { - "description": "Not authorized to create personenkontext." - }, - "403": { - "description": "Insufficient permission to create personenkontext." - }, - "500": { - "description": "Internal server error while creating personenkontext." - } - }, - "tags": [ - "dbiam-personenkontexte" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "200": { + "description": "The systemrecht was successfully added to rolle." + }, + "400": { + "description": "The input was not valid." + }, + "401": { + "description": "Not authorized to create the rolle." + }, + "403": { + "description": "Insufficient permissions to create the rolle." + }, + "500": { + "description": "Internal server error while adding systemrecht to rolle." + } + }, + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "RolleController_updateRolle", + "summary": "", + "description": "Update rolle.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRolleBodyParams" + } + } + } }, - "/api/personenkontext-workflow/step": { - "get": { - "operationId": "DbiamPersonenkontextWorkflowController_processStep", - "parameters": [ - { - "name": "organisationId", - "required": false, - "in": "query", - "description": "ID of the organisation to filter the rollen later", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "rolleId", - "required": false, - "in": "query", - "description": "ID of the rolle.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "rolleName", - "required": false, - "in": "query", - "description": "Rolle name used to filter for rollen in personenkontext.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "organisationName", - "required": false, - "in": "query", - "description": "Organisation/SSK name used to filter for schulstrukturknoten in personenkontext.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The limit of items for the request.", - "schema": { - "nullable": false, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "Initialize or process data from the person creation form.\n Valid combinations:\n - Both organisationId and rolleId are undefined: Fetch all possible organisations.\n - organisationId is provided, but rolleId is undefined: Fetch Rollen for the given organisation.\n - Both organisationId and rolleId are provided: Check if the Rolle can be committed for the organisation.\n Note: Providing rolleId without organisationId is invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonenkontextWorkflowResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get available data for personenkontext." - }, - "403": { - "description": "Insufficient permission to get data for personenkontext." - }, - "500": { - "description": "Internal server error while getting data for personenkontext." - } - }, - "tags": [ - "personenkontext" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "200": { + "description": "The rolle was successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleWithServiceProvidersResponse" + } + } + } + }, + "400": { + "description": "The input was not valid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamRolleError" + } + } } + }, + "401": { + "description": "Not authorized to update the rolle." + }, + "403": { + "description": "Insufficient permissions to update the rolle." + }, + "500": { + "description": "Internal server error while updating the rolle." + } }, - "/api/personenkontext-workflow/{personId}": { - "put": { - "operationId": "DbiamPersonenkontextWorkflowController_commit", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "path", - "description": "The ID for the person.", - "schema": { - "type": "string" - } - }, - { - "name": "personalnummer", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamUpdatePersonenkontexteBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "Add or remove personenkontexte as one operation. Returns the Personenkontexte existing after update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PersonenkontexteUpdateResponse" - } - } - } - }, - "400": { - "description": "The personenkontexte could not be updated, may due to unsatisfied specifications.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonenkontexteUpdateError" - } - } - } - }, - "401": { - "description": "Not authorized to update personenkontexte." - }, - "403": { - "description": "Insufficient permission to update personenkontexte." - }, - "409": { - "description": "Changes are conflicting with current state of personenkontexte." - }, - "500": { - "description": "Internal server error while updating personenkontexte." - } - }, - "tags": [ - "personenkontext" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "RolleController_deleteRolle", + "summary": "", + "description": "Delete a role by id.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" } + } + ], + "responses": { + "204": { + "description": "Role was deleted successfully." + }, + "400": { + "description": "The input was not valid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamRolleError" + } + } + } + }, + "401": { + "description": "Not authorized to delete the role." + }, + "404": { + "description": "The rolle that should be deleted does not exist." + } }, - "/api/personenkontext-workflow/schulstrukturknoten": { - "get": { - "operationId": "DbiamPersonenkontextWorkflowController_findSchulstrukturknoten", - "parameters": [ - { - "name": "rolleId", - "required": true, - "in": "query", - "description": "RolleId used to filter for schulstrukturknoten in personenkontext.", - "schema": { - "nullable": false, - "type": "string" - } - }, - { - "name": "sskName", - "required": false, - "in": "query", - "description": "Organisation/SSK name used to filter for schulstrukturknoten in personenkontext.", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The limit of items for the request.", - "schema": { - "nullable": false, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "The schulstrukturknoten for a personenkontext were successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindSchulstrukturknotenResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get available schulstrukturknoten for personenkontexte." - }, - "403": { - "description": "Insufficient permission to get schulstrukturknoten for personenkontext." - }, - "500": { - "description": "Internal server error while getting schulstrukturknoten for personenkontexte." - } - }, - "tags": [ - "personenkontext" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/personenkontext-workflow": { - "post": { - "operationId": "DbiamPersonenkontextWorkflowController_createPersonWithPersonenkontexte", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamCreatePersonWithPersonenkontexteBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "Person with Personenkontext was successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DBiamPersonResponse" - } - } - } - }, - "400": { - "description": "The person and the personenkontext could not be created, may due to unsatisfied specifications.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonenkontextError" - } - } - } - }, - "401": { - "description": "Not authorized to create person with personenkontext." - }, - "403": { - "description": "Insufficient permission to create person with personenkontext." - }, - "500": { - "description": "Internal server error while creating person with personenkontext." - } - }, - "tags": [ - "personenkontext" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/rolle/{rolleId}/serviceProviders": { + "get": { + "operationId": "RolleController_getRolleServiceProviderIds", + "summary": "", + "description": "Get service-providers for a rolle by its id.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a list of service-provider ids.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleServiceProviderResponse" + } + } } + }, + "401": { + "description": "Not authorized to retrieve service-providers for rolle." + }, + "404": { + "description": "The rolle does not exist." + } }, - "/api/person-administration/rollen": { - "get": { - "operationId": "PersonAdministrationController_findRollen", - "parameters": [ - { - "name": "rolleName", - "required": false, - "in": "query", - "description": "Rolle name used to filter for rollen in personenkontext.", - "schema": { - "nullable": false, - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The limit of items for the request.", - "schema": { - "nullable": false, - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "The rollen for the logged-in user were successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindRollenResponse" - } - } - } - }, - "401": { - "description": "Not authorized to get available rollen for the logged-in user." - }, - "403": { - "description": "Insufficient permission to get rollen for the logged-in user." - }, - "500": { - "description": "Internal server error while getting rollen for the logged-in user." - } - }, - "tags": [ - "person-administration" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/2fa-token/init": { - "post": { - "operationId": "PrivacyIdeaAdministrationController_initializeSoftwareToken", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TokenInitBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The token was successfully created.", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "400": { - "description": "A username was not given or not found." - }, - "401": { - "description": "Not authorized to create token." - }, - "403": { - "description": "Insufficient permissions to create token." - }, - "404": { - "description": "Insufficient permissions to create token." - }, - "500": { - "description": "Internal server error while creating a token." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "RolleController_updateServiceProvidersById", + "summary": "", + "description": "Add a service-provider to a rolle by id.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleServiceProviderBodyParams" + } + } + } }, - "/api/2fa-token/state": { - "get": { - "operationId": "PrivacyIdeaAdministrationController_getTwoAuthState", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "201": { - "description": "The token state was successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TokenStateResponse" - } - } - } - }, - "400": { - "description": "A username was not given or not found." - }, - "401": { - "description": "Not authorized to get token state." - }, - "403": { - "description": "Insufficient permissions to get token state." - }, - "404": { - "description": "Insufficient permissions to get token state." - }, - "500": { - "description": "Internal server error while retrieving token state." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "200": { + "description": "Adding service-provider finished successfully.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceProviderResponse" + } + } + } } + }, + "400": { + "description": "The service-provider is already attached to rolle." + }, + "401": { + "description": "Not authorized to retrieve service-providers for rolle." + }, + "404": { + "description": "The rolle or the service-provider to add does not exist." + }, + "500": { + "description": "Internal server error, the service-provider may could not be found after attaching to rolle." + } }, - "/api/2fa-token/reset": { - "put": { - "operationId": "PrivacyIdeaAdministrationController_resetToken", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "201": { - "description": "The token was successfully reset.", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } - }, - "400": { - "description": "A username was not given or not found." - }, - "401": { - "description": "Not authorized to reset token." - }, - "403": { - "description": "Insufficient permissions to reset token." - }, - "404": { - "description": "Insufficient permissions to reset token." - }, - "500": { - "description": "Internal server error while reseting a token." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/2fa-token/assign/hardwareToken": { - "post": { - "operationId": "PrivacyIdeaAdministrationController_assignHardwareToken", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssignHardwareTokenBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The hardware token was successfully assigned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AssignHardwareTokenResponse" - } - } - } - }, - "400": { - "description": "Not found." - }, - "401": { - "description": "Not authorized to assign hardware token." - }, - "403": { - "description": "Insufficient permissions to reset token." - }, - "404": { - "description": "Insufficient permissions to assign hardware token." - }, - "500": { - "description": "Internal server error while assigning a hardware token." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/2fa-token/verify": { - "post": { - "operationId": "PrivacyIdeaAdministrationController_verifyToken", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TokenVerifyBodyParams" - } - } - } - }, - "responses": { - "201": { - "description": "The token was successfully verified." - }, - "400": { - "description": "A username was not given or not found." - }, - "401": { - "description": "Not authorized to verify token." - }, - "403": { - "description": "Insufficient permissions to verify token." - }, - "404": { - "description": "Insufficient permissions to verify token." - }, - "500": { - "description": "Internal server error while verifying a token." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "RolleController_removeServiceProviderById", + "summary": "", + "description": "Remove a service-provider from a rolle by id.", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "path", + "description": "The id for the rolle.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolleServiceProviderBodyParams" + } } + } }, - "/api/2fa-token/required": { - "get": { - "operationId": "PrivacyIdeaAdministrationController_requiresTwoFactorAuthentication", - "parameters": [ - { - "name": "personId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The requirement was successfully returned.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TokenRequiredResponse" - } - } - } - }, - "400": { - "description": "A username was not given or not found." - }, - "401": { - "description": "Not authorized to get requirement information." - }, - "403": { - "description": "Insufficient permissions to get requirement information." - }, - "404": { - "description": "Insufficient permissions to get requirement information." - }, - "500": { - "description": "Internal server error while getting requirement information." - } - }, - "tags": [ - "2FA" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/cron/kopers-lock": { - "put": { - "operationId": "CronController_koPersUserLock", - "parameters": [], - "responses": { - "201": { - "description": "User were successfully locked.", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } - }, - "400": { - "description": "User are not given or not found" - }, - "401": { - "description": "Not authorized to lock user." - }, - "403": { - "description": "Insufficient permissions to lock user." - }, - "404": { - "description": "Insufficient permissions to lock user." - }, - "500": { - "description": "Internal server error while trying to lock user." - } - }, - "tags": [ - "cron" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/cron/kontext-expired": { - "put": { - "operationId": "CronController_removePersonenKontexteWithExpiredBefristungFromUsers", - "parameters": [], - "responses": { - "201": { - "description": "Personenkontexte were successfully removed from users.", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } - }, - "400": { - "description": "Personenkontexte are not given or not found." - }, - "401": { - "description": "Not authorized to remove personenkontexte from users." - }, - "403": { - "description": "Insufficient permissions to remove personenkontexte from users." - }, - "404": { - "description": "Insufficient permissions to remove personenkontexte from users." - }, - "500": { - "description": "Internal server error while trying to remove personenkontexte from users." - } - }, - "tags": [ - "cron" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/cron/person-without-org": { - "put": { - "operationId": "CronController_personWithoutOrgDelete", - "parameters": [], - "responses": { - "201": { - "description": "User were successfully removed.", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } - }, - "400": { - "description": "User are not given or not found" - }, - "401": { - "description": "Not authorized to remove user." - }, - "403": { - "description": "Insufficient permissions to delete user." - }, - "404": { - "description": "Insufficient permissions to delete user." - }, - "500": { - "description": "Internal server error while trying to remove user." - } - }, - "tags": [ - "cron" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/cron/unlock": { - "put": { - "operationId": "CronController_unlockUsersWithExpiredLocks", - "parameters": [], - "responses": { - "200": { - "description": "The users were successfully unlocked.", - "content": { - "application/json": { - "schema": { - "type": "boolean" - } - } - } - }, - "401": { - "description": "Not authorized to unlock users." - }, - "403": { - "description": "Insufficient permissions to unlock users." - }, - "404": { - "description": "Insufficient permissions to unlock users." - }, - "500": { - "description": "Internal server error while trying to unlock users." - } - }, - "tags": [ - "cron" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/import/upload": { - "post": { - "operationId": "ImportController_uploadFile", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/DbiamPersonenkontextImportBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "Returns an import upload response object.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImportUploadResponse" - } - } - } - }, - "400": { - "description": "The CSV file was not valid." - }, - "401": { - "description": "Not authorized to import data with a CSV file." - }, - "403": { - "description": "Insufficient permissions to import data with a CSV file." - }, - "500": { - "description": "Internal server error while importing data with a CSV file." - } - }, - "tags": [ - "import" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] - } - }, - "/api/import/execute": { - "post": { - "operationId": "ImportController_executeImport", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImportvorgangByIdBodyParams" - } - } - } - }, - "responses": { - "200": { - "description": "Import transaction was executed successfully. The text file can be downloaded", - "content": { - "text/plain": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "400": { - "description": "Something went wrong with the found import transaction.", - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/DbiamImportError" - } - } - } - }, - "401": { - "description": "Not authorized to execute the import transaction." - }, - "403": { - "description": "Insufficient permissions to execute the import transaction." - }, - "404": { - "description": "The import transaction does not exist." - }, - "500": { - "description": "Internal server error while executing the import transaction." - } - }, - "tags": [ - "import" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "responses": { + "200": { + "description": "Removing service-provider finished successfully." + }, + "401": { + "description": "Not authorized to retrieve service-providers for rolle." + }, + "404": { + "description": "The rolle or the service-provider that should be removed does not exist." + } + }, + "tags": ["rolle"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/provider/all": { + "get": { + "operationId": "ProviderController_getAllServiceProviders", + "summary": "", + "description": "Get all service-providers.", + "parameters": [], + "responses": { + "200": { + "description": "The service-providers were successfully returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceProviderResponse" + } + } + } } + }, + "401": { + "description": "Not authorized to get available service providers." + }, + "403": { + "description": "Insufficient permissions to get service-providers." + }, + "500": { + "description": "Internal server error while getting all service-providers." + } }, - "/api/import/{importvorgangId}": { - "delete": { - "operationId": "ImportController_deleteImportTransaction", - "summary": "", - "description": "Delete a role by id.", - "parameters": [ - { - "name": "importvorgangId", - "required": true, - "in": "path", - "description": "The id of an import transaction", - "schema": { - "nullable": false, - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Import transaction was deleted successfully." - }, - "400": { - "description": "Something went wrong with the found import transaction.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DbiamImportError" - } - } - } - }, - "401": { - "description": "Not authorized to delete the import transaction." - }, - "404": { - "description": "The import transaction that should be deleted does not exist." - } - }, - "tags": [ - "import" - ], - "security": [ - { - "oauth2": [ - "openid" - ] - }, - { - "bearer": [] - } - ] + "tags": ["provider"], + "security": [ + { + "bearer": [] + }, + { + "oauth2": ["openid"] + } + ] + } + }, + "/api/provider": { + "get": { + "operationId": "ProviderController_getAvailableServiceProviders", + "summary": "", + "description": "Get service-providers available for logged-in user.", + "parameters": [], + "responses": { + "200": { + "description": "The service-providers were successfully returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceProviderResponse" + } + } + } } - } + }, + "401": { + "description": "Not authorized to get available service providers." + }, + "403": { + "description": "Insufficient permissions to get service-providers." + }, + "500": { + "description": "Internal server error while getting all service-providers." + } + }, + "tags": ["provider"], + "security": [ + { + "bearer": [] + }, + { + "oauth2": ["openid"] + } + ] + } }, - "info": { - "title": "dBildungs IAM", - "description": "The dBildungs IAM server API description", - "version": "1.0", - "contact": {} + "/api/provider/{angebotId}/logo": { + "get": { + "operationId": "ProviderController_getServiceProviderLogo", + "parameters": [ + { + "name": "angebotId", + "required": true, + "in": "path", + "description": "The id of the service provider", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The logo for the service provider was successfully returned.", + "content": { + "image/*": { + "schema": { + "type": "file", + "format": "binary" + } + } + } + }, + "400": { + "description": "Angebot ID is required." + }, + "401": { + "description": "Not authorized to get service provider logo." + }, + "403": { + "description": "Insufficient permissions to get the logo." + }, + "404": { + "description": "The service-provider does not exist or has no logo." + }, + "500": { + "description": "Internal server error while getting the logo." + } + }, + "tags": ["provider"], + "security": [ + { + "bearer": [] + }, + { + "oauth2": ["openid"] + } + ] + } }, - "tags": [], - "servers": [], - "components": { - "securitySchemes": { - "oauth2": { - "type": "oauth2", - "flows": { - "authorizationCode": { - "authorizationUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/auth", - "tokenUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/token", - "refreshUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/token", - "scopes": {} - } + "/api/personenkontexte/{personenkontextId}": { + "get": { + "operationId": "PersonenkontextController_findPersonenkontextById", + "parameters": [ + { + "name": "personenkontextId", + "required": true, + "in": "path", + "description": "The id for the personenkontext.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The personenkontext was successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonendatensatzResponseAutomapper" } + } + } + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The personenkontext was not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "PersonenkontextController_updatePersonenkontextWithId", + "summary": "", + "deprecated": true, + "parameters": [ + { + "name": "personenkontextId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The personenkontext was successfully updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonenkontextResponse" + } + } + } + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The personenkontext was not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "PersonenkontextController_deletePersonenkontextById", + "parameters": [ + { + "name": "personenkontextId", + "required": true, + "in": "path", + "description": "The id for the personenkontext.", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteRevisionBodyParams" + } + } + } + }, + "responses": { + "204": { + "description": "The personenkontext was successfully deleted." + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The personenkontext was not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontexte": { + "get": { + "operationId": "PersonenkontextController_findPersonenkontexte", + "parameters": [ + { + "name": "offset", + "required": false, + "in": "query", + "description": "The offset of the paginated list.", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The requested limit for the page size.", + "schema": { + "type": "number" + } + }, + { + "name": "personId", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "referrer", + "required": false, + "in": "query", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "personenstatus", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/Personenstatus" + } + }, + { + "name": "sichtfreigabe", + "required": false, + "in": "query", + "schema": { + "$ref": "#/components/schemas/Sichtfreigabe" + } + } + ], + "responses": { + "200": { + "description": "The personenkontexte were successfully returned.", + "headers": { + "X-Paging-Offset": { + "description": "The offset of the first item from the list. List starts with index 0." + }, + "X-Paging-Limit": { + "description": "The maximum amount of items returned in one request." + }, + "X-Paging-Total": { + "description": "The total amount of items in the list." + }, + "X-Paging-pageTotal": { + "description": "The total amount of items in the paginated list." + } }, - "bearer": { - "scheme": "bearer", - "bearerFormat": "JWT", - "type": "http" - } - }, - "schemas": { - "RollenSystemRechtServiceProviderIDResponse": { - "type": "object", - "properties": { - "systemrechte": { - "type": "array", - "items": { - "type": "string" - } - }, - "serviceProviderIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "systemrechte", - "serviceProviderIds" - ] - }, - "PersonenkontextRolleFieldsResponse": { - "type": "object", - "properties": { - "organisationsId": { - "type": "string" - }, - "rolle": { - "$ref": "#/components/schemas/RollenSystemRechtServiceProviderIDResponse" - } - }, - "required": [ - "organisationsId", - "rolle" - ] - }, - "UserinfoResponse": { - "type": "object", - "properties": { - "sub": { - "type": "string" - }, - "personId": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string", - "nullable": true - }, - "given_name": { - "type": "string", - "nullable": true - }, - "family_name": { - "type": "string", - "nullable": true - }, - "middle_name": { - "type": "string", - "nullable": true - }, - "nickname": { - "type": "string", - "nullable": true - }, - "preferred_username": { - "type": "string", - "nullable": true - }, - "profile": { - "type": "string", - "nullable": true - }, - "picture": { - "type": "string", - "nullable": true - }, - "website": { - "type": "string", - "nullable": true - }, - "email": { - "type": "string", - "nullable": true - }, - "email_verified": { - "type": "boolean", - "nullable": true - }, - "gender": { - "type": "string", - "nullable": true - }, - "birthdate": { - "type": "string", - "nullable": true - }, - "zoneinfo": { - "type": "string", - "nullable": true - }, - "locale": { - "type": "string", - "nullable": true - }, - "phone_number": { - "type": "string", - "nullable": true - }, - "updated_at": { - "type": "string", - "nullable": true - }, - "password_updated_at": { - "type": "string", - "nullable": true - }, - "personenkontexte": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextRolleFieldsResponse" - } - }, - "acr": { - "type": "string", - "nullable": false - } - }, - "required": [ - "sub", - "personId", - "name", - "given_name", - "family_name", - "middle_name", - "nickname", - "preferred_username", - "profile", - "picture", - "website", - "email", - "email_verified", - "gender", - "birthdate", - "zoneinfo", - "locale", - "phone_number", - "updated_at", - "password_updated_at", - "personenkontexte", - "acr" - ] - }, - "CreatePersonMigrationBodyParams": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "familienname": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "hashedPassword": { - "type": "string" - }, - "username": { - "type": "string" - }, - "personalnummer": { - "type": "string" - } - }, - "required": [ - "personId", - "familienname", - "vorname" - ] - }, - "PersonNameParams": { - "type": "object", - "properties": { - "familienname": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "initialenfamilienname": { - "type": "string" - }, - "initialenvorname": { - "type": "string" - }, - "rufname": { - "type": "string" - }, - "titel": { - "type": "string" - }, - "anrede": { - "type": "array", - "items": { - "type": "string" - } - }, - "namenssuffix": { - "type": "array", - "items": { - "type": "string" - } - }, - "namenspraefix": { - "type": "array", - "items": { - "type": "string" - } - }, - "sortierindex": { - "type": "string" - } - }, - "required": [ - "familienname", - "vorname" - ] - }, - "PersonBirthParams": { - "type": "object", - "properties": { - "datum": { - "format": "date-time", - "type": "string" - }, - "geburtsort": { - "type": "string" - } - } - }, - "Vertrauensstufe": { - "type": "string", - "enum": [ - "KEIN", - "UNBE", - "TEIL", - "VOLL" - ] - }, - "UserLockParams": { - "type": "object", - "properties": { - "personId": { - "type": "string", - "nullable": true - }, - "locked_by": { - "type": "string", - "nullable": true - }, - "created_at": { - "type": "string", - "nullable": true - }, - "locked_until": { - "type": "string", - "nullable": true - }, - "lock_occasion": { - "type": "string", - "nullable": true - } - }, - "required": [ - "personId", - "locked_by", - "created_at", - "locked_until", - "lock_occasion" - ] - }, - "EmailAddressStatus": { - "type": "string", - "enum": [ - "ENABLED", - "DISABLED", - "REQUESTED", - "FAILED" - ] - }, - "PersonEmailResponse": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/EmailAddressStatus" - }, - "address": { - "type": "string" - } - }, - "required": [ - "status", - "address" - ] - }, - "PersonResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referrer": { - "type": "string", - "nullable": true - }, - "mandant": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/PersonNameParams" - }, - "geburt": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/PersonBirthParams" - } - ] - }, - "stammorganisation": { - "type": "string", - "nullable": true - }, - "geschlecht": { - "type": "string", - "nullable": true - }, - "lokalisierung": { - "type": "string", - "nullable": true - }, - "vertrauensstufe": { - "nullable": true, - "$ref": "#/components/schemas/Vertrauensstufe" - }, - "revision": { - "type": "string" - }, - "startpasswort": { - "type": "string", - "description": "Initiales Benutzerpasswort, muss nach der ersten Anmeldung geändert werden" - }, - "personalnummer": { - "type": "string", - "nullable": true - }, - "isLocked": { - "type": "boolean", - "nullable": true - }, - "userLock": { - "nullable": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/UserLockParams" - } - }, - "lastModified": { - "format": "date-time", - "type": "string", - "description": "Date of the most recent changes for the person" - }, - "email": { - "nullable": true, - "description": "Contains status and address. Returns email-address verified by OX (enabled) if available, otherwise returns most recently updated one (no prioritized status)", - "allOf": [ - { - "$ref": "#/components/schemas/PersonEmailResponse" - } - ] - } - }, - "required": [ - "id", - "referrer", - "mandant", - "name", - "geburt", - "stammorganisation", - "geschlecht", - "lokalisierung", - "vertrauensstufe", - "revision", - "startpasswort", - "personalnummer", - "isLocked", - "userLock", - "lastModified", - "email" - ] - }, - "PersonendatensatzResponse": { - "type": "object", - "properties": { - "person": { - "$ref": "#/components/schemas/PersonResponse" - } - }, - "required": [ - "person" - ] - }, - "RawPagedResponse": { - "type": "object", - "properties": { - "total": { - "type": "number" - }, - "offset": { - "type": "number" - }, - "limit": { - "type": "number" - }, - "items": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "total", - "offset", - "limit", - "items" - ] - }, - "CreatedPersonenkontextOrganisation": { - "type": "object", - "properties": {} - }, - "LoeschungResponse": { - "type": "object", - "properties": { - "zeitpunkt": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "zeitpunkt" - ] - }, - "PersonenkontextResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referrer": { - "type": "string", - "nullable": true - }, - "mandant": { - "type": "string" - }, - "organisation": { - "$ref": "#/components/schemas/CreatedPersonenkontextOrganisation" - }, - "rollenart": { - "type": "string", - "nullable": true - }, - "rollenname": { - "type": "string", - "nullable": true - }, - "personenstatus": { - "type": "string", - "enum": [ - "AKTIV" - ], - "nullable": true - }, - "jahrgangsstufe": { - "type": "string", - "enum": [ - "01", - "02", - "03", - "04", - "05", - "06", - "07", - "08", - "09", - "10" - ], - "nullable": true - }, - "sichtfreigabe": { - "type": "string", - "enum": [ - "ja", - "nein" - ], - "nullable": true - }, - "loeschung": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/LoeschungResponse" - } - ] - }, - "revision": { - "type": "string" - } - }, - "required": [ - "id", - "referrer", - "mandant", - "organisation", - "rollenart", - "rollenname", - "personenstatus", - "jahrgangsstufe", - "sichtfreigabe", - "loeschung", - "revision" - ] - }, - "Personenstatus": { - "type": "string", - "enum": [ - "AKTIV" - ] - }, - "Sichtfreigabe": { - "type": "string", - "enum": [ - "ja", - "nein" - ] - }, - "Geschlecht": { - "type": "string", - "enum": [ - "m", - "w", - "d", - "x" - ] - }, - "UpdatePersonBodyParams": { - "type": "object", - "properties": { - "referrer": { - "type": "string" - }, - "stammorganisation": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/PersonNameParams" - }, - "geburt": { - "$ref": "#/components/schemas/PersonBirthParams" - }, - "geschlecht": { - "$ref": "#/components/schemas/Geschlecht" - }, - "lokalisierung": { - "type": "string" - }, - "vertrauensstufe": { - "$ref": "#/components/schemas/Vertrauensstufe" - }, - "auskunftssperre": { - "type": "boolean" - }, - "revision": { - "type": "string" - } - }, - "required": [ - "name", - "revision" - ] - }, - "LockUserBodyParams": { - "type": "object", - "properties": { - "lock": { - "type": "boolean", - "nullable": false - }, - "locked_by": { - "type": "string", - "nullable": false - }, - "locked_until": { - "format": "date-time", - "type": "string", - "description": "Required if Befristung is set" - } - }, - "required": [ - "lock", - "locked_by" - ] - }, - "PersonLockResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ] - }, - "PersonMetadataBodyParams": { - "type": "object", - "properties": { - "familienname": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "personalnummer": { - "type": "string" - }, - "lastModified": { - "format": "date-time", - "type": "string", - "description": "Date of the most recent changed Personalnummer" - }, - "revision": { - "type": "string" - } - }, - "required": [ - "familienname", - "vorname", - "lastModified", - "revision" - ] - }, - "DbiamPersonError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "PERSON_ERROR", - "VORNAME_ENTHAELT_LEERZEICHEN", - "FAMILIENNAME_ENTHAELT_LEERZEICHEN", - "PERSON_NOT_FOUND", - "DOWNSTREAM_UNREACHABLE", - "PERSONALNUMMER_REQUIRED", - "NEWER_VERSION_OF_PERSON_AVAILABLE", - "PERSONALNUMMER_NICHT_EINDEUTIG" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] - }, - "OrganisationsTyp": { - "type": "string", - "enum": [ - "ROOT", - "LAND", - "TRAEGER", - "SCHULE", - "KLASSE", - "ANBIETER", - "SONSTIGE ORGANISATION / EINRICHTUNG", - "UNBESTAETIGT" - ] - }, - "RollenMerkmal": { - "type": "string", - "enum": [ - "BEFRISTUNG_PFLICHT", - "KOPERS_PFLICHT" - ] - }, - "DBiamPersonenzuordnungResponse": { - "type": "object", - "properties": { - "sskId": { - "type": "string" - }, - "rolleId": { - "type": "string" - }, - "sskName": { - "type": "string" - }, - "sskDstNr": { - "type": "string" - }, - "rolle": { - "type": "string" - }, - "administriertVon": { - "type": "string" - }, - "typ": { - "nullable": true, - "$ref": "#/components/schemas/OrganisationsTyp" - }, - "editable": { - "type": "boolean" - }, - "befristung": { - "format": "date-time", - "type": "string" - }, - "merkmale": { - "nullable": true, - "$ref": "#/components/schemas/RollenMerkmal" - } - }, - "required": [ - "sskId", - "rolleId", - "sskName", - "sskDstNr", - "rolle", - "administriertVon", - "typ", - "editable", - "befristung", - "merkmale" - ] - }, - "DBiamPersonenuebersichtResponse": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "nachname": { - "type": "string" - }, - "benutzername": { - "type": "string" - }, - "lastModifiedZuordnungen": { - "format": "date-time", - "type": "string", - "nullable": true, - "description": "Date of the most recent changed personenkontext in the Zuordnungen" - }, - "zuordnungen": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DBiamPersonenzuordnungResponse" - } - } - }, - "required": [ - "personId", - "vorname", - "nachname", - "benutzername", - "lastModifiedZuordnungen", - "zuordnungen" - ] - }, - "PersonenuebersichtBodyParams": { - "type": "object", - "properties": { - "personIds": { - "description": "An array of IDs for the persons.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "personIds" - ] - }, - "PersonNameResponse": { - "type": "object", - "properties": { - "familiennamen": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "initialenfamilienname": { - "type": "string", - "nullable": true - }, - "initialenvorname": { - "type": "string", - "nullable": true - }, - "rufname": { - "type": "string", - "nullable": true - }, - "titel": { - "type": "string", - "nullable": true - }, - "anrede": { - "nullable": true, - "type": "array", - "items": { - "type": "string" - } - }, - "namenspraefix": { - "nullable": true, - "type": "array", - "items": { - "type": "string" - } - }, - "namenssuffix": { - "nullable": true, - "type": "array", - "items": { - "type": "string" - } - }, - "sortierindex": { - "type": "string", - "nullable": true - } - }, - "required": [ - "familiennamen", - "vorname", - "initialenfamilienname", - "initialenvorname", - "rufname", - "titel", - "anrede", - "namenspraefix", - "namenssuffix", - "sortierindex" - ] - }, - "PersonBirthResponse": { - "type": "object", - "properties": { - "datum": { - "format": "date-time", - "type": "string", - "nullable": true - }, - "geburtsort": { - "type": "string", - "nullable": true - } - }, - "required": [ - "datum", - "geburtsort" - ] - }, - "Person": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referrer": { - "type": "string", - "nullable": true - }, - "mandant": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/PersonNameResponse" - }, - "geburt": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/PersonBirthResponse" - } - ] - }, - "stammorganisation": { - "type": "string", - "nullable": true - }, - "geschlecht": { - "type": "string", - "nullable": true - }, - "lokalisierung": { - "type": "string", - "nullable": true - }, - "vertrauensstufe": { - "nullable": true, - "$ref": "#/components/schemas/Vertrauensstufe" - }, - "revision": { - "type": "string" - }, - "personalnummer": { - "type": "string", - "nullable": true - }, - "dienststellen": { - "nullable": true, - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "id", - "referrer", - "mandant", - "name", - "geburt", - "stammorganisation", - "geschlecht", - "lokalisierung", - "vertrauensstufe", - "revision", - "personalnummer", - "dienststellen" - ] - }, - "PersonInfoResponse": { - "type": "object", - "properties": { - "pid": { - "type": "string" - }, - "person": { - "$ref": "#/components/schemas/Person" - }, - "personenkontexte": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextResponse" - } - }, - "gruppen": { - "type": "array", - "items": { - "type": "string" - } - }, - "email": { - "nullable": true, - "description": "Contains status and address. Returns email-address verified by OX (enabled) if available, otherwise returns most recently updated one (no prioritized status)", - "allOf": [ - { - "$ref": "#/components/schemas/PersonEmailResponse" - } - ] - } - }, - "required": [ - "pid", - "person", - "personenkontexte", - "gruppen", - "email" - ] - }, - "TraegerschaftTyp": { - "type": "string", - "enum": [ - "01", - "02", - "03", - "04", - "05", - "06" - ] - }, - "CreateOrganisationBodyParams": { - "type": "object", - "properties": { - "administriertVon": { - "type": "string" - }, - "zugehoerigZu": { - "type": "string" - }, - "kennung": { - "type": "string", - "description": "Required, if `typ` is equal to `SCHULE`" - }, - "name": { - "type": "string" - }, - "namensergaenzung": { - "type": "string" - }, - "kuerzel": { - "type": "string" - }, - "typ": { - "$ref": "#/components/schemas/OrganisationsTyp" - }, - "traegerschaft": { - "$ref": "#/components/schemas/TraegerschaftTyp" - }, - "emailAdress": { - "type": "string" - } - }, - "required": [ - "name", - "typ" - ] - }, - "OrganisationResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "administriertVon": { - "type": "string", - "nullable": true - }, - "kennung": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "namensergaenzung": { - "type": "string", - "nullable": true - }, - "kuerzel": { - "type": "string" - }, - "typ": { - "$ref": "#/components/schemas/OrganisationsTyp" - }, - "traegerschaft": { - "$ref": "#/components/schemas/TraegerschaftTyp" - }, - "itslearningEnabled": { - "type": "boolean" - }, - "version": { - "type": "number" - } - }, - "required": [ - "id", - "administriertVon", - "kennung", - "name", - "namensergaenzung", - "kuerzel", - "typ", - "traegerschaft", - "itslearningEnabled", - "version" - ] - }, - "DbiamOrganisationError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "ORGANISATION_SPECIFICATION_ERROR", - "KENNUNG_REQUIRED_FOR_SCHULE", - "NAME_REQUIRED_FOR_SCHULE", - "SCHULE_KENNUNG_EINDEUTIG", - "SCHULE_UNTER_TRAEGER", - "TRAEGER_IN_TRAEGER", - "NUR_KLASSE_UNTER_SCHULE", - "ZYKLUS_IN_ORGANISATION", - "ROOT_ORGANISATION_IMMUTABLE", - "KLASSE_NUR_VON_SCHULE_ADMINISTRIERT", - "KLASSENNAME_AN_SCHULE_EINDEUTIG", - "ORGANISATION_IST_BEREITS_ZUGEWIESEN_ERROR", - "NAME_REQUIRED_FOR_KLASSE", - "NAME_ENTHAELT_LEERZEICHEN", - "KENNUNG_ENTHAELT_LEERZEICHEN", - "EMAIL_ADRESS_ON_ORGANISATION_TYP", - "NEWER_VERSION_ORGANISATION" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] - }, - "UpdateOrganisationBodyParams": { - "type": "object", - "properties": { - "administriertVon": { - "type": "string" - }, - "zugehoerigZu": { - "type": "string" - }, - "kennung": { - "type": "string", - "description": "Required, if `typ` is equal to `SCHULE`" - }, - "name": { - "type": "string" - }, - "namensergaenzung": { - "type": "string" - }, - "kuerzel": { - "type": "string" - }, - "typ": { - "$ref": "#/components/schemas/OrganisationsTyp" - }, - "traegerschaft": { - "$ref": "#/components/schemas/TraegerschaftTyp" - }, - "emailAdress": { - "type": "string" - } - }, - "required": [ - "name", - "typ" - ] - }, - "OrganisationRootChildrenResponse": { - "type": "object", - "properties": { - "oeffentlich": { - "$ref": "#/components/schemas/OrganisationResponse" - }, - "ersatz": { - "$ref": "#/components/schemas/OrganisationResponse" - } - }, - "required": [ - "oeffentlich", - "ersatz" - ] - }, - "ParentOrganisationsByIdsBodyParams": { - "type": "object", - "properties": { - "organisationIds": { - "description": "The ids of organizations", - "nullable": false, - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "organisationIds" - ] - }, - "ParentOrganisationenResponse": { - "type": "object", - "properties": { - "parents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponse" - } - } - }, - "required": [ - "parents" - ] - }, - "RollenSystemRecht": { - "type": "string", - "enum": [ - "ROLLEN_VERWALTEN", - "PERSONEN_SOFORT_LOESCHEN", - "PERSONEN_VERWALTEN", - "SCHULEN_VERWALTEN", - "KLASSEN_VERWALTEN", - "SCHULTRAEGER_VERWALTEN", - "MIGRATION_DURCHFUEHREN", - "PERSON_SYNCHRONISIEREN", - "CRON_DURCHFUEHREN", - "PERSONEN_ANLEGEN", - "IMPORT_DURCHFUEHREN" - ] - }, - "OrganisationByIdBodyParams": { - "type": "object", - "properties": { - "organisationId": { - "type": "string", - "description": "The id of an organization", - "nullable": false - } - }, - "required": [ - "organisationId" - ] - }, - "OrganisationByNameBodyParams": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "number", - "description": "The version for the organisation." - } - }, - "required": [ - "name", - "version" - ] - }, - "OrganisationResponseLegacy": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "administriertVon": { - "type": "string", - "nullable": true - }, - "kennung": { - "type": "string", - "nullable": true - }, - "name": { - "type": "string" - }, - "namensergaenzung": { - "type": "string", - "nullable": true - }, - "kuerzel": { - "type": "string" - }, - "typ": { - "$ref": "#/components/schemas/OrganisationsTyp" - } - }, - "required": [ - "id", - "administriertVon", - "kennung", - "name", - "namensergaenzung", - "kuerzel", - "typ" - ] - }, - "RollenArt": { - "type": "string", - "enum": [ - "LERN", - "LEHR", - "EXTERN", - "ORGADMIN", - "LEIT", - "SYSADMIN" - ] - }, - "ServiceProviderIdNameResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "RolleWithServiceProvidersResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "type": "string" - }, - "name": { - "type": "string" - }, - "administeredBySchulstrukturknoten": { - "type": "string" - }, - "rollenart": { - "$ref": "#/components/schemas/RollenArt" - }, - "merkmale": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenMerkmal" - } - }, - "systemrechte": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - }, - "administeredBySchulstrukturknotenName": { - "type": "string", - "nullable": true - }, - "administeredBySchulstrukturknotenKennung": { - "type": "string", - "nullable": true - }, - "version": { - "type": "number" - }, - "serviceProviders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServiceProviderIdNameResponse" - } - } - }, - "required": [ - "id", - "createdAt", - "updatedAt", - "name", - "administeredBySchulstrukturknoten", - "rollenart", - "merkmale", - "systemrechte", - "administeredBySchulstrukturknotenName", - "administeredBySchulstrukturknotenKennung", - "version", - "serviceProviders" - ] - }, - "CreateRolleBodyParams": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "administeredBySchulstrukturknoten": { - "type": "string" - }, - "rollenart": { - "$ref": "#/components/schemas/RollenArt" - }, - "merkmale": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenMerkmal" - } - }, - "systemrechte": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - } - }, - "required": [ - "name", - "administeredBySchulstrukturknoten", - "rollenart", - "merkmale", - "systemrechte" - ] - }, - "RolleResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "type": "string" - }, - "name": { - "type": "string" - }, - "administeredBySchulstrukturknoten": { - "type": "string" - }, - "rollenart": { - "$ref": "#/components/schemas/RollenArt" - }, - "merkmale": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenMerkmal" - } - }, - "systemrechte": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - }, - "administeredBySchulstrukturknotenName": { - "type": "string", - "nullable": true - }, - "administeredBySchulstrukturknotenKennung": { - "type": "string", - "nullable": true - }, - "version": { - "type": "number" - } - }, - "required": [ - "id", - "createdAt", - "updatedAt", - "name", - "administeredBySchulstrukturknoten", - "rollenart", - "merkmale", - "systemrechte", - "administeredBySchulstrukturknotenName", - "administeredBySchulstrukturknotenKennung", - "version" - ] - }, - "DbiamRolleError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "ROLLE_ERROR", - "ADD_SYSTEMRECHT_ERROR", - "ROLLE_HAT_PERSONENKONTEXTE_ERROR", - "UPDATE_MERKMALE_ERROR", - "ROLLENNAME_ENTHAELT_LEERZEICHEN", - "NEWER_VERSION_OF_ROLLE_AVAILABLE", - "ROLLE_NAME_UNIQUE_ON_SSK" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] - }, - "AddSystemrechtBodyParams": { - "type": "object", - "properties": { - "systemRecht": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - }, - "required": [ - "systemRecht" - ] - }, - "RolleServiceProviderResponse": { - "type": "object", - "properties": { - "serviceProviderIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "serviceProviderIds" - ] - }, - "RolleServiceProviderBodyParams": { - "type": "object", - "properties": { - "serviceProviderIds": { - "description": "An array of ids for the service providers.", - "nullable": false, - "type": "array", - "items": { - "type": "string" - } - }, - "version": { - "type": "number", - "description": "The version for the rolle." - } - }, - "required": [ - "serviceProviderIds", - "version" - ] - }, - "ServiceProviderTarget": { - "type": "string", - "enum": [ - "URL", - "EMAIL", - "SCHULPORTAL_ADMINISTRATION" - ] - }, - "ServiceProviderKategorie": { - "type": "string", - "enum": [ - "EMAIL", - "UNTERRICHT", - "VERWALTUNG", - "HINWEISE", - "ANGEBOTE" - ] - }, - "ServiceProviderResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "target": { - "$ref": "#/components/schemas/ServiceProviderTarget" - }, - "url": { - "type": "string", - "description": "Can be undefined, if `target` is not equal to `URL`" - }, - "kategorie": { - "$ref": "#/components/schemas/ServiceProviderKategorie" - }, - "hasLogo": { - "type": "boolean" - }, - "requires2fa": { - "type": "boolean" - } - }, - "required": [ - "id", - "name", - "target", - "url", - "kategorie", - "hasLogo", - "requires2fa" - ] - }, - "UpdateRolleBodyParams": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "merkmale": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenMerkmal" - } - }, - "systemrechte": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/components/schemas/RollenSystemRecht" - } - }, - "serviceProviderIds": { - "uniqueItems": true, - "type": "array", - "items": { - "type": "string" - } - }, - "version": { - "type": "number" - } - }, - "required": [ - "name", - "merkmale", - "systemrechte", - "serviceProviderIds", - "version" - ] - }, - "PersonResponseAutomapper": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referrer": { - "type": "string" - }, - "mandant": { - "type": "string" - }, - "name": { - "$ref": "#/components/schemas/PersonNameParams" - }, - "geburt": { - "$ref": "#/components/schemas/PersonBirthParams" - }, - "stammorganisation": { - "type": "string" - }, - "geschlecht": { - "type": "string" - }, - "lokalisierung": { - "type": "string" - }, - "vertrauensstufe": { - "$ref": "#/components/schemas/Vertrauensstufe" - }, - "revision": { - "type": "string" - }, - "startpasswort": { - "type": "string", - "description": "Initiales Benutzerpasswort, muss nach der ersten Anmeldung geändert werden" - }, - "personalnummer": { - "type": "string" - } - }, - "required": [ - "id", - "referrer", - "mandant", - "name", - "geburt", - "stammorganisation", - "geschlecht", - "lokalisierung", - "vertrauensstufe", - "revision", - "startpasswort", - "personalnummer" - ] - }, - "PersonendatensatzResponseAutomapper": { - "type": "object", - "properties": { - "person": { - "$ref": "#/components/schemas/PersonResponseAutomapper" - }, - "personenkontexte": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextResponse" - } - } - }, - "required": [ - "person", - "personenkontexte" - ] - }, - "PersonIdResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "PersonenkontextdatensatzResponse": { - "type": "object", - "properties": { - "person": { - "$ref": "#/components/schemas/PersonIdResponse" - }, - "personenkontexte": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PersonenkontextResponse" - } - } - }, - "required": [ - "person", - "personenkontexte" - ] - }, - "SystemrechtResponse": { - "type": "object", - "properties": { - "ROLLEN_VERWALTEN": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "KLASSEN_VERWALTEN": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "SCHULEN_VERWALTEN": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "PERSONEN_VERWALTEN": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "SCHULTRAEGER_VERWALTEN": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - } - }, - "required": [ - "ROLLEN_VERWALTEN", - "KLASSEN_VERWALTEN", - "SCHULEN_VERWALTEN", - "PERSONEN_VERWALTEN", - "SCHULTRAEGER_VERWALTEN" - ] - }, - "DeleteRevisionBodyParams": { - "type": "object", - "properties": { - "revision": { - "type": "string", - "description": "The revision of a personenkontext.", - "nullable": false - } - }, - "required": [ - "revision" - ] - }, - "DBiamPersonenkontextResponse": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - }, - "befristung": { - "type": "string" - } - }, - "required": [ - "personId", - "organisationId", - "rolleId", - "befristung" - ] - }, - "PersonenkontextMigrationRuntype": { - "type": "string", - "enum": [ - "ITSLEARNING", - "STANDARD" - ] - }, - "DbiamPersonenkontextMigrationBodyParams": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "username": { - "type": "string" - }, - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - }, - "befristung": { - "format": "date-time", - "type": "string" - }, - "email": { - "type": "string" - }, - "migrationRunType": { - "$ref": "#/components/schemas/PersonenkontextMigrationRuntype" - } - }, - "required": [ - "personId", - "organisationId", - "rolleId", - "migrationRunType" - ] - }, - "DbiamPersonenkontextError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "PERSONENKONTEXT_SPECIFICATION_ERROR", - "NUR_LEHR_UND_LERN_AN_KLASSE", - "GLEICHE_ROLLE_AN_KLASSE_WIE_SCHULE", - "ORGANISATION_MATCHES_ROLLENART", - "PERSONENKONTEXT_ANLAGE_ERROR", - "ROLLE_NUR_AN_PASSENDE_ORGANISATION", - "PERSONALNUMMER_NICHT_EINDEUTIG" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] - }, - "PersonenkontextWorkflowResponse": { - "type": "object", - "properties": { - "organisations": { - "description": "List of available organisations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "rollen": { - "description": "List of available roles.", - "type": "array", - "items": { - "$ref": "#/components/schemas/RolleResponse" - } - }, - "selectedOrganisation": { - "type": "string", - "description": "Selected organisation.", - "nullable": true - }, - "selectedRolle": { - "type": "string", - "description": "Selected rolle.", - "nullable": true - }, - "canCommit": { - "type": "boolean", - "description": "Indicates whether the commit action can be performed." - } - }, - "required": [ - "organisations", - "rollen", - "selectedOrganisation", - "selectedRolle", - "canCommit" - ] - }, - "DbiamPersonenkontextBodyParams": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - }, - "befristung": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "personId", - "organisationId", - "rolleId" - ] - }, - "DbiamUpdatePersonenkontexteBodyParams": { - "type": "object", - "properties": { - "lastModified": { - "format": "date-time", - "type": "string", - "nullable": true, - "description": "Date of the most recent changed personenkontext" - }, - "count": { - "type": "number", - "nullable": false, - "description": "The amount of personenkontexte" - }, - "personenkontexte": { - "nullable": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/DbiamPersonenkontextBodyParams" - } - } - }, - "required": [ - "count", - "personenkontexte" - ] - }, - "PersonenkontexteUpdateResponse": { - "type": "object", - "properties": { - "dBiamPersonenkontextResponses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DBiamPersonenkontextResponse" - } - } - }, - "required": [ - "dBiamPersonenkontextResponses" - ] - }, - "DbiamPersonenkontexteUpdateError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "PERSONENKONTEXTE_UPDATE_ERROR", - "PERSONENKONTEXT_NOT_FOUND", - "COUNT_MISMATCHING", - "NEWER_VERSION_OF_PERSONENKONTEXTE_AVAILABLE", - "INVALID_LAST_MODIFIED_VALUE", - "PERSON_ID_MISMATCH", - "PERSON_NOT_FOUND", - "INVALID_PERSONENKONTEXT_FOR_PERSON_WITH_ROLLENART_LERN", - " BEFRISTUNG_REQUIRED_FOR_PERSONENKONTEXT" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] - }, - "FindSchulstrukturknotenResponse": { - "type": "object", - "properties": { - "moeglicheSsks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrganisationResponseLegacy" - } - }, - "total": { - "type": "number" - } - }, - "required": [ - "moeglicheSsks", - "total" - ] - }, - "DbiamCreatePersonenkontextBodyParams": { - "type": "object", - "properties": { - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - } - }, - "required": [ - "organisationId", - "rolleId" - ] - }, - "DbiamCreatePersonWithPersonenkontexteBodyParams": { - "type": "object", - "properties": { - "familienname": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "personalnummer": { - "type": "string" - }, - "befristung": { - "format": "date-time", - "type": "string" - }, - "createPersonenkontexte": { - "nullable": false, - "type": "array", - "items": { - "$ref": "#/components/schemas/DbiamCreatePersonenkontextBodyParams" - } - } - }, - "required": [ - "familienname", - "vorname", - "createPersonenkontexte" - ] - }, - "DBiamPersonResponse": { - "type": "object", - "properties": { - "person": { - "$ref": "#/components/schemas/PersonResponse" - }, - "dBiamPersonenkontextResponses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DBiamPersonenkontextResponse" - } - } - }, - "required": [ - "person", - "dBiamPersonenkontextResponses" - ] - }, - "FindRollenResponse": { - "type": "object", - "properties": { - "moeglicheRollen": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RolleResponse" - } - }, - "total": { - "type": "number" - } - }, - "required": [ - "moeglicheRollen", - "total" - ] - }, - "TokenInitBodyParams": { - "type": "object", - "properties": { - "personId": { - "type": "string" - } - }, - "required": [ - "personId" - ] - }, - "TokenStateResponse": { - "type": "object", - "properties": { - "hasToken": { - "type": "boolean" - }, - "tokenKind": { - "type": "string" - }, - "serial": { - "type": "string" - } - }, - "required": [ - "hasToken", - "tokenKind", - "serial" - ] - }, - "AssignHardwareTokenBodyParams": { - "type": "object", - "properties": { - "serial": { - "type": "string" - }, - "otp": { - "type": "string" - }, - "referrer": { - "type": "string" - }, - "userId": { - "type": "string" - } - }, - "required": [ - "serial", - "otp", - "referrer", - "userId" - ] - }, - "AssignHardwareTokenResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "jsonrpc": { - "type": "string" - }, - "time": { - "type": "number" - }, - "version": { - "type": "string" - }, - "versionnumber": { - "type": "string" - }, - "signature": { - "type": "string" - }, - "dialogText": { - "type": "string" - } - }, - "required": [ - "id", - "jsonrpc", - "time", - "version", - "versionnumber", - "signature", - "dialogText" - ] - }, - "TokenVerifyBodyParams": { - "type": "object", - "properties": { - "personId": { - "type": "string" - }, - "otp": { - "type": "string" - } - }, - "required": [ - "personId", - "otp" - ] - }, - "TokenRequiredResponse": { - "type": "object", - "properties": { - "required": { - "type": "boolean" - } - }, - "required": [ - "required" - ] - }, - "DbiamPersonenkontextImportBodyParams": { - "type": "object", - "properties": { - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - }, - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "organisationId", - "rolleId", - "file" - ] - }, - "ImportDataItemResponse": { - "type": "object", - "properties": { - "nachname": { - "type": "string" - }, - "vorname": { - "type": "string" - }, - "klasse": { - "type": "string", - "nullable": true - }, - "validationErrors": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "nachname", - "vorname", - "klasse", - "validationErrors" - ] - }, - "ImportUploadResponse": { - "type": "object", - "properties": { - "importvorgangId": { - "type": "string", - "description": "The import transaction number. it will be needed to execute the import and download the result" - }, - "isValid": { - "type": "boolean", - "description": "It states if the import transaction contain errors." - }, - "totalImportDataItems": { - "type": "number", - "description": "The total number of data items in the CSV file." - }, - "totalInvalidImportDataItems": { - "type": "number", - "description": "The total number of data items in the CSV file that are invalid." - }, - "invalidImportDataItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ImportDataItemResponse" - } - } - }, - "required": [ - "importvorgangId", - "isValid", - "totalImportDataItems", - "totalInvalidImportDataItems", - "invalidImportDataItems" - ] - }, - "ImportvorgangByIdBodyParams": { - "type": "object", - "properties": { - "importvorgangId": { - "type": "string", - "description": "The id of an import transaction", - "nullable": false - }, - "organisationId": { - "type": "string" - }, - "rolleId": { - "type": "string" - } - }, - "required": [ - "importvorgangId", - "organisationId", - "rolleId" - ] - }, - "DbiamImportError": { - "type": "object", - "properties": { - "i18nKey": { - "type": "string", - "enum": [ - "IMPORT_ERROR", - "CSV_PARSING_ERROR", - "CSV_FILE_EMPTY_ERROR", - "IMPORT_TEXT_FILE_CREATION_ERROR", - "IMPORT_NUR_LERN_AN_SCHULE_ERROR", - "CSV_FILE_INVALID_HEADER_ERROR" - ] - }, - "code": { - "type": "number", - "description": "Corresponds to HTTP Status code like 200, 404, 500" - } - }, - "required": [ - "i18nKey", - "code" - ] + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextdatensatzResponse" + } + } + } + } + }, + "400": { + "description": "Request has wrong format." + }, + "401": { + "description": "Request is not authorized." + }, + "403": { + "description": "Insufficient permissions to perform operation." + }, + "404": { + "description": "The personenkontexte were not found." + }, + "500": { + "description": "An internal server error occurred." + } + }, + "tags": ["personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontexte/{personId}/hatSystemrecht": { + "get": { + "operationId": "PersonenkontextController_hatSystemRecht", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { + "nullable": false, + "type": "string" + } + }, + { + "name": "systemRecht", + "required": true, + "in": "query", + "schema": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + } + ], + "responses": { + "200": { + "description": "The SchulStrukturKnoten associated with this personId and systemrecht. Can return empty list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemrechtResponse" + } + } + } + }, + "404": { + "description": "The systemrecht could not be found (does not exist as type of systemrecht)." + } + }, + "tags": ["personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/dbiam/personenkontext/{personId}": { + "get": { + "operationId": "DBiamPersonenkontextController_findPersonenkontextsByPerson", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The ID for the person.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The personenkontexte were successfully returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DBiamPersonenkontextResponse" + } + } + } + } + }, + "401": { + "description": "Not authorized to get available personenkontexte." + }, + "403": { + "description": "Insufficient permission to get personenkontexte for this user." + }, + "500": { + "description": "Internal server error while getting personenkontexte." + } + }, + "tags": ["dbiam-personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/dbiam/personenkontext": { + "post": { + "operationId": "DBiamPersonenkontextController_createPersonenkontextMigration", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonenkontextMigrationBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "Personenkontext was successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DBiamPersonenkontextResponse" + } + } + } + }, + "400": { + "description": "The personenkontext could not be created, may due to unsatisfied specifications.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonenkontextError" + } + } + } + }, + "401": { + "description": "Not authorized to create personenkontext." + }, + "403": { + "description": "Insufficient permission to create personenkontext." + }, + "500": { + "description": "Internal server error while creating personenkontext." + } + }, + "tags": ["dbiam-personenkontexte"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontext-workflow/step": { + "get": { + "operationId": "DbiamPersonenkontextWorkflowController_processStep", + "parameters": [ + { + "name": "organisationId", + "required": false, + "in": "query", + "description": "ID of the organisation to filter the rollen later", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "rolleId", + "required": false, + "in": "query", + "description": "ID of the rolle.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "rolleName", + "required": false, + "in": "query", + "description": "Rolle name used to filter for rollen in personenkontext.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "organisationName", + "required": false, + "in": "query", + "description": "Organisation/SSK name used to filter for schulstrukturknoten in personenkontext.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The limit of items for the request.", + "schema": { + "nullable": false, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "Initialize or process data from the person creation form.\n Valid combinations:\n - Both organisationId and rolleId are undefined: Fetch all possible organisations.\n - organisationId is provided, but rolleId is undefined: Fetch Rollen for the given organisation.\n - Both organisationId and rolleId are provided: Check if the Rolle can be committed for the organisation.\n Note: Providing rolleId without organisationId is invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonenkontextWorkflowResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get available data for personenkontext." + }, + "403": { + "description": "Insufficient permission to get data for personenkontext." + }, + "500": { + "description": "Internal server error while getting data for personenkontext." + } + }, + "tags": ["personenkontext"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontext-workflow/{personId}": { + "put": { + "operationId": "DbiamPersonenkontextWorkflowController_commit", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The ID for the person.", + "schema": { + "type": "string" + } + }, + { + "name": "personalnummer", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamUpdatePersonenkontexteBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "Add or remove personenkontexte as one operation. Returns the Personenkontexte existing after update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonenkontexteUpdateResponse" + } + } + } + }, + "400": { + "description": "The personenkontexte could not be updated, may due to unsatisfied specifications.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonenkontexteUpdateError" + } + } + } + }, + "401": { + "description": "Not authorized to update personenkontexte." + }, + "403": { + "description": "Insufficient permission to update personenkontexte." + }, + "409": { + "description": "Changes are conflicting with current state of personenkontexte." + }, + "500": { + "description": "Internal server error while updating personenkontexte." + } + }, + "tags": ["personenkontext"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontext-workflow/schulstrukturknoten": { + "get": { + "operationId": "DbiamPersonenkontextWorkflowController_findSchulstrukturknoten", + "parameters": [ + { + "name": "rolleId", + "required": true, + "in": "query", + "description": "RolleId used to filter for schulstrukturknoten in personenkontext.", + "schema": { + "nullable": false, + "type": "string" + } + }, + { + "name": "sskName", + "required": false, + "in": "query", + "description": "Organisation/SSK name used to filter for schulstrukturknoten in personenkontext.", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The limit of items for the request.", + "schema": { + "nullable": false, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "The schulstrukturknoten for a personenkontext were successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindSchulstrukturknotenResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get available schulstrukturknoten for personenkontexte." + }, + "403": { + "description": "Insufficient permission to get schulstrukturknoten for personenkontext." + }, + "500": { + "description": "Internal server error while getting schulstrukturknoten for personenkontexte." + } + }, + "tags": ["personenkontext"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/personenkontext-workflow": { + "post": { + "operationId": "DbiamPersonenkontextWorkflowController_createPersonWithPersonenkontexte", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamCreatePersonWithPersonenkontexteBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "Person with Personenkontext was successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DBiamPersonResponse" + } + } + } + }, + "400": { + "description": "The person and the personenkontext could not be created, may due to unsatisfied specifications.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonenkontextError" + } + } + } + }, + "401": { + "description": "Not authorized to create person with personenkontext." + }, + "403": { + "description": "Insufficient permission to create person with personenkontext." + }, + "500": { + "description": "Internal server error while creating person with personenkontext." + } + }, + "tags": ["personenkontext"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/person-administration/rollen": { + "get": { + "operationId": "PersonAdministrationController_findRollen", + "parameters": [ + { + "name": "rolleName", + "required": false, + "in": "query", + "description": "Rolle name used to filter for rollen in personenkontext.", + "schema": { + "nullable": false, + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The limit of items for the request.", + "schema": { + "nullable": false, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "The rollen for the logged-in user were successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindRollenResponse" + } + } + } + }, + "401": { + "description": "Not authorized to get available rollen for the logged-in user." + }, + "403": { + "description": "Insufficient permission to get rollen for the logged-in user." + }, + "500": { + "description": "Internal server error while getting rollen for the logged-in user." + } + }, + "tags": ["person-administration"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/init": { + "post": { + "operationId": "PrivacyIdeaAdministrationController_initializeSoftwareToken", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenInitBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "The token was successfully created.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "A username was not given or not found." + }, + "401": { + "description": "Not authorized to create token." + }, + "403": { + "description": "Insufficient permissions to create token." + }, + "404": { + "description": "Insufficient permissions to create token." + }, + "500": { + "description": "Internal server error while creating a token." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/state": { + "get": { + "operationId": "PrivacyIdeaAdministrationController_getTwoAuthState", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "The token state was successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenStateResponse" + } + } + } + }, + "400": { + "description": "A username was not given or not found." + }, + "401": { + "description": "Not authorized to get token state." + }, + "403": { + "description": "Insufficient permissions to get token state." + }, + "404": { + "description": "Insufficient permissions to get token state." + }, + "500": { + "description": "Internal server error while retrieving token state." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/reset": { + "put": { + "operationId": "PrivacyIdeaAdministrationController_resetToken", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "The token was successfully reset.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "A username was not given or not found." + }, + "401": { + "description": "Not authorized to reset token." + }, + "403": { + "description": "Insufficient permissions to reset token." + }, + "404": { + "description": "Insufficient permissions to reset token." + }, + "500": { + "description": "Internal server error while reseting a token." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/assign/hardwareToken": { + "post": { + "operationId": "PrivacyIdeaAdministrationController_assignHardwareToken", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignHardwareTokenBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "The hardware token was successfully assigned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignHardwareTokenResponse" + } + } + } + }, + "400": { + "description": "Not found." + }, + "401": { + "description": "Not authorized to assign hardware token." + }, + "403": { + "description": "Insufficient permissions to reset token." + }, + "404": { + "description": "Insufficient permissions to assign hardware token." + }, + "500": { + "description": "Internal server error while assigning a hardware token." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/verify": { + "post": { + "operationId": "PrivacyIdeaAdministrationController_verifyToken", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenVerifyBodyParams" + } + } + } + }, + "responses": { + "201": { + "description": "The token was successfully verified." + }, + "400": { + "description": "A username was not given or not found." + }, + "401": { + "description": "Not authorized to verify token." + }, + "403": { + "description": "Insufficient permissions to verify token." + }, + "404": { + "description": "Insufficient permissions to verify token." + }, + "500": { + "description": "Internal server error while verifying a token." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/2fa-token/required": { + "get": { + "operationId": "PrivacyIdeaAdministrationController_requiresTwoFactorAuthentication", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The requirement was successfully returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenRequiredResponse" + } + } + } + }, + "400": { + "description": "A username was not given or not found." + }, + "401": { + "description": "Not authorized to get requirement information." + }, + "403": { + "description": "Insufficient permissions to get requirement information." + }, + "404": { + "description": "Insufficient permissions to get requirement information." + }, + "500": { + "description": "Internal server error while getting requirement information." + } + }, + "tags": ["2FA"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/cron/kopers-lock": { + "put": { + "operationId": "CronController_koPersUserLock", + "parameters": [], + "responses": { + "201": { + "description": "User were successfully locked.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "User are not given or not found" + }, + "401": { + "description": "Not authorized to lock user." + }, + "403": { + "description": "Insufficient permissions to lock user." + }, + "404": { + "description": "Insufficient permissions to lock user." + }, + "500": { + "description": "Internal server error while trying to lock user." + } + }, + "tags": ["cron"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/cron/kontext-expired": { + "put": { + "operationId": "CronController_removePersonenKontexteWithExpiredBefristungFromUsers", + "parameters": [], + "responses": { + "201": { + "description": "Personenkontexte were successfully removed from users.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Personenkontexte are not given or not found." + }, + "401": { + "description": "Not authorized to remove personenkontexte from users." + }, + "403": { + "description": "Insufficient permissions to remove personenkontexte from users." + }, + "404": { + "description": "Insufficient permissions to remove personenkontexte from users." + }, + "500": { + "description": "Internal server error while trying to remove personenkontexte from users." + } + }, + "tags": ["cron"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/cron/person-without-org": { + "put": { + "operationId": "CronController_personWithoutOrgDelete", + "parameters": [], + "responses": { + "201": { + "description": "User were successfully removed.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "User are not given or not found" + }, + "401": { + "description": "Not authorized to remove user." + }, + "403": { + "description": "Insufficient permissions to delete user." + }, + "404": { + "description": "Insufficient permissions to delete user." + }, + "500": { + "description": "Internal server error while trying to remove user." + } + }, + "tags": ["cron"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/cron/unlock": { + "put": { + "operationId": "CronController_unlockUsersWithExpiredLocks", + "parameters": [], + "responses": { + "200": { + "description": "The users were successfully unlocked.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "401": { + "description": "Not authorized to unlock users." + }, + "403": { + "description": "Insufficient permissions to unlock users." + }, + "404": { + "description": "Insufficient permissions to unlock users." + }, + "500": { + "description": "Internal server error while trying to unlock users." + } + }, + "tags": ["cron"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/import/upload": { + "post": { + "operationId": "ImportController_uploadFile", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/DbiamPersonenkontextImportBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "Returns an import upload response object.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportUploadResponse" + } + } + } + }, + "400": { + "description": "The CSV file was not valid." + }, + "401": { + "description": "Not authorized to import data with a CSV file." + }, + "403": { + "description": "Insufficient permissions to import data with a CSV file." + }, + "500": { + "description": "Internal server error while importing data with a CSV file." + } + }, + "tags": ["import"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/import/execute": { + "post": { + "operationId": "ImportController_executeImport", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportvorgangByIdBodyParams" + } + } + } + }, + "responses": { + "200": { + "description": "Import transaction was executed successfully. The text file can be downloaded", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Something went wrong with the found import transaction.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DbiamImportError" + } + } + } + }, + "401": { + "description": "Not authorized to execute the import transaction." + }, + "403": { + "description": "Insufficient permissions to execute the import transaction." + }, + "404": { + "description": "The import transaction does not exist." + }, + "500": { + "description": "Internal server error while executing the import transaction." + } + }, + "tags": ["import"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/import/{importvorgangId}": { + "delete": { + "operationId": "ImportController_deleteImportTransaction", + "summary": "", + "description": "Delete a role by id.", + "parameters": [ + { + "name": "importvorgangId", + "required": true, + "in": "path", + "description": "The id of an import transaction", + "schema": { + "nullable": false, + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Import transaction was deleted successfully." + }, + "400": { + "description": "Something went wrong with the found import transaction.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DbiamImportError" + } + } + } + }, + "401": { + "description": "Not authorized to delete the import transaction." + }, + "404": { + "description": "The import transaction that should be deleted does not exist." + } + }, + "tags": ["import"], + "security": [ + { + "oauth2": ["openid"] + }, + { + "bearer": [] + } + ] + } + }, + "/api/status": { + "get": { + "operationId": "StatusController_getStatus", + "parameters": [], + "responses": { + "200": { + "description": "" + } + }, + "tags": ["status"] + } + } + }, + "info": { + "title": "dBildungs IAM", + "description": "The dBildungs IAM server API description", + "version": "1.0", + "contact": {} + }, + "tags": [], + "servers": [], + "components": { + "securitySchemes": { + "oauth2": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/auth", + "tokenUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/token", + "refreshUrl": "http://localhost:8080/realms/SPSH/protocol/openid-connect/token", + "scopes": {} + } + } + }, + "bearer": { + "scheme": "bearer", + "bearerFormat": "JWT", + "type": "http" + } + }, + "schemas": { + "RollenSystemRechtServiceProviderIDResponse": { + "type": "object", + "properties": { + "systemrechte": { + "type": "array", + "items": { + "type": "string" + } + }, + "serviceProviderIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["systemrechte", "serviceProviderIds"] + }, + "PersonenkontextRolleFieldsResponse": { + "type": "object", + "properties": { + "organisationsId": { + "type": "string" + }, + "rolle": { + "$ref": "#/components/schemas/RollenSystemRechtServiceProviderIDResponse" + } + }, + "required": ["organisationsId", "rolle"] + }, + "PersonTimeLimitInfoResponse": { + "type": "object", + "properties": { + "occasion": { + "type": "string", + "nullable": true + }, + "deadline": { + "type": "string", + "nullable": true + } + }, + "required": ["occasion", "deadline"] + }, + "UserinfoResponse": { + "type": "object", + "properties": { + "sub": { + "type": "string" + }, + "personId": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "given_name": { + "type": "string", + "nullable": true + }, + "family_name": { + "type": "string", + "nullable": true + }, + "middle_name": { + "type": "string", + "nullable": true + }, + "nickname": { + "type": "string", + "nullable": true + }, + "preferred_username": { + "type": "string", + "nullable": true + }, + "profile": { + "type": "string", + "nullable": true + }, + "picture": { + "type": "string", + "nullable": true + }, + "website": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "email_verified": { + "type": "boolean", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "birthdate": { + "type": "string", + "nullable": true + }, + "zoneinfo": { + "type": "string", + "nullable": true + }, + "locale": { + "type": "string", + "nullable": true + }, + "phone_number": { + "type": "string", + "nullable": true + }, + "updated_at": { + "type": "string", + "nullable": true + }, + "password_updated_at": { + "type": "string", + "nullable": true + }, + "personenkontexte": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextRolleFieldsResponse" + } + }, + "acr": { + "type": "string", + "nullable": false + }, + "timeLimits": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonTimeLimitInfoResponse" + } + } + }, + "required": [ + "sub", + "personId", + "name", + "given_name", + "family_name", + "middle_name", + "nickname", + "preferred_username", + "profile", + "picture", + "website", + "email", + "email_verified", + "gender", + "birthdate", + "zoneinfo", + "locale", + "phone_number", + "updated_at", + "password_updated_at", + "personenkontexte", + "acr", + "timeLimits" + ] + }, + "CreatePersonMigrationBodyParams": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "familienname": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "hashedPassword": { + "type": "string" + }, + "username": { + "type": "string" + }, + "personalnummer": { + "type": "string" + } + }, + "required": ["personId", "familienname", "vorname"] + }, + "PersonNameParams": { + "type": "object", + "properties": { + "familienname": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "initialenfamilienname": { + "type": "string" + }, + "initialenvorname": { + "type": "string" + }, + "rufname": { + "type": "string" + }, + "titel": { + "type": "string" + }, + "anrede": { + "type": "array", + "items": { + "type": "string" + } + }, + "namenssuffix": { + "type": "array", + "items": { + "type": "string" } + }, + "namenspraefix": { + "type": "array", + "items": { + "type": "string" + } + }, + "sortierindex": { + "type": "string" + } + }, + "required": ["familienname", "vorname"] + }, + "PersonBirthParams": { + "type": "object", + "properties": { + "datum": { + "format": "date-time", + "type": "string" + }, + "geburtsort": { + "type": "string" + } } + }, + "Vertrauensstufe": { + "type": "string", + "enum": ["KEIN", "UNBE", "TEIL", "VOLL"] + }, + "UserLockParams": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "nullable": true + }, + "locked_by": { + "type": "string", + "nullable": true + }, + "created_at": { + "type": "string", + "nullable": true + }, + "locked_until": { + "type": "string", + "nullable": true + }, + "lock_occasion": { + "type": "string", + "nullable": true + } + }, + "required": ["personId", "locked_by", "created_at", "locked_until", "lock_occasion"] + }, + "EmailAddressStatus": { + "type": "string", + "enum": ["ENABLED", "DISABLED", "REQUESTED", "FAILED"] + }, + "PersonEmailResponse": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/EmailAddressStatus" + }, + "address": { + "type": "string" + } + }, + "required": ["status", "address"] + }, + "PersonResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referrer": { + "type": "string", + "nullable": true + }, + "mandant": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/PersonNameParams" + }, + "geburt": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/PersonBirthParams" + } + ] + }, + "stammorganisation": { + "type": "string", + "nullable": true + }, + "geschlecht": { + "type": "string", + "nullable": true + }, + "lokalisierung": { + "type": "string", + "nullable": true + }, + "vertrauensstufe": { + "nullable": true, + "$ref": "#/components/schemas/Vertrauensstufe" + }, + "revision": { + "type": "string" + }, + "startpasswort": { + "type": "string", + "description": "Initiales Benutzerpasswort, muss nach der ersten Anmeldung geändert werden" + }, + "personalnummer": { + "type": "string", + "nullable": true + }, + "isLocked": { + "type": "boolean", + "nullable": true + }, + "userLock": { + "nullable": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/UserLockParams" + } + }, + "lastModified": { + "format": "date-time", + "type": "string", + "description": "Date of the most recent changes for the person" + }, + "email": { + "nullable": true, + "description": "Contains status and address. Returns email-address verified by OX (enabled) if available, otherwise returns most recently updated one (no prioritized status)", + "allOf": [ + { + "$ref": "#/components/schemas/PersonEmailResponse" + } + ] + } + }, + "required": [ + "id", + "referrer", + "mandant", + "name", + "geburt", + "stammorganisation", + "geschlecht", + "lokalisierung", + "vertrauensstufe", + "revision", + "startpasswort", + "personalnummer", + "isLocked", + "userLock", + "lastModified", + "email" + ] + }, + "PersonendatensatzResponse": { + "type": "object", + "properties": { + "person": { + "$ref": "#/components/schemas/PersonResponse" + } + }, + "required": ["person"] + }, + "RawPagedResponse": { + "type": "object", + "properties": { + "total": { + "type": "number" + }, + "offset": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "items": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["total", "offset", "limit", "items"] + }, + "CreatedPersonenkontextOrganisation": { + "type": "object", + "properties": {} + }, + "LoeschungResponse": { + "type": "object", + "properties": { + "zeitpunkt": { + "format": "date-time", + "type": "string" + } + }, + "required": ["zeitpunkt"] + }, + "PersonenkontextResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referrer": { + "type": "string", + "nullable": true + }, + "mandant": { + "type": "string" + }, + "organisation": { + "$ref": "#/components/schemas/CreatedPersonenkontextOrganisation" + }, + "rollenart": { + "type": "string", + "nullable": true + }, + "rollenname": { + "type": "string", + "nullable": true + }, + "personenstatus": { + "type": "string", + "enum": ["AKTIV"], + "nullable": true + }, + "jahrgangsstufe": { + "type": "string", + "enum": ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10"], + "nullable": true + }, + "sichtfreigabe": { + "type": "string", + "enum": ["ja", "nein"], + "nullable": true + }, + "loeschung": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/LoeschungResponse" + } + ] + }, + "revision": { + "type": "string" + } + }, + "required": [ + "id", + "referrer", + "mandant", + "organisation", + "rollenart", + "rollenname", + "personenstatus", + "jahrgangsstufe", + "sichtfreigabe", + "loeschung", + "revision" + ] + }, + "Personenstatus": { + "type": "string", + "enum": ["AKTIV"] + }, + "Sichtfreigabe": { + "type": "string", + "enum": ["ja", "nein"] + }, + "Geschlecht": { + "type": "string", + "enum": ["m", "w", "d", "x"] + }, + "UpdatePersonBodyParams": { + "type": "object", + "properties": { + "referrer": { + "type": "string" + }, + "stammorganisation": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/PersonNameParams" + }, + "geburt": { + "$ref": "#/components/schemas/PersonBirthParams" + }, + "geschlecht": { + "$ref": "#/components/schemas/Geschlecht" + }, + "lokalisierung": { + "type": "string" + }, + "vertrauensstufe": { + "$ref": "#/components/schemas/Vertrauensstufe" + }, + "auskunftssperre": { + "type": "boolean" + }, + "revision": { + "type": "string" + } + }, + "required": ["name", "revision"] + }, + "LockUserBodyParams": { + "type": "object", + "properties": { + "lock": { + "type": "boolean", + "nullable": false + }, + "locked_by": { + "type": "string", + "nullable": false + }, + "locked_until": { + "format": "date-time", + "type": "string", + "description": "Required if Befristung is set" + } + }, + "required": ["lock", "locked_by"] + }, + "PersonLockResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"] + }, + "PersonMetadataBodyParams": { + "type": "object", + "properties": { + "familienname": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "personalnummer": { + "type": "string" + }, + "lastModified": { + "format": "date-time", + "type": "string", + "description": "Date of the most recent changed Personalnummer" + }, + "revision": { + "type": "string" + } + }, + "required": ["familienname", "vorname", "lastModified", "revision"] + }, + "DbiamPersonError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "PERSON_ERROR", + "VORNAME_ENTHAELT_LEERZEICHEN", + "FAMILIENNAME_ENTHAELT_LEERZEICHEN", + "PERSON_NOT_FOUND", + "DOWNSTREAM_UNREACHABLE", + "PERSONALNUMMER_REQUIRED", + "NEWER_VERSION_OF_PERSON_AVAILABLE", + "PERSONALNUMMER_NICHT_EINDEUTIG" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + }, + "OrganisationsTyp": { + "type": "string", + "enum": [ + "ROOT", + "LAND", + "TRAEGER", + "SCHULE", + "KLASSE", + "ANBIETER", + "SONSTIGE ORGANISATION / EINRICHTUNG", + "UNBESTAETIGT" + ] + }, + "RollenMerkmal": { + "type": "string", + "enum": ["BEFRISTUNG_PFLICHT", "KOPERS_PFLICHT"] + }, + "DBiamPersonenzuordnungResponse": { + "type": "object", + "properties": { + "sskId": { + "type": "string" + }, + "rolleId": { + "type": "string" + }, + "sskName": { + "type": "string" + }, + "sskDstNr": { + "type": "string" + }, + "rolle": { + "type": "string" + }, + "administriertVon": { + "type": "string" + }, + "typ": { + "nullable": true, + "$ref": "#/components/schemas/OrganisationsTyp" + }, + "editable": { + "type": "boolean" + }, + "befristung": { + "format": "date-time", + "type": "string" + }, + "merkmale": { + "nullable": true, + "$ref": "#/components/schemas/RollenMerkmal" + } + }, + "required": [ + "sskId", + "rolleId", + "sskName", + "sskDstNr", + "rolle", + "administriertVon", + "typ", + "editable", + "befristung", + "merkmale" + ] + }, + "DBiamPersonenuebersichtResponse": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "nachname": { + "type": "string" + }, + "benutzername": { + "type": "string" + }, + "lastModifiedZuordnungen": { + "format": "date-time", + "type": "string", + "nullable": true, + "description": "Date of the most recent changed personenkontext in the Zuordnungen" + }, + "zuordnungen": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DBiamPersonenzuordnungResponse" + } + } + }, + "required": ["personId", "vorname", "nachname", "benutzername", "lastModifiedZuordnungen", "zuordnungen"] + }, + "PersonenuebersichtBodyParams": { + "type": "object", + "properties": { + "personIds": { + "description": "An array of IDs for the persons.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["personIds"] + }, + "PersonNameResponse": { + "type": "object", + "properties": { + "familiennamen": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "initialenfamilienname": { + "type": "string", + "nullable": true + }, + "initialenvorname": { + "type": "string", + "nullable": true + }, + "rufname": { + "type": "string", + "nullable": true + }, + "titel": { + "type": "string", + "nullable": true + }, + "anrede": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + } + }, + "namenspraefix": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + } + }, + "namenssuffix": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + } + }, + "sortierindex": { + "type": "string", + "nullable": true + } + }, + "required": [ + "familiennamen", + "vorname", + "initialenfamilienname", + "initialenvorname", + "rufname", + "titel", + "anrede", + "namenspraefix", + "namenssuffix", + "sortierindex" + ] + }, + "PersonBirthResponse": { + "type": "object", + "properties": { + "datum": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "geburtsort": { + "type": "string", + "nullable": true + } + }, + "required": ["datum", "geburtsort"] + }, + "Person": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referrer": { + "type": "string", + "nullable": true + }, + "mandant": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/PersonNameResponse" + }, + "geburt": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/PersonBirthResponse" + } + ] + }, + "stammorganisation": { + "type": "string", + "nullable": true + }, + "geschlecht": { + "type": "string", + "nullable": true + }, + "lokalisierung": { + "type": "string", + "nullable": true + }, + "vertrauensstufe": { + "nullable": true, + "$ref": "#/components/schemas/Vertrauensstufe" + }, + "revision": { + "type": "string" + }, + "personalnummer": { + "type": "string", + "nullable": true + }, + "dienststellen": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "id", + "referrer", + "mandant", + "name", + "geburt", + "stammorganisation", + "geschlecht", + "lokalisierung", + "vertrauensstufe", + "revision", + "personalnummer", + "dienststellen" + ] + }, + "PersonInfoResponse": { + "type": "object", + "properties": { + "pid": { + "type": "string" + }, + "person": { + "$ref": "#/components/schemas/Person" + }, + "personenkontexte": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextResponse" + } + }, + "gruppen": { + "type": "array", + "items": { + "type": "string" + } + }, + "email": { + "nullable": true, + "description": "Contains status and address. Returns email-address verified by OX (enabled) if available, otherwise returns most recently updated one (no prioritized status)", + "allOf": [ + { + "$ref": "#/components/schemas/PersonEmailResponse" + } + ] + } + }, + "required": ["pid", "person", "personenkontexte", "gruppen", "email"] + }, + "TraegerschaftTyp": { + "type": "string", + "enum": ["01", "02", "03", "04", "05", "06"] + }, + "CreateOrganisationBodyParams": { + "type": "object", + "properties": { + "administriertVon": { + "type": "string" + }, + "zugehoerigZu": { + "type": "string" + }, + "kennung": { + "type": "string", + "description": "Required, if `typ` is equal to `SCHULE`" + }, + "name": { + "type": "string" + }, + "namensergaenzung": { + "type": "string" + }, + "kuerzel": { + "type": "string" + }, + "typ": { + "$ref": "#/components/schemas/OrganisationsTyp" + }, + "traegerschaft": { + "$ref": "#/components/schemas/TraegerschaftTyp" + }, + "emailAdress": { + "type": "string" + } + }, + "required": ["name", "typ"] + }, + "OrganisationResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "administriertVon": { + "type": "string", + "nullable": true + }, + "kennung": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string" + }, + "namensergaenzung": { + "type": "string", + "nullable": true + }, + "kuerzel": { + "type": "string" + }, + "typ": { + "$ref": "#/components/schemas/OrganisationsTyp" + }, + "traegerschaft": { + "$ref": "#/components/schemas/TraegerschaftTyp" + }, + "itslearningEnabled": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "required": [ + "id", + "administriertVon", + "kennung", + "name", + "namensergaenzung", + "kuerzel", + "typ", + "traegerschaft", + "itslearningEnabled", + "version" + ] + }, + "DbiamOrganisationError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "ORGANISATION_SPECIFICATION_ERROR", + "KENNUNG_REQUIRED_FOR_SCHULE", + "NAME_REQUIRED_FOR_SCHULE", + "SCHULE_KENNUNG_EINDEUTIG", + "SCHULE_UNTER_TRAEGER", + "TRAEGER_IN_TRAEGER", + "NUR_KLASSE_UNTER_SCHULE", + "ZYKLUS_IN_ORGANISATION", + "ROOT_ORGANISATION_IMMUTABLE", + "KLASSE_NUR_VON_SCHULE_ADMINISTRIERT", + "KLASSENNAME_AN_SCHULE_EINDEUTIG", + "ORGANISATION_IST_BEREITS_ZUGEWIESEN_ERROR", + "NAME_REQUIRED_FOR_KLASSE", + "NAME_ENTHAELT_LEERZEICHEN", + "KENNUNG_ENTHAELT_LEERZEICHEN", + "EMAIL_ADRESS_ON_ORGANISATION_TYP", + "NEWER_VERSION_ORGANISATION" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + }, + "UpdateOrganisationBodyParams": { + "type": "object", + "properties": { + "administriertVon": { + "type": "string" + }, + "zugehoerigZu": { + "type": "string" + }, + "kennung": { + "type": "string", + "description": "Required, if `typ` is equal to `SCHULE`" + }, + "name": { + "type": "string" + }, + "namensergaenzung": { + "type": "string" + }, + "kuerzel": { + "type": "string" + }, + "typ": { + "$ref": "#/components/schemas/OrganisationsTyp" + }, + "traegerschaft": { + "$ref": "#/components/schemas/TraegerschaftTyp" + }, + "emailAdress": { + "type": "string" + } + }, + "required": ["name", "typ"] + }, + "OrganisationRootChildrenResponse": { + "type": "object", + "properties": { + "oeffentlich": { + "$ref": "#/components/schemas/OrganisationResponse" + }, + "ersatz": { + "$ref": "#/components/schemas/OrganisationResponse" + } + }, + "required": ["oeffentlich", "ersatz"] + }, + "ParentOrganisationsByIdsBodyParams": { + "type": "object", + "properties": { + "organisationIds": { + "description": "The ids of organizations", + "nullable": false, + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["organisationIds"] + }, + "ParentOrganisationenResponse": { + "type": "object", + "properties": { + "parents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponse" + } + } + }, + "required": ["parents"] + }, + "RollenSystemRecht": { + "type": "string", + "enum": [ + "ROLLEN_VERWALTEN", + "PERSONEN_SOFORT_LOESCHEN", + "PERSONEN_VERWALTEN", + "SCHULEN_VERWALTEN", + "KLASSEN_VERWALTEN", + "SCHULTRAEGER_VERWALTEN", + "MIGRATION_DURCHFUEHREN", + "PERSON_SYNCHRONISIEREN", + "CRON_DURCHFUEHREN", + "PERSONEN_ANLEGEN", + "IMPORT_DURCHFUEHREN" + ] + }, + "OrganisationByIdBodyParams": { + "type": "object", + "properties": { + "organisationId": { + "type": "string", + "description": "The id of an organization", + "nullable": false + } + }, + "required": ["organisationId"] + }, + "OrganisationByNameBodyParams": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "number", + "description": "The version for the organisation." + } + }, + "required": ["name", "version"] + }, + "OrganisationResponseLegacy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "administriertVon": { + "type": "string", + "nullable": true + }, + "kennung": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string" + }, + "namensergaenzung": { + "type": "string", + "nullable": true + }, + "kuerzel": { + "type": "string" + }, + "typ": { + "$ref": "#/components/schemas/OrganisationsTyp" + } + }, + "required": ["id", "administriertVon", "kennung", "name", "namensergaenzung", "kuerzel", "typ"] + }, + "RollenArt": { + "type": "string", + "enum": ["LERN", "LEHR", "EXTERN", "ORGADMIN", "LEIT", "SYSADMIN"] + }, + "ServiceProviderIdNameResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["id", "name"] + }, + "RolleWithServiceProvidersResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "name": { + "type": "string" + }, + "administeredBySchulstrukturknoten": { + "type": "string" + }, + "rollenart": { + "$ref": "#/components/schemas/RollenArt" + }, + "merkmale": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenMerkmal" + } + }, + "systemrechte": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + }, + "administeredBySchulstrukturknotenName": { + "type": "string", + "nullable": true + }, + "administeredBySchulstrukturknotenKennung": { + "type": "string", + "nullable": true + }, + "version": { + "type": "number" + }, + "serviceProviders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceProviderIdNameResponse" + } + } + }, + "required": [ + "id", + "createdAt", + "updatedAt", + "name", + "administeredBySchulstrukturknoten", + "rollenart", + "merkmale", + "systemrechte", + "administeredBySchulstrukturknotenName", + "administeredBySchulstrukturknotenKennung", + "version", + "serviceProviders" + ] + }, + "CreateRolleBodyParams": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "administeredBySchulstrukturknoten": { + "type": "string" + }, + "rollenart": { + "$ref": "#/components/schemas/RollenArt" + }, + "merkmale": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenMerkmal" + } + }, + "systemrechte": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + } + }, + "required": ["name", "administeredBySchulstrukturknoten", "rollenart", "merkmale", "systemrechte"] + }, + "RolleResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "name": { + "type": "string" + }, + "administeredBySchulstrukturknoten": { + "type": "string" + }, + "rollenart": { + "$ref": "#/components/schemas/RollenArt" + }, + "merkmale": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenMerkmal" + } + }, + "systemrechte": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + }, + "administeredBySchulstrukturknotenName": { + "type": "string", + "nullable": true + }, + "administeredBySchulstrukturknotenKennung": { + "type": "string", + "nullable": true + }, + "version": { + "type": "number" + } + }, + "required": [ + "id", + "createdAt", + "updatedAt", + "name", + "administeredBySchulstrukturknoten", + "rollenart", + "merkmale", + "systemrechte", + "administeredBySchulstrukturknotenName", + "administeredBySchulstrukturknotenKennung", + "version" + ] + }, + "DbiamRolleError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "ROLLE_ERROR", + "ADD_SYSTEMRECHT_ERROR", + "ROLLE_HAT_PERSONENKONTEXTE_ERROR", + "UPDATE_MERKMALE_ERROR", + "ROLLENNAME_ENTHAELT_LEERZEICHEN", + "NEWER_VERSION_OF_ROLLE_AVAILABLE", + "ROLLE_NAME_UNIQUE_ON_SSK" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + }, + "AddSystemrechtBodyParams": { + "type": "object", + "properties": { + "systemRecht": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + }, + "required": ["systemRecht"] + }, + "RolleServiceProviderResponse": { + "type": "object", + "properties": { + "serviceProviderIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["serviceProviderIds"] + }, + "RolleServiceProviderBodyParams": { + "type": "object", + "properties": { + "serviceProviderIds": { + "description": "An array of ids for the service providers.", + "nullable": false, + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "type": "number", + "description": "The version for the rolle." + } + }, + "required": ["serviceProviderIds", "version"] + }, + "ServiceProviderTarget": { + "type": "string", + "enum": ["URL", "EMAIL", "SCHULPORTAL_ADMINISTRATION"] + }, + "ServiceProviderKategorie": { + "type": "string", + "enum": ["EMAIL", "UNTERRICHT", "VERWALTUNG", "HINWEISE", "ANGEBOTE"] + }, + "ServiceProviderResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "target": { + "$ref": "#/components/schemas/ServiceProviderTarget" + }, + "url": { + "type": "string", + "description": "Can be undefined, if `target` is not equal to `URL`" + }, + "kategorie": { + "$ref": "#/components/schemas/ServiceProviderKategorie" + }, + "hasLogo": { + "type": "boolean" + }, + "requires2fa": { + "type": "boolean" + } + }, + "required": ["id", "name", "target", "url", "kategorie", "hasLogo", "requires2fa"] + }, + "UpdateRolleBodyParams": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "merkmale": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenMerkmal" + } + }, + "systemrechte": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/RollenSystemRecht" + } + }, + "serviceProviderIds": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "type": "number" + } + }, + "required": ["name", "merkmale", "systemrechte", "serviceProviderIds", "version"] + }, + "PersonResponseAutomapper": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referrer": { + "type": "string" + }, + "mandant": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/PersonNameParams" + }, + "geburt": { + "$ref": "#/components/schemas/PersonBirthParams" + }, + "stammorganisation": { + "type": "string" + }, + "geschlecht": { + "type": "string" + }, + "lokalisierung": { + "type": "string" + }, + "vertrauensstufe": { + "$ref": "#/components/schemas/Vertrauensstufe" + }, + "revision": { + "type": "string" + }, + "startpasswort": { + "type": "string", + "description": "Initiales Benutzerpasswort, muss nach der ersten Anmeldung geändert werden" + }, + "personalnummer": { + "type": "string" + } + }, + "required": [ + "id", + "referrer", + "mandant", + "name", + "geburt", + "stammorganisation", + "geschlecht", + "lokalisierung", + "vertrauensstufe", + "revision", + "startpasswort", + "personalnummer" + ] + }, + "PersonendatensatzResponseAutomapper": { + "type": "object", + "properties": { + "person": { + "$ref": "#/components/schemas/PersonResponseAutomapper" + }, + "personenkontexte": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextResponse" + } + } + }, + "required": ["person", "personenkontexte"] + }, + "PersonIdResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"] + }, + "PersonenkontextdatensatzResponse": { + "type": "object", + "properties": { + "person": { + "$ref": "#/components/schemas/PersonIdResponse" + }, + "personenkontexte": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PersonenkontextResponse" + } + } + }, + "required": ["person", "personenkontexte"] + }, + "SystemrechtResponse": { + "type": "object", + "properties": { + "ROLLEN_VERWALTEN": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "KLASSEN_VERWALTEN": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "SCHULEN_VERWALTEN": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "PERSONEN_VERWALTEN": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "SCHULTRAEGER_VERWALTEN": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + } + }, + "required": [ + "ROLLEN_VERWALTEN", + "KLASSEN_VERWALTEN", + "SCHULEN_VERWALTEN", + "PERSONEN_VERWALTEN", + "SCHULTRAEGER_VERWALTEN" + ] + }, + "DeleteRevisionBodyParams": { + "type": "object", + "properties": { + "revision": { + "type": "string", + "description": "The revision of a personenkontext.", + "nullable": false + } + }, + "required": ["revision"] + }, + "DBiamPersonenkontextResponse": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + }, + "befristung": { + "type": "string" + } + }, + "required": ["personId", "organisationId", "rolleId", "befristung"] + }, + "PersonenkontextMigrationRuntype": { + "type": "string", + "enum": ["ITSLEARNING", "STANDARD"] + }, + "DbiamPersonenkontextMigrationBodyParams": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + }, + "befristung": { + "format": "date-time", + "type": "string" + }, + "email": { + "type": "string" + }, + "migrationRunType": { + "$ref": "#/components/schemas/PersonenkontextMigrationRuntype" + } + }, + "required": ["personId", "organisationId", "rolleId", "migrationRunType"] + }, + "DbiamPersonenkontextError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "PERSONENKONTEXT_SPECIFICATION_ERROR", + "NUR_LEHR_UND_LERN_AN_KLASSE", + "GLEICHE_ROLLE_AN_KLASSE_WIE_SCHULE", + "ORGANISATION_MATCHES_ROLLENART", + "PERSONENKONTEXT_ANLAGE_ERROR", + "ROLLE_NUR_AN_PASSENDE_ORGANISATION", + "PERSONALNUMMER_NICHT_EINDEUTIG" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + }, + "PersonenkontextWorkflowResponse": { + "type": "object", + "properties": { + "organisations": { + "description": "List of available organisations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "rollen": { + "description": "List of available roles.", + "type": "array", + "items": { + "$ref": "#/components/schemas/RolleResponse" + } + }, + "selectedOrganisation": { + "type": "string", + "description": "Selected organisation.", + "nullable": true + }, + "selectedRolle": { + "type": "string", + "description": "Selected rolle.", + "nullable": true + }, + "canCommit": { + "type": "boolean", + "description": "Indicates whether the commit action can be performed." + } + }, + "required": ["organisations", "rollen", "selectedOrganisation", "selectedRolle", "canCommit"] + }, + "DbiamPersonenkontextBodyParams": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + }, + "befristung": { + "format": "date-time", + "type": "string" + } + }, + "required": ["personId", "organisationId", "rolleId"] + }, + "DbiamUpdatePersonenkontexteBodyParams": { + "type": "object", + "properties": { + "lastModified": { + "format": "date-time", + "type": "string", + "nullable": true, + "description": "Date of the most recent changed personenkontext" + }, + "count": { + "type": "number", + "nullable": false, + "description": "The amount of personenkontexte" + }, + "personenkontexte": { + "nullable": false, + "type": "array", + "items": { + "$ref": "#/components/schemas/DbiamPersonenkontextBodyParams" + } + } + }, + "required": ["count", "personenkontexte"] + }, + "PersonenkontexteUpdateResponse": { + "type": "object", + "properties": { + "dBiamPersonenkontextResponses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DBiamPersonenkontextResponse" + } + } + }, + "required": ["dBiamPersonenkontextResponses"] + }, + "DbiamPersonenkontexteUpdateError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "PERSONENKONTEXTE_UPDATE_ERROR", + "PERSONENKONTEXT_NOT_FOUND", + "COUNT_MISMATCHING", + "NEWER_VERSION_OF_PERSONENKONTEXTE_AVAILABLE", + "INVALID_LAST_MODIFIED_VALUE", + "PERSON_ID_MISMATCH", + "PERSON_NOT_FOUND", + "INVALID_PERSONENKONTEXT_FOR_PERSON_WITH_ROLLENART_LERN", + " BEFRISTUNG_REQUIRED_FOR_PERSONENKONTEXT" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + }, + "FindSchulstrukturknotenResponse": { + "type": "object", + "properties": { + "moeglicheSsks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrganisationResponseLegacy" + } + }, + "total": { + "type": "number" + } + }, + "required": ["moeglicheSsks", "total"] + }, + "DbiamCreatePersonenkontextBodyParams": { + "type": "object", + "properties": { + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + } + }, + "required": ["organisationId", "rolleId"] + }, + "DbiamCreatePersonWithPersonenkontexteBodyParams": { + "type": "object", + "properties": { + "familienname": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "personalnummer": { + "type": "string" + }, + "befristung": { + "format": "date-time", + "type": "string" + }, + "createPersonenkontexte": { + "nullable": false, + "type": "array", + "items": { + "$ref": "#/components/schemas/DbiamCreatePersonenkontextBodyParams" + } + } + }, + "required": ["familienname", "vorname", "createPersonenkontexte"] + }, + "DBiamPersonResponse": { + "type": "object", + "properties": { + "person": { + "$ref": "#/components/schemas/PersonResponse" + }, + "dBiamPersonenkontextResponses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DBiamPersonenkontextResponse" + } + } + }, + "required": ["person", "dBiamPersonenkontextResponses"] + }, + "FindRollenResponse": { + "type": "object", + "properties": { + "moeglicheRollen": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RolleResponse" + } + }, + "total": { + "type": "number" + } + }, + "required": ["moeglicheRollen", "total"] + }, + "TokenInitBodyParams": { + "type": "object", + "properties": { + "personId": { + "type": "string" + } + }, + "required": ["personId"] + }, + "TokenStateResponse": { + "type": "object", + "properties": { + "hasToken": { + "type": "boolean" + }, + "tokenKind": { + "type": "string" + }, + "serial": { + "type": "string" + } + }, + "required": ["hasToken", "tokenKind", "serial"] + }, + "AssignHardwareTokenBodyParams": { + "type": "object", + "properties": { + "serial": { + "type": "string" + }, + "otp": { + "type": "string" + }, + "referrer": { + "type": "string" + }, + "userId": { + "type": "string" + } + }, + "required": ["serial", "otp", "referrer", "userId"] + }, + "AssignHardwareTokenResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "jsonrpc": { + "type": "string" + }, + "time": { + "type": "number" + }, + "version": { + "type": "string" + }, + "versionnumber": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "dialogText": { + "type": "string" + } + }, + "required": ["id", "jsonrpc", "time", "version", "versionnumber", "signature", "dialogText"] + }, + "TokenVerifyBodyParams": { + "type": "object", + "properties": { + "personId": { + "type": "string" + }, + "otp": { + "type": "string" + } + }, + "required": ["personId", "otp"] + }, + "TokenRequiredResponse": { + "type": "object", + "properties": { + "required": { + "type": "boolean" + } + }, + "required": ["required"] + }, + "DbiamPersonenkontextImportBodyParams": { + "type": "object", + "properties": { + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + }, + "file": { + "type": "string", + "format": "binary" + } + }, + "required": ["organisationId", "rolleId", "file"] + }, + "ImportDataItemResponse": { + "type": "object", + "properties": { + "nachname": { + "type": "string" + }, + "vorname": { + "type": "string" + }, + "klasse": { + "type": "string", + "nullable": true + }, + "validationErrors": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["nachname", "vorname", "klasse", "validationErrors"] + }, + "ImportUploadResponse": { + "type": "object", + "properties": { + "importvorgangId": { + "type": "string", + "description": "The import transaction number. it will be needed to execute the import and download the result" + }, + "isValid": { + "type": "boolean", + "description": "It states if the import transaction contain errors." + }, + "totalImportDataItems": { + "type": "number", + "description": "The total number of data items in the CSV file." + }, + "totalInvalidImportDataItems": { + "type": "number", + "description": "The total number of data items in the CSV file that are invalid." + }, + "invalidImportDataItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportDataItemResponse" + } + } + }, + "required": [ + "importvorgangId", + "isValid", + "totalImportDataItems", + "totalInvalidImportDataItems", + "invalidImportDataItems" + ] + }, + "ImportvorgangByIdBodyParams": { + "type": "object", + "properties": { + "importvorgangId": { + "type": "string", + "description": "The id of an import transaction", + "nullable": false + }, + "organisationId": { + "type": "string" + }, + "rolleId": { + "type": "string" + } + }, + "required": ["importvorgangId", "organisationId", "rolleId"] + }, + "DbiamImportError": { + "type": "object", + "properties": { + "i18nKey": { + "type": "string", + "enum": [ + "IMPORT_ERROR", + "CSV_PARSING_ERROR", + "CSV_FILE_EMPTY_ERROR", + "IMPORT_TEXT_FILE_CREATION_ERROR", + "IMPORT_NUR_LERN_AN_SCHULE_ERROR", + "CSV_FILE_INVALID_HEADER_ERROR" + ] + }, + "code": { + "type": "number", + "description": "Corresponds to HTTP Status code like 200, 404, 500" + } + }, + "required": ["i18nKey", "code"] + } } -} \ No newline at end of file + } +} diff --git a/src/components/alert/SpshBanner.spec.ts b/src/components/alert/SpshBanner.spec.ts new file mode 100644 index 000000000..91ee797e9 --- /dev/null +++ b/src/components/alert/SpshBanner.spec.ts @@ -0,0 +1,46 @@ +import { expect, test } from 'vitest'; +import { VueWrapper, mount } from '@vue/test-utils'; +import SpshBanner from './SpshBanner.vue'; +import { nextTick } from 'vue'; + +let wrapper: VueWrapper | null = null; + +beforeEach(() => { + document.body.innerHTML = ` +
+
+
+ `; + + wrapper = mount(SpshBanner, { + props: { + id: 'alert', + visible: true, + text: 'This is the text of the alert', + type: 'error', + }, + + global: { + components: { + SpshBanner, + }, + }, + }); +}); + +describe('SpshBanner Alert', () => { + test('it renders the alert when modelValue is true', () => { + expect(wrapper?.find('.v-alert').isVisible()).toBe(true); + }); + + test('it does render the correct text', async () => { + expect(wrapper?.text()).toContain('This is the text of the alert'); + }); + + test('close button is visible and clickable', async () => { + expect(wrapper?.find('[data-testid="banner-close-icon"]').isVisible()).toBe(true); + wrapper?.find('[data-testid="banner-close-icon"]').trigger('click'); + await nextTick(); + expect(wrapper?.emitted('dismissBanner')).toBeTruthy(); + }); +}); diff --git a/src/components/alert/SpshBanner.vue b/src/components/alert/SpshBanner.vue new file mode 100644 index 000000000..060389ac3 --- /dev/null +++ b/src/components/alert/SpshBanner.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/locales/de-DE.json b/src/locales/de-DE.json index 22fbc28f4..b719c6ddb 100644 --- a/src/locales/de-DE.json +++ b/src/locales/de-DE.json @@ -176,7 +176,7 @@ "UNSPECIFIED_ERROR": "Leider ist ein technischer Fehler aufgetreten. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut." }, "generatedPassword": "Generiertes Passwort", - "homePageIQSH":"Homepage der IQSH-Medienberatung", + "homePageIQSH": "Homepage der IQSH-Medienberatung", "import": "Benutzer importieren", "loadingErrorText": "Es konnten keine Benutzerdaten geladen werden.", "loadingErrorTitle": "Fehler beim Laden des Benutzers", @@ -187,7 +187,7 @@ "personalInfoChangeNotice": "Namensänderungen haben unmittelbare Auswirkungen auf den Benutzernamen im Schulportal SH und auf die E-Mail-Adresse! \n\nWeitere Informationen finden Sie auf der Homepage der IQSH-Medienberatung.", "personalInfoChangeNotice2": "Weitere Informationen finden Sie auf der ", "personalInfoSuccessDialogMessage": "Die Stammdaten wurden erfolgreich geändert.", - "personalInfoSuccessDialogMessageWithUsername": "Die Stammdaten wurden erfolgreich geändert.\n\nDas Passwort wurde nicht verändert und kann wie zuvor verwendet werden. \n\nBitte teilen Sie der betroffenen Person die Stammdatenänderung (Benutzername, Mail-Adresse) mit. \n\nDie neuen Daten können Sie in der Gesamtübersicht einsehen." , + "personalInfoSuccessDialogMessageWithUsername": "Die Stammdaten wurden erfolgreich geändert.\n\nDas Passwort wurde nicht verändert und kann wie zuvor verwendet werden. \n\nBitte teilen Sie der betroffenen Person die Stammdatenänderung (Benutzername, Mail-Adresse) mit. \n\nDie neuen Daten können Sie in der Gesamtübersicht einsehen.", "printPassword": "Passwort drucken", "resetPassword": "Passwort zurücksetzen", "resetPasswordConfirmation": "Sind Sie sicher, dass Sie das Passwort für {firstname} {lastname} zurücksetzen möchten?", @@ -298,7 +298,7 @@ "NEWER_VERSION_OF_PERSONENKONTEXTE_AVAILABLE": "Geänderte Daten", "PERSONALNUMMER_NICHT_EINDEUTIG": "KoPers.-Nr. nicht eindeutig", "PERSONENKONTEXTE_UPDATE_ERROR": "Geänderte Daten", - "PERSON_NOT_FOUND": "Benutzer gelöscht" , + "PERSON_NOT_FOUND": "Benutzer gelöscht", "REQUIRED_STEP_UP_LEVEL_NOT_MET": "Zwei-Faktor-Authentifizierung (2FA) erforderlich" }, "errors": { @@ -678,5 +678,9 @@ }, "yes": "Ja", "willBeCreated": "wird hinzugefügt", - "willBeRemoved": "wird entfernt" + "willBeRemoved": "wird entfernt", + "banner": { + "hint": "Hinweis: ", + "kopers": "Die Verwendung dieses Benutzerkontos setzt eine KoPers.-Nr. voraus. Bitte kontaktieren Sie Ihre schulischen Administratorinnen und Administratoren, um eine KoPers.-Nr. eintragen zu lassen. Andernfalls wird Ihr Zugang zum {date} automatisch gesperrt." + } } diff --git a/src/stores/AuthStore.ts b/src/stores/AuthStore.ts index bd6d4ea97..b6e0601d8 100644 --- a/src/stores/AuthStore.ts +++ b/src/stores/AuthStore.ts @@ -2,6 +2,7 @@ import { defineStore, type Store, type StoreDefinition } from 'pinia'; import { AuthApiFactory, type AuthApiInterface, + type PersonTimeLimitInfoResponse, type PersonenkontextRolleFieldsResponse, type UserinfoResponse, } from '../api-client/generated/api'; @@ -52,6 +53,7 @@ type AuthState = { hasSchultraegerverwaltungPermission: boolean; isAuthed: boolean; acr: StepUpLevel; + timeLimitInfos: PersonTimeLimitInfoResponse[]; }; type AuthActions = { @@ -80,6 +82,7 @@ export const useAuthStore: StoreDefinition<'authStore', AuthState, AuthGetters, hasSchultraegerverwaltungPermission: false, isAuthed: false, acr: StepUpLevel.NONE, + timeLimitInfos: [], }), actions: { async initializeAuthStatus() { @@ -93,6 +96,7 @@ export const useAuthStore: StoreDefinition<'authStore', AuthState, AuthGetters, this.isAuthed = true; this.currentUser = data; this.acr = data.acr as StepUpLevel; + this.timeLimitInfos = data.timeLimits; /* extract all system permissions from current user's personenkontexte */ const personenkontexte: Array | null = this.currentUser.personenkontexte; diff --git a/src/views/StartView.spec.ts b/src/views/StartView.spec.ts index 136f84b63..e976ac2ca 100644 --- a/src/views/StartView.spec.ts +++ b/src/views/StartView.spec.ts @@ -9,10 +9,15 @@ import type WrapperLike from '@vue/test-utils/dist/interfaces/wrapperLike'; import { expect, test, type Mock } from 'vitest'; import { nextTick } from 'vue'; import StartView from './StartView.vue'; +import { type PersonStore, usePersonStore, type PersonWithUebersicht } from '@/stores/PersonStore'; +import { usePersonInfoStore, type PersonInfoResponse, type PersonInfoStore } from '@/stores/PersonInfoStore'; +import { OrganisationsTyp, RollenMerkmal } from '@/api-client/generated/api'; let wrapper: VueWrapper | null = null; let authStore: AuthStore; let serviceProviderStore: ServiceProviderStore; +let personStore: PersonStore; +let personInfoStore: PersonInfoStore; const mockProviders: Array = [ { @@ -35,6 +40,72 @@ const mockProviders: Array = [ }, ]; +const mockPerson: PersonInfoResponse = { + person: { + id: '1234', + name: { + familiennamen: 'Vimes', + vorname: 'Samuel', + initialenfamilienname: null, + initialenvorname: null, + rufname: null, + titel: null, + anrede: null, + namenspraefix: null, + namenssuffix: null, + sortierindex: null, + }, + referrer: 'samuelvimes', + personalnummer: null, + mandant: '', + geburt: null, + stammorganisation: null, + geschlecht: null, + lokalisierung: null, + vertrauensstufe: 'KEIN', + revision: '', + dienststellen: [], + }, + pid: '', + personenkontexte: [], + gruppen: [], + email: null, +}; + +const mockPersonenUebersicht: PersonWithUebersicht = { + personId: '1234', + vorname: 'Samuel', + nachname: 'Vimes', + benutzername: 'samuelvimes', + lastModifiedZuordnungen: '2021-09-01T12:00:00Z', + zuordnungen: [ + { + sskId: '1', + rolleId: '1', + sskName: 'Muster-Schule', + sskDstNr: '123456', + rolle: 'Lehrer', + administriertVon: 'root-sh', + typ: OrganisationsTyp.Schule, + editable: true, + merkmale: ['KOPERS_PFLICHT'] as unknown as RollenMerkmal, + befristung: '2024-05-06', + }, + { + sskId: '2', + rolleId: '1', + sskName: 'Anders-Sonderlich-Schule', + sskDstNr: '789101112', + rolle: 'Lehrer', + administriertVon: 'root-sh', + typ: OrganisationsTyp.Schule, + editable: true, + merkmale: ['KOPERS_PFLICHT'] as unknown as RollenMerkmal, + befristung: '2024-05-06', + }, + ], +}; + const locationMock: Mock = vi.fn(() => ({ pathname: 'test', search: '?query', @@ -51,12 +122,23 @@ beforeEach(() => { authStore = useAuthStore(); serviceProviderStore = useServiceProviderStore(); + personStore = usePersonStore(); + personInfoStore = usePersonInfoStore(); serviceProviderStore.availableServiceProviders = mockProviders; authStore.hasPersonenverwaltungPermission = false; authStore.hasSchulverwaltungPermission = false; authStore.hasRollenverwaltungPermission = false; authStore.hasKlassenverwaltungPermission = false; + authStore.timeLimitInfos = [ + { + occasion: 'KOPERS', + deadline: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(), + }, + ]; + + personInfoStore.personInfo = mockPerson; + personStore.personenuebersicht = mockPersonenUebersicht; wrapper = mount(StartView, { attachTo: document.getElementById('app') || '', @@ -117,4 +199,12 @@ describe('StartView', () => { expect(adminCard?.isVisible()).toBe(true); expect(adminCard?.attributes('href')).toEqual('/admin/klassen'); }); + + test('banner has correct color', async () => { + await nextTick(); + + const banner: WrapperLike | undefined = wrapper?.find('[data-testid="KOPERS-banner"]'); + + expect(banner?.classes()).toContain('bg-error'); + }); }); diff --git a/src/views/StartView.vue b/src/views/StartView.vue index a93cb05b3..c362a3979 100644 --- a/src/views/StartView.vue +++ b/src/views/StartView.vue @@ -5,14 +5,32 @@ type ServiceProvider, type ServiceProviderStore, } from '@/stores/ServiceProviderStore'; - import { computed, onMounted, type ComputedRef } from 'vue'; + import { computed, onBeforeMount, onMounted, ref, type ComputedRef, type Ref } from 'vue'; import ServiceProviderCategory from '@/components/layout/ServiceProviderCategory.vue'; import { useAuthStore, type AuthStore } from '@/stores/AuthStore'; import { useTwoFactorAuthentificationStore, type TwoFactorAuthentificationStore, } from '@/stores/TwoFactorAuthentificationStore'; + import SpshBanner from '@/components/alert/SpshBanner.vue'; + import { useI18n } from 'vue-i18n'; + import { usePersonInfoStore, type PersonInfoStore } from '@/stores/PersonInfoStore'; + import { usePersonStore, type PersonStore } from '@/stores/PersonStore'; + import type { DBiamPersonenzuordnungResponse, PersonTimeLimitInfoResponse } from '@/api-client/generated'; + import { RollenMerkmal } from '@/stores/RolleStore'; + import { formatDateDiggitsToGermanDate } from '@/utils/date'; + const { t }: { t: Function } = useI18n(); + + export type Alert = { + id: string; + message: string; + visible: boolean; + type: 'error' | 'warning'; + }; + + const personInfoStore: PersonInfoStore = usePersonInfoStore(); + const personStore: PersonStore = usePersonStore(); const serviceProviderStore: ServiceProviderStore = useServiceProviderStore(); const twoFactorAuthentificationStore: TwoFactorAuthentificationStore = useTwoFactorAuthentificationStore(); const authStore: AuthStore = useAuthStore(); @@ -48,6 +66,49 @@ return twoFactorAuthentificationStore.hasToken ?? false; } + const hasKoPersMerkmal: ComputedRef = computed(() => { + return ( + personStore.personenuebersicht?.zuordnungen.find((zuordnung: DBiamPersonenzuordnungResponse) => { + return zuordnung.merkmale.includes(RollenMerkmal.KopersPflicht); + }) !== undefined + ); + }); + + function getUrgencyType(date: Date): 'error' | 'warning' { + const error: boolean = date.valueOf() < new Date().valueOf() + 14 * 24 * 60 * 60 * 1000; + return error ? 'error' : 'warning'; + } + + function getBannerAlerts(): Alert[] { + const alerts: Alert[] = []; + + if (!personInfoStore.personInfo?.person.personalnummer && hasKoPersMerkmal.value == true) { + const lockInfo: PersonTimeLimitInfoResponse | undefined = + authStore.timeLimitInfos.find((info: PersonTimeLimitInfoResponse) => info.occasion === 'KOPERS') ?? undefined; + if (lockInfo) { + const kopersDeadline: string = lockInfo.deadline!; + const kopersDeadlineDate: Date = new Date(kopersDeadline); + alerts.push({ + id: lockInfo.occasion ?? '', + message: t('banner.kopers', { date: formatDateDiggitsToGermanDate(kopersDeadlineDate) }), + visible: true, + type: getUrgencyType(kopersDeadlineDate), + }); + } + } + + return alerts; + } + + async function initializeStores(): Promise { + await authStore.initializeAuthStatus(); + await personInfoStore.initPersonInfo(); + await personStore.getPersonenuebersichtById(personInfoStore.personInfo?.person.id ?? ''); + } + + const closedAlerts: Ref> = ref(new Set()); + let alerts: Ref = ref([]); + onMounted(async () => { await authStore.initializeAuthStatus(); const personId: string | null | undefined = authStore.currentUser?.personId; @@ -61,6 +122,26 @@ } sessionStorage.setItem('previousUrl', window.location.pathname + window.location.search); }); + + onBeforeMount(async () => { + await initializeStores(); + alerts.value = getBannerAlerts(); + const closedAlertsStr: string | null = sessionStorage.getItem('closedAlerts'); + if (closedAlertsStr) { + closedAlerts.value = new Set(JSON.parse(closedAlertsStr)); + alerts.value.forEach((alert: Alert) => { + if (closedAlerts.value.has(alert.id.toString())) { + alert.visible = false; + } + }); + } + }); + + const dismissBannerForSession = (id: string): void => { + alerts.value.find((alert: Alert) => alert.id === id)!.visible = false; + closedAlerts.value.add(id); + sessionStorage.setItem('closedAlerts', JSON.stringify(Array.from(closedAlerts.value))); + };