From 4550e337bd45a78591f90690257bfd8c51ab790b Mon Sep 17 00:00:00 2001 From: Yannick Clausen Date: Mon, 16 Dec 2024 13:31:31 +0100 Subject: [PATCH 1/4] use uem-password for self --- src/api-client/generated/api.ts | 72 + src/api-client/openapispec.json | 3453 ++++++++++++++++++++++++++++- src/locales/de-DE.json | 6 +- src/stores/PersonStore.ts | 8 +- src/styles/components/button.scss | 2 +- src/styles/main.scss | 2 +- src/styles/typography.scss | 4 +- src/views/ProfileView.vue | 4 +- 8 files changed, 3539 insertions(+), 12 deletions(-) diff --git a/src/api-client/generated/api.ts b/src/api-client/generated/api.ts index e111e6e53..00a6e1445 100644 --- a/src/api-client/generated/api.ts +++ b/src/api-client/generated/api.ts @@ -7174,6 +7174,43 @@ export const PersonenApiAxiosParamCreator = function (configuration?: Configurat + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + personControllerResetUEMPassword: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/personen/uem-password`; + // 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: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication bearer required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", [], configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -7468,6 +7505,15 @@ export const PersonenApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.personControllerResetPasswordByPersonId(personId, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async personControllerResetUEMPassword(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.personControllerResetUEMPassword(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} personId The id for the account. @@ -7611,6 +7657,14 @@ export const PersonenApiFactory = function (configuration?: Configuration, baseP personControllerResetPasswordByPersonId(personId: string, options?: any): AxiosPromise { return localVarFp.personControllerResetPasswordByPersonId(personId, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + personControllerResetUEMPassword(options?: any): AxiosPromise { + return localVarFp.personControllerResetUEMPassword(options).then((request) => request(axios, basePath)); + }, /** * * @param {string} personId The id for the account. @@ -7749,6 +7803,14 @@ export interface PersonenApiInterface { */ personControllerResetPasswordByPersonId(personId: string, options?: AxiosRequestConfig): AxiosPromise; + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof PersonenApiInterface + */ + personControllerResetUEMPassword(options?: AxiosRequestConfig): AxiosPromise; + /** * * @param {string} personId The id for the account. @@ -7903,6 +7965,16 @@ export class PersonenApi extends BaseAPI implements PersonenApiInterface { return PersonenApiFp(this.configuration).personControllerResetPasswordByPersonId(personId, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof PersonenApi + */ + public personControllerResetUEMPassword(options?: AxiosRequestConfig) { + return PersonenApiFp(this.configuration).personControllerResetUEMPassword(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} personId The id for the account. diff --git a/src/api-client/openapispec.json b/src/api-client/openapispec.json index 9ee757f45..5ff705540 100644 --- a/src/api-client/openapispec.json +++ b/src/api-client/openapispec.json @@ -1 +1,3452 @@ -{"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":[]}]}},"/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."}},"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":[]}]}},"/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."}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RawPagedResponse"},{"required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PersonenkontextResponse"}}}}]}}}},"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":[]}]}},"/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/{personId}/uem-password":{"patch":{"operationId":"PersonController_resetUEMPasswordByPersonId","parameters":[{"name":"personId","required":true,"in":"path","description":"The id for the account.","schema":{"nullable":false,"type":"string"}}],"responses":{"202":{"description":"UEM-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-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":[]}]}},"/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":[]}]},"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":[]}]}},"/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."}},"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":[]}]}},"/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":[]}]}},"/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":[]}]}},"/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":[]}]}},"/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":[]}]}},"/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":[]}]},"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":[]}]}},"/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":[]}]},"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":[]}]}},"/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":[]}]},"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"]}]}},"/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"]}]}},"/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."}},"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":[]}]}},"/metrics":{"get":{"operationId":"MetricsController_getMetrics","summary":"Get Prometheus metrics","parameters":[],"responses":{"200":{"description":"Prometheus metrics."}},"tags":["Metrics"]}},"/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"]},"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","PERSON_UEM_PASSWORD_MODIFICATION_ERROR"]},"code":{"type":"number","description":"Corresponds to HTTP Status code like 200, 404, 500"}},"required":["i18nKey","code"]},"RollenArt":{"type":"string","enum":["LERN","LEHR","EXTERN","ORGADMIN","LEIT","SYSADMIN"]},"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"},"rollenArt":{"nullable":false,"$ref":"#/components/schemas/RollenArt"},"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","rollenArt","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","PERSONEN_LESEN"]},"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"]},"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 +{ + "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": [] }] + } + }, + "/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." } + }, + "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": [] }] + } + }, + "/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." } + }, + "content": { + "application/json": { + "schema": { + "allOf": [ + { "$ref": "#/components/schemas/RawPagedResponse" }, + { + "required": ["items"], + "properties": { + "items": { + "type": "array", + "items": { "$ref": "#/components/schemas/PersonenkontextResponse" } + } + } + } + ] + } + } + } + }, + "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": [] }] + } + }, + "/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/{personId}/uem-password": { + "patch": { + "operationId": "PersonController_resetUEMPasswordByPersonId", + "parameters": [ + { + "name": "personId", + "required": true, + "in": "path", + "description": "The id for the account.", + "schema": { "nullable": false, "type": "string" } + } + ], + "responses": { + "202": { + "description": "UEM-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/uem-password": { + "patch": { + "operationId": "PersonController_resetUEMPassword", + "parameters": [], + "responses": { + "202": { + "description": "UEM-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-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": [] }] + } + }, + "/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": [] }] + }, + "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": [] }] + } + }, + "/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." } + }, + "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": [] }] + } + }, + "/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": [] }] + } + }, + "/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": [] }] + } + }, + "/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": [] }] + } + }, + "/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": [] }] + } + }, + "/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": [] }] + }, + "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": [] }] + } + }, + "/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": [] }] + }, + "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": [] }] + } + }, + "/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": [] }] + }, + "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"] }] + } + }, + "/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"] }] + } + }, + "/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." } + }, + "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": [] }] + } + }, + "/metrics": { + "get": { + "operationId": "MetricsController_getMetrics", + "summary": "Get Prometheus metrics", + "parameters": [], + "responses": { "200": { "description": "Prometheus metrics." } }, + "tags": ["Metrics"] + } + }, + "/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"] + }, + "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", + "PERSON_UEM_PASSWORD_MODIFICATION_ERROR" + ] + }, + "code": { "type": "number", "description": "Corresponds to HTTP Status code like 200, 404, 500" } + }, + "required": ["i18nKey", "code"] + }, + "RollenArt": { "type": "string", "enum": ["LERN", "LEHR", "EXTERN", "ORGADMIN", "LEIT", "SYSADMIN"] }, + "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" }, + "rollenArt": { "nullable": false, "$ref": "#/components/schemas/RollenArt" }, + "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", + "rollenArt", + "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", + "PERSONEN_LESEN" + ] + }, + "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"] + }, + "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"] + } + } + } +} diff --git a/src/locales/de-DE.json b/src/locales/de-DE.json index ed8076cff..6c44fa3e6 100644 --- a/src/locales/de-DE.json +++ b/src/locales/de-DE.json @@ -189,7 +189,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", @@ -200,7 +200,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?", @@ -312,7 +312,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": { diff --git a/src/stores/PersonStore.ts b/src/stores/PersonStore.ts index f91ac40b2..59658577d 100644 --- a/src/stores/PersonStore.ts +++ b/src/stores/PersonStore.ts @@ -218,7 +218,7 @@ type PersonActions = { getAllPersons: (filter: PersonFilter) => Promise; getPersonById: (personId: string) => Promise; resetPassword: (personId: string) => Promise; - resetDevicePassword: (personId: string) => Promise; + resetDevicePassword: (personId?: string) => Promise; deletePersonById: (personId: string) => Promise; lockPerson: (personId: string, bodyParams: LockUserBodyParams) => Promise; syncPersonById: (personId: string) => Promise; @@ -387,10 +387,12 @@ export const usePersonStore: StoreDefinition<'personStore', PersonState, PersonG } }, - async resetDevicePassword(personId: string): Promise { + async resetDevicePassword(personId?: string): Promise { this.loading = true; try { - const { data }: { data: string } = await personenApi.personControllerResetUEMPasswordByPersonId(personId); + let data: string; + if (personId) data = (await personenApi.personControllerResetUEMPasswordByPersonId(personId)).data; + else data = (await personenApi.personControllerResetUEMPassword()).data; this.newDevicePassword = data; } catch (error: unknown) { this.errorCode = 'UNSPECIFIED_ERROR'; diff --git a/src/styles/components/button.scss b/src/styles/components/button.scss index f14d15d7e..9313a7a9e 100644 --- a/src/styles/components/button.scss +++ b/src/styles/components/button.scss @@ -55,7 +55,7 @@ /* small screen */ @media only screen and (max-width: 600px) { - font-size: $smallButtonFontSize; + font-size: $smallButtonFontSize; } /* medium screen */ diff --git a/src/styles/main.scss b/src/styles/main.scss index dbe907f46..e7ca2a4cd 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -131,7 +131,7 @@ label.v-label { } } -@media only screen and (min-width: 960px){ +@media only screen and (min-width: 960px) { .edit-container { position: absolute; display: flex; diff --git a/src/styles/typography.scss b/src/styles/typography.scss index b2fc47727..e1c898472 100644 --- a/src/styles/typography.scss +++ b/src/styles/typography.scss @@ -20,7 +20,9 @@ } } -p, b, div { +p, +b, +div { &.white-space-pre-wrap { white-space: pre-wrap !important; } diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index e8173f683..156150b8e 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -221,8 +221,8 @@ return message; }); - async function resetDevicePassword(personId: string): Promise { - await personStore.resetDevicePassword(personId); + async function resetDevicePassword(): Promise { + await personStore.resetDevicePassword(); devicePassword.value = personStore.newDevicePassword || ''; } From 9db454c1992cc5c0e9cfba5183e8e089aa4c02c8 Mon Sep 17 00:00:00 2001 From: Yannick Clausen Date: Mon, 16 Dec 2024 15:27:31 +0100 Subject: [PATCH 2/4] extend test --- src/stores/PersonStore.spec.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/stores/PersonStore.spec.ts b/src/stores/PersonStore.spec.ts index 444647433..3b74a50c1 100644 --- a/src/stores/PersonStore.spec.ts +++ b/src/stores/PersonStore.spec.ts @@ -586,7 +586,7 @@ describe('PersonStore', () => { }); describe('resetDevicePassword', () => { - it('should reset and return device password', async () => { + it('should reset and return device password when given a personId', async () => { const userId: string = '2345'; const mockResponse: string = 'fakePassword'; @@ -598,6 +598,17 @@ describe('PersonStore', () => { expect(personStore.loading).toBe(false); }); + it('should reset and return device password without a personId', async () => { + const mockResponse: string = 'fakePassword'; + + mockadapter.onPatch(`/api/personen/uem-password`).replyOnce(202, mockResponse); + const resetDevicePasswordPromise: Promise = personStore.resetDevicePassword(); + expect(personStore.loading).toBe(true); + await resetDevicePasswordPromise; + expect(personStore.newDevicePassword).toEqual(mockResponse); + expect(personStore.loading).toBe(false); + }); + it('should handle string error', async () => { const userId: string = '2345'; From 373bb73d3d8a23dec3c6aa5b3b73a326f1d11091 Mon Sep 17 00:00:00 2001 From: Yannick Clausen Date: Mon, 16 Dec 2024 17:27:12 +0100 Subject: [PATCH 3/4] fix ts error --- src/views/ProfileView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index 156150b8e..c4883baad 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -752,7 +752,7 @@ :errorMessage="devicePasswordErrorMessage" :isLoading="personStore.loading" @onClearPassword="devicePassword = ''" - @onResetPassword="resetDevicePassword(personInfoStore.personInfo?.person.id as string)" + @onResetPassword="resetDevicePassword()" :password="devicePassword" :testId="'device-password'" > From f50645da8fd42bd827d29e77868005e3a6a867d1 Mon Sep 17 00:00:00 2001 From: Yannick Clausen Date: Tue, 7 Jan 2025 16:14:36 +0100 Subject: [PATCH 4/4] generate client --- package-lock.json | 4 +- src/api-client/generated/api.ts | 619 +++++++++++++++++++++++++++++++- src/api-client/openapispec.json | 219 ++++++++++- 3 files changed, 815 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5475eeaee..29f67b332 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "schulportal-client", - "version": "0.6.0", + "version": "1.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "schulportal-client", - "version": "0.6.0", + "version": "1.0.4", "license": "EUPL-1.2", "dependencies": { "@mdi/font": "^7.4.47", diff --git a/src/api-client/generated/api.ts b/src/api-client/generated/api.ts index 00a6e1445..aa0cc8165 100644 --- a/src/api-client/generated/api.ts +++ b/src/api-client/generated/api.ts @@ -472,6 +472,12 @@ export interface DBiamPersonenzuordnungResponse { * @memberof DBiamPersonenzuordnungResponse */ 'merkmale': RollenMerkmal; + /** + * + * @type {Array} + * @memberof DBiamPersonenzuordnungResponse + */ + 'admins': Array; } @@ -557,7 +563,9 @@ export const DbiamImportErrorI18nKeyEnum = { CsvFileEmptyError: 'CSV_FILE_EMPTY_ERROR', ImportTextFileCreationError: 'IMPORT_TEXT_FILE_CREATION_ERROR', ImportNurLernAnSchuleError: 'IMPORT_NUR_LERN_AN_SCHULE_ERROR', - CsvFileInvalidHeaderError: 'CSV_FILE_INVALID_HEADER_ERROR' + CsvFileInvalidHeaderError: 'CSV_FILE_INVALID_HEADER_ERROR', + ImportMaxUsersLimitError: 'IMPORT_MAX_USERS_LIMIT_ERROR', + CsvFileNoUsersError: 'CSV_FILE_NO_USERS_ERROR' } as const; export type DbiamImportErrorI18nKeyEnum = typeof DbiamImportErrorI18nKeyEnum[keyof typeof DbiamImportErrorI18nKeyEnum]; @@ -872,6 +880,25 @@ export const EmailAddressStatus = { export type EmailAddressStatus = typeof EmailAddressStatus[keyof typeof EmailAddressStatus]; +/** + * + * @export + * @interface FeatureFlagResponse + */ +export interface FeatureFlagResponse { + /** + * + * @type {boolean} + * @memberof FeatureFlagResponse + */ + 'rolleBearbeitenEnabled': boolean; + /** + * + * @type {boolean} + * @memberof FeatureFlagResponse + */ + 'befristungBearbeitenEnabled': boolean; +} /** * * @export @@ -957,6 +984,26 @@ export interface ImportDataItemResponse { */ 'validationErrors': Array; } +/** + * + * @export + * @enum {string} + */ + +export const ImportStatus = { + Cancelled: 'CANCELLED', + Completed: 'COMPLETED', + Failed: 'FAILED', + Finished: 'FINISHED', + Inprogress: 'INPROGRESS', + Invalid: 'INVALID', + Started: 'STARTED', + Valid: 'VALID' +} as const; + +export type ImportStatus = typeof ImportStatus[keyof typeof ImportStatus]; + + /** * * @export @@ -997,27 +1044,81 @@ export interface ImportUploadResponse { /** * * @export - * @interface ImportvorgangByIdBodyParams + * @interface ImportVorgangResponse */ -export interface ImportvorgangByIdBodyParams { +export interface ImportVorgangResponse { /** - * The id of an import transaction + * * @type {string} - * @memberof ImportvorgangByIdBodyParams + * @memberof ImportVorgangResponse */ - 'importvorgangId': string; + 'id': string; /** * * @type {string} - * @memberof ImportvorgangByIdBodyParams + * @memberof ImportVorgangResponse */ - 'organisationId': string; + 'createdAt': string; + /** + * + * @type {string} + * @memberof ImportVorgangResponse + */ + 'updatedAt': string; + /** + * + * @type {string} + * @memberof ImportVorgangResponse + */ + 'rollenname': string; /** * * @type {string} + * @memberof ImportVorgangResponse + */ + 'organisationsname': string; + /** + * + * @type {number} + * @memberof ImportVorgangResponse + */ + 'dataItemCount': number; + /** + * + * @type {ImportStatus} + * @memberof ImportVorgangResponse + */ + 'status': ImportStatus; +} + + +/** + * + * @export + * @interface ImportVorgangStatusResponse + */ +export interface ImportVorgangStatusResponse { + /** + * + * @type {ImportStatus} + * @memberof ImportVorgangStatusResponse + */ + 'status': ImportStatus; +} + + +/** + * + * @export + * @interface ImportvorgangByIdBodyParams + */ +export interface ImportvorgangByIdBodyParams { + /** + * The id of an import transaction + * @type {string} * @memberof ImportvorgangByIdBodyParams */ - 'rolleId': string; + 'importvorgangId': string; } /** * @@ -1943,6 +2044,25 @@ export interface PersonResponseEmail { } +/** + * + * @export + * @interface PersonTimeLimitInfoResponse + */ +export interface PersonTimeLimitInfoResponse { + /** + * + * @type {string} + * @memberof PersonTimeLimitInfoResponse + */ + 'occasion': string; + /** + * + * @type {string} + * @memberof PersonTimeLimitInfoResponse + */ + 'deadline': string; +} /** * * @export @@ -3076,6 +3196,12 @@ export interface UserinfoResponse { * @memberof UserinfoResponse */ 'acr': string; + /** + * + * @type {Array} + * @memberof UserinfoResponse + */ + 'timeLimits': Array; } /** * @@ -4004,6 +4130,116 @@ export class Class2FAApi extends BaseAPI implements Class2FAApiInterface { } +/** + * ConfigApi - axios parameter creator + * @export + */ +export const ConfigApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + configControllerGetFeatureFlags: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/config`; + // 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, + }; + }, + } +}; + +/** + * ConfigApi - functional programming interface + * @export + */ +export const ConfigApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = ConfigApiAxiosParamCreator(configuration) + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async configControllerGetFeatureFlags(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.configControllerGetFeatureFlags(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * ConfigApi - factory interface + * @export + */ +export const ConfigApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = ConfigApiFp(configuration) + return { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + configControllerGetFeatureFlags(options?: any): AxiosPromise { + return localVarFp.configControllerGetFeatureFlags(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * ConfigApi - interface + * @export + * @interface ConfigApi + */ +export interface ConfigApiInterface { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ConfigApiInterface + */ + configControllerGetFeatureFlags(options?: AxiosRequestConfig): AxiosPromise; + +} + +/** + * ConfigApi - object-oriented interface + * @export + * @class ConfigApi + * @extends {BaseAPI} + */ +export class ConfigApi extends BaseAPI implements ConfigApiInterface { + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ConfigApi + */ + public configControllerGetFeatureFlags(options?: AxiosRequestConfig) { + return ConfigApiFp(this.configuration).configControllerGetFeatureFlags(options).then((request) => request(this.axios, this.basePath)); + } +} + + /** * CronApi - axios parameter creator * @export @@ -4149,6 +4385,43 @@ export const CronApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + cronControllerUpdateServiceProvidersForVidisAngebote: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/cron/vidis-angebote`; + // 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: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication bearer required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", [], configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -4204,6 +4477,15 @@ export const CronApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.cronControllerUnlockUsersWithExpiredLocks(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async cronControllerUpdateServiceProvidersForVidisAngebote(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.cronControllerUpdateServiceProvidersForVidisAngebote(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, } }; @@ -4246,6 +4528,14 @@ export const CronApiFactory = function (configuration?: Configuration, basePath? cronControllerUnlockUsersWithExpiredLocks(options?: any): AxiosPromise { return localVarFp.cronControllerUnlockUsersWithExpiredLocks(options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + cronControllerUpdateServiceProvidersForVidisAngebote(options?: any): AxiosPromise { + return localVarFp.cronControllerUpdateServiceProvidersForVidisAngebote(options).then((request) => request(axios, basePath)); + }, }; }; @@ -4287,6 +4577,14 @@ export interface CronApiInterface { */ cronControllerUnlockUsersWithExpiredLocks(options?: AxiosRequestConfig): AxiosPromise; + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CronApiInterface + */ + cronControllerUpdateServiceProvidersForVidisAngebote(options?: AxiosRequestConfig): AxiosPromise; + } /** @@ -4335,6 +4633,16 @@ export class CronApi extends BaseAPI implements CronApiInterface { public cronControllerUnlockUsersWithExpiredLocks(options?: AxiosRequestConfig) { return CronApiFp(this.configuration).cronControllerUnlockUsersWithExpiredLocks(options).then((request) => request(this.axios, this.basePath)); } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CronApi + */ + public cronControllerUpdateServiceProvidersForVidisAngebote(options?: AxiosRequestConfig) { + return CronApiFp(this.configuration).cronControllerUpdateServiceProvidersForVidisAngebote(options).then((request) => request(this.axios, this.basePath)); + } } @@ -4793,6 +5101,47 @@ export const ImportApiAxiosParamCreator = function (configuration?: Configuratio + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerDownloadFile: async (importvorgangId: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'importvorgangId' is not null or undefined + assertParamExists('importControllerDownloadFile', 'importvorgangId', importvorgangId) + const localVarPath = `/api/import/{importvorgangId}/download` + .replace(`{${"importvorgangId"}}`, encodeURIComponent(String(importvorgangId))); + // 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; + + // authentication bearer required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", [], configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -4845,6 +5194,111 @@ export const ImportApiAxiosParamCreator = function (configuration?: Configuratio options: localVarRequestOptions, }; }, + /** + * Get the history of import. + * @summary + * @param {number} [offset] The offset of the paginated list. + * @param {number} [limit] The requested limit for the page size. + * @param {ImportStatus} [status] + * @param {Array} [rolleIds] + * @param {Array} [organisationIds] Liefert Importvorgänge mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien). + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerFindImportTransactions: async (offset?: number, limit?: number, status?: ImportStatus, rolleIds?: Array, organisationIds?: Array, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/import/history`; + // 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; + + // authentication bearer required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", [], configuration) + + if (offset !== undefined) { + localVarQueryParameter['offset'] = offset; + } + + if (limit !== undefined) { + localVarQueryParameter['limit'] = limit; + } + + if (status !== undefined) { + localVarQueryParameter['status'] = status; + } + + if (rolleIds) { + localVarQueryParameter['rolleIds'] = rolleIds; + } + + if (organisationIds) { + localVarQueryParameter['organisationIds'] = organisationIds; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Get status for the import transaction by id. + * @summary + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerGetImportStatus: async (importvorgangId: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'importvorgangId' is not null or undefined + assertParamExists('importControllerGetImportStatus', 'importvorgangId', importvorgangId) + const localVarPath = `/api/import/{importvorgangId}/status` + .replace(`{${"importvorgangId"}}`, encodeURIComponent(String(importvorgangId))); + // 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; + + // authentication bearer required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", [], configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} organisationId @@ -4928,16 +5382,52 @@ export const ImportApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.importControllerDeleteImportTransaction(importvorgangId, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async importControllerDownloadFile(importvorgangId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.importControllerDownloadFile(importvorgangId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {ImportvorgangByIdBodyParams} importvorgangByIdBodyParams * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + async importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { const localVarAxiosArgs = await localVarAxiosParamCreator.importControllerExecuteImport(importvorgangByIdBodyParams, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * Get the history of import. + * @summary + * @param {number} [offset] The offset of the paginated list. + * @param {number} [limit] The requested limit for the page size. + * @param {ImportStatus} [status] + * @param {Array} [rolleIds] + * @param {Array} [organisationIds] Liefert Importvorgänge mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien). + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async importControllerFindImportTransactions(offset?: number, limit?: number, status?: ImportStatus, rolleIds?: Array, organisationIds?: Array, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.importControllerFindImportTransactions(offset, limit, status, rolleIds, organisationIds, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Get status for the import transaction by id. + * @summary + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async importControllerGetImportStatus(importvorgangId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.importControllerGetImportStatus(importvorgangId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} organisationId @@ -4970,15 +5460,48 @@ export const ImportApiFactory = function (configuration?: Configuration, basePat importControllerDeleteImportTransaction(importvorgangId: string, options?: any): AxiosPromise { return localVarFp.importControllerDeleteImportTransaction(importvorgangId, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerDownloadFile(importvorgangId: string, options?: any): AxiosPromise { + return localVarFp.importControllerDownloadFile(importvorgangId, options).then((request) => request(axios, basePath)); + }, /** * * @param {ImportvorgangByIdBodyParams} importvorgangByIdBodyParams * @param {*} [options] Override http request option. * @throws {RequiredError} */ - importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: any): AxiosPromise { + importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: any): AxiosPromise { return localVarFp.importControllerExecuteImport(importvorgangByIdBodyParams, options).then((request) => request(axios, basePath)); }, + /** + * Get the history of import. + * @summary + * @param {number} [offset] The offset of the paginated list. + * @param {number} [limit] The requested limit for the page size. + * @param {ImportStatus} [status] + * @param {Array} [rolleIds] + * @param {Array} [organisationIds] Liefert Importvorgänge mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien). + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerFindImportTransactions(offset?: number, limit?: number, status?: ImportStatus, rolleIds?: Array, organisationIds?: Array, options?: any): AxiosPromise> { + return localVarFp.importControllerFindImportTransactions(offset, limit, status, rolleIds, organisationIds, options).then((request) => request(axios, basePath)); + }, + /** + * Get status for the import transaction by id. + * @summary + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + importControllerGetImportStatus(importvorgangId: string, options?: any): AxiosPromise { + return localVarFp.importControllerGetImportStatus(importvorgangId, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} organisationId @@ -5009,6 +5532,15 @@ export interface ImportApiInterface { */ importControllerDeleteImportTransaction(importvorgangId: string, options?: AxiosRequestConfig): AxiosPromise; + /** + * + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApiInterface + */ + importControllerDownloadFile(importvorgangId: string, options?: AxiosRequestConfig): AxiosPromise; + /** * * @param {ImportvorgangByIdBodyParams} importvorgangByIdBodyParams @@ -5016,7 +5548,31 @@ export interface ImportApiInterface { * @throws {RequiredError} * @memberof ImportApiInterface */ - importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: AxiosRequestConfig): AxiosPromise; + importControllerExecuteImport(importvorgangByIdBodyParams: ImportvorgangByIdBodyParams, options?: AxiosRequestConfig): AxiosPromise; + + /** + * Get the history of import. + * @summary + * @param {number} [offset] The offset of the paginated list. + * @param {number} [limit] The requested limit for the page size. + * @param {ImportStatus} [status] + * @param {Array} [rolleIds] + * @param {Array} [organisationIds] Liefert Importvorgänge mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien). + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApiInterface + */ + importControllerFindImportTransactions(offset?: number, limit?: number, status?: ImportStatus, rolleIds?: Array, organisationIds?: Array, options?: AxiosRequestConfig): AxiosPromise>; + + /** + * Get status for the import transaction by id. + * @summary + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApiInterface + */ + importControllerGetImportStatus(importvorgangId: string, options?: AxiosRequestConfig): AxiosPromise; /** * @@ -5050,6 +5606,17 @@ export class ImportApi extends BaseAPI implements ImportApiInterface { return ImportApiFp(this.configuration).importControllerDeleteImportTransaction(importvorgangId, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApi + */ + public importControllerDownloadFile(importvorgangId: string, options?: AxiosRequestConfig) { + return ImportApiFp(this.configuration).importControllerDownloadFile(importvorgangId, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {ImportvorgangByIdBodyParams} importvorgangByIdBodyParams @@ -5061,6 +5628,34 @@ export class ImportApi extends BaseAPI implements ImportApiInterface { return ImportApiFp(this.configuration).importControllerExecuteImport(importvorgangByIdBodyParams, options).then((request) => request(this.axios, this.basePath)); } + /** + * Get the history of import. + * @summary + * @param {number} [offset] The offset of the paginated list. + * @param {number} [limit] The requested limit for the page size. + * @param {ImportStatus} [status] + * @param {Array} [rolleIds] + * @param {Array} [organisationIds] Liefert Importvorgänge mit den angegebenen IDs, selbst wenn andere Filterkriterien nicht zutreffen (ODER-verknüpft mit anderen Kriterien). + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApi + */ + public importControllerFindImportTransactions(offset?: number, limit?: number, status?: ImportStatus, rolleIds?: Array, organisationIds?: Array, options?: AxiosRequestConfig) { + return ImportApiFp(this.configuration).importControllerFindImportTransactions(offset, limit, status, rolleIds, organisationIds, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Get status for the import transaction by id. + * @summary + * @param {string} importvorgangId The id of an import transaction + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ImportApi + */ + public importControllerGetImportStatus(importvorgangId: string, options?: AxiosRequestConfig) { + return ImportApiFp(this.configuration).importControllerGetImportStatus(importvorgangId, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} organisationId diff --git a/src/api-client/openapispec.json b/src/api-client/openapispec.json index 5ff705540..279cd9a70 100644 --- a/src/api-client/openapispec.json +++ b/src/api-client/openapispec.json @@ -2157,6 +2157,25 @@ "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] } }, + "/api/cron/vidis-angebote": { + "put": { + "operationId": "CronController_updateServiceProvidersForVidisAngebote", + "parameters": [], + "responses": { + "201": { + "description": "VIDIS Angebote were successfully updated.", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { "description": "VIDIS Angebote were not successfully updated." }, + "401": { "description": "Not authorized to update VIDIS Angebote." }, + "403": { "description": "Insufficient permissions to update VIDIS Angebote." }, + "404": { "description": "Insufficient permissions to update VIDIS Angebote." }, + "500": { "description": "Internal server error while trying to update VIDIS Angebote." } + }, + "tags": ["cron"], + "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] + } + }, "/api/import/upload": { "post": { "operationId": "ImportController_uploadFile", @@ -2192,10 +2211,7 @@ } }, "responses": { - "200": { - "description": "Import transaction was executed successfully. The text file can be downloaded", - "content": { "text/plain": { "schema": { "type": "string", "format": "binary" } } } - }, + "204": { "description": "The execution of the import transaction was initiated successfully." }, "400": { "description": "Something went wrong with the found import transaction.", "content": { "text/plain": { "schema": { "$ref": "#/components/schemas/DbiamImportError" } } } @@ -2236,6 +2252,130 @@ "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] } }, + "/api/import/history": { + "get": { + "operationId": "ImportController_findImportTransactions", + "summary": "", + "description": "Get the history of import.", + "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": "status", + "required": false, + "in": "query", + "schema": { "$ref": "#/components/schemas/ImportStatus" } + }, + { + "name": "rolleIds", + "required": false, + "in": "query", + "schema": { "type": "array", "items": { "type": "string" } } + }, + { + "name": "organisationIds", + "required": false, + "in": "query", + "description": "Liefert Importvorgänge 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 import transactions 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/ImportVorgangResponse" } } + } + } + }, + "401": { "description": "Not authorized to get import transactions." }, + "403": { "description": "Insufficient permissions to get import transactions." }, + "500": { "description": "Internal server error while getting import transactions." } + }, + "tags": ["import"], + "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] + } + }, + "/api/import/{importvorgangId}/download": { + "get": { + "operationId": "ImportController_downloadFile", + "parameters": [ + { + "name": "importvorgangId", + "required": true, + "in": "path", + "description": "The id of an import transaction", + "schema": { "nullable": false, "type": "string" } + } + ], + "responses": { + "200": { + "description": "The import result file was generated and downloaded successfully.", + "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 download the import result." }, + "403": { "description": "Insufficient permissions to download the import result." }, + "404": { "description": "The import transaction does not exist." }, + "500": { "description": "Internal server error while generating the import result file." } + }, + "tags": ["import"], + "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] + } + }, + "/api/import/{importvorgangId}/status": { + "get": { + "operationId": "ImportController_getImportStatus", + "summary": "", + "description": "Get status for the import transaction by id.", + "parameters": [ + { + "name": "importvorgangId", + "required": true, + "in": "path", + "description": "The id of an import transaction", + "schema": { "nullable": false, "type": "string" } + } + ], + "responses": { + "200": { + "description": "The status for the import transaction was successfully returned.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ImportVorgangStatusResponse" } } + } + }, + "401": { "description": "Not authorized to get the status for the import transaction by id." }, + "403": { "description": "Insufficient permission to get status for the import transaction by id." }, + "500": { "description": "Internal server error while getting status for the import transaction by id." } + }, + "tags": ["import"], + "security": [{ "oauth2": ["openid"] }, { "bearer": [] }] + } + }, "/metrics": { "get": { "operationId": "MetricsController_getMetrics", @@ -2252,6 +2392,20 @@ "responses": { "200": { "description": "" } }, "tags": ["status"] } + }, + "/api/config": { + "get": { + "operationId": "ConfigController_getFeatureFlags", + "parameters": [], + "responses": { + "200": { + "description": "The feature flag config was successfully returned.", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeatureFlagResponse" } } } + }, + "500": { "description": "Internal server error while getting the config." } + }, + "tags": ["config"] + } } }, "info": { @@ -2294,6 +2448,11 @@ }, "required": ["organisationsId", "rolle"] }, + "PersonTimeLimitInfoResponse": { + "type": "object", + "properties": { "occasion": { "type": "string" }, "deadline": { "type": "string" } }, + "required": ["occasion", "deadline"] + }, "UserinfoResponse": { "type": "object", "properties": { @@ -2321,7 +2480,8 @@ "type": "array", "items": { "$ref": "#/components/schemas/PersonenkontextRolleFieldsResponse" } }, - "acr": { "type": "string", "nullable": false } + "acr": { "type": "string", "nullable": false }, + "timeLimits": { "type": "array", "items": { "$ref": "#/components/schemas/PersonTimeLimitInfoResponse" } } }, "required": [ "sub", @@ -2345,7 +2505,8 @@ "updated_at", "password_updated_at", "personenkontexte", - "acr" + "acr", + "timeLimits" ] }, "CreatePersonMigrationBodyParams": { @@ -2601,7 +2762,8 @@ "typ": { "nullable": true, "$ref": "#/components/schemas/OrganisationsTyp" }, "editable": { "type": "boolean" }, "befristung": { "format": "date-time", "type": "string" }, - "merkmale": { "nullable": true, "$ref": "#/components/schemas/RollenMerkmal" } + "merkmale": { "nullable": true, "$ref": "#/components/schemas/RollenMerkmal" }, + "admins": { "type": "array", "items": { "type": "string" } } }, "required": [ "sskId", @@ -2614,7 +2776,8 @@ "typ", "editable", "befristung", - "merkmale" + "merkmale", + "admins" ] }, "DBiamPersonenuebersichtResponse": { @@ -3423,11 +3586,9 @@ "ImportvorgangByIdBodyParams": { "type": "object", "properties": { - "importvorgangId": { "type": "string", "description": "The id of an import transaction", "nullable": false }, - "organisationId": { "type": "string" }, - "rolleId": { "type": "string" } + "importvorgangId": { "type": "string", "description": "The id of an import transaction", "nullable": false } }, - "required": ["importvorgangId", "organisationId", "rolleId"] + "required": ["importvorgangId"] }, "DbiamImportError": { "type": "object", @@ -3440,12 +3601,44 @@ "CSV_FILE_EMPTY_ERROR", "IMPORT_TEXT_FILE_CREATION_ERROR", "IMPORT_NUR_LERN_AN_SCHULE_ERROR", - "CSV_FILE_INVALID_HEADER_ERROR" + "CSV_FILE_INVALID_HEADER_ERROR", + "IMPORT_MAX_USERS_LIMIT_ERROR", + "CSV_FILE_NO_USERS_ERROR" ] }, "code": { "type": "number", "description": "Corresponds to HTTP Status code like 200, 404, 500" } }, "required": ["i18nKey", "code"] + }, + "ImportStatus": { + "type": "string", + "enum": ["CANCELLED", "COMPLETED", "FAILED", "FINISHED", "INPROGRESS", "INVALID", "STARTED", "VALID"] + }, + "ImportVorgangResponse": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "createdAt": { "format": "date-time", "type": "string" }, + "updatedAt": { "format": "date-time", "type": "string" }, + "rollenname": { "type": "string" }, + "organisationsname": { "type": "string" }, + "dataItemCount": { "type": "number" }, + "status": { "$ref": "#/components/schemas/ImportStatus" } + }, + "required": ["id", "createdAt", "updatedAt", "rollenname", "organisationsname", "dataItemCount", "status"] + }, + "ImportVorgangStatusResponse": { + "type": "object", + "properties": { "status": { "$ref": "#/components/schemas/ImportStatus" } }, + "required": ["status"] + }, + "FeatureFlagResponse": { + "type": "object", + "properties": { + "rolleBearbeitenEnabled": { "type": "boolean" }, + "befristungBearbeitenEnabled": { "type": "boolean" } + }, + "required": ["rolleBearbeitenEnabled", "befristungBearbeitenEnabled"] } } }