From bc50dc58eaef93f34c5b5779a62fc120b3e07f39 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Mon, 28 Jul 2025 10:32:15 +0200 Subject: [PATCH] padp-poc-openapi.yaml --- src/openapi/pad/padp-poc-openapi.yaml | 760 ++++++++++++++++++++++++++ 1 file changed, 760 insertions(+) create mode 100644 src/openapi/pad/padp-poc-openapi.yaml diff --git a/src/openapi/pad/padp-poc-openapi.yaml b/src/openapi/pad/padp-poc-openapi.yaml new file mode 100644 index 0000000..481e878 --- /dev/null +++ b/src/openapi/pad/padp-poc-openapi.yaml @@ -0,0 +1,760 @@ +openapi: 3.0.1 +info: + title: PadpReferenceApi + version: '1.0' +paths: + /poc/encrypt-decrypt-poc: + get: + tags: + - Encrypt/decrypt POC + summary: Encrypt/Decrypt POC + operationId: EncryptDecryptPoc + parameters: + - name: textToEncrypt + in: header + required: true + schema: + type: string + - name: encryptedEphemeralKey + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + text/plain: + schema: + type: string + /poc/encrypt-poc: + get: + tags: + - Encrypt/decrypt POC + summary: Encrypt POC + operationId: EncryptPoc + parameters: + - name: textToEncrypt + in: header + required: true + schema: + type: string + - name: encryptedEphemeralKey + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + text/plain: + schema: + type: string + /poc/decrypt-poc: + get: + tags: + - Encrypt/decrypt POC + summary: Decrypt POC + operationId: DecryptPoc + parameters: + - name: textToDecrypt + in: header + required: true + schema: + type: string + - name: encryptedEphemeralKey + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + text/plain: + schema: + type: string + /idp/b2b-access-token: + get: + tags: + - PADP Reference API + summary: API 1020 - Get B2B Access Token + description: Returns a client access token, needed for most other PADP APIs. + operationId: GetB2bAccessToken + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/B2bAccessToken' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /get-image-from-base64: + get: + tags: + - PADP Reference API + summary: Get rendered image from Base64 encoded String + operationId: GetImageFromBase64 + parameters: + - name: base64String + in: header + required: true + schema: + type: string + responses: + '200': + description: OK + content: + image/jpeg: + schema: + $ref: '#/components/schemas/FileContentHttpResult' + /personal-data/{xtat}: + post: + tags: + - PADP Reference API + summary: API 1201 - Create Personal Data - First create an ephemeral key using API 1210! + description: First create an ephemeral key using API 1210! + operationId: CreatePersonalData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + - name: email + in: query + description: Email address to be used for OTP challenges + required: true + schema: + type: string + - name: name + in: query + description: Should be at least two words (first name and last name) + schema: + type: string + - name: birthDate + in: query + description: Should be a date between 1900-01-01 and now, in the format YYYY-MM-DD + schema: + type: string + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + photo: + type: string + description: Should be a JPG image, of max. 512KB and resolution between 520x520 and 720x720 + format: binary + encoding: + photo: + style: form + responses: + '201': + description: Created + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - PADP Reference API + summary: API 1202 - Get Personal Data- First perform an OTP challenge using API 1206 and 1207! + description: First perform an OTP challenge using API 1206 and 1207! + operationId: GetPersonalData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalData' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - PADP Reference API + summary: API 1204 - Delete Personal Data - First perform an OTP challenge using API 1206 and 1207! + description: First perform an OTP challenge using API 1206 and 1207! + operationId: DeletePersonalData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeletePersonalDataResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - PADP Reference API + summary: API 1205 - Update Personal Data - First perform an OTP challenge using API 1206 and 1207! + description: First perform an OTP challenge using API 1206 and 1207!Performs a complete replacement; empty request parameters will result in the corresponding PADP attribute being deleted. + operationId: UpdatePersonalData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + - name: skipUpdateCounter + in: query + required: true + schema: + type: boolean + - name: name + in: query + description: Should be at least two words (first name and last name) + schema: + type: string + - name: birthDate + in: query + description: Should be a date between 1900-01-01 and now, in the format YYYY-MM-DD + schema: + type: string + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + photo: + type: string + description: Should be a JPG image, of max. 512KB and resolution between 520x520 and 720x720 + format: binary + encoding: + photo: + style: form + responses: + '200': + description: OK + /personal-data/{xtat}/decrypted: + get: + tags: + - PADP Reference API + summary: API 1202 - Get Personal Data AND decrypt response - First perform an OTP challenge using API 1206 and 1207! + description: First perform an OTP challenge using API 1206 and 1207! + operationId: GetDecryptedPersonalData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DecryptedPersonalData' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /personal-data/{xtat}/generate-otp: + get: + tags: + - PADP Reference API + summary: API 1206 - Generate OTP + operationId: GenerateOtp + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OtpResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /personal-data/{xtat}/validate-otp: + get: + tags: + - PADP Reference API + summary: API 1207 - Validate OTP + operationId: ValidateOtp + parameters: + - name: xtat + in: path + required: true + schema: + type: string + - name: otp + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserAccessToken' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /personal-data/{xtat}/encrypted-update-init: + get: + tags: + - PADP Reference API + summary: API 1210 - Create Ephemeral Key + operationId: CreateEphemeralKey + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/EphemeralKey' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /personal-data/{xtat}/administrative-data: + get: + tags: + - PADP Reference API + summary: API 1211 - Get Administrative Data + operationId: GetAdministrativeData + parameters: + - name: xtat + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdministrativeData' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' +components: + schemas: + AdministrativeData: + type: object + properties: + name: + $ref: '#/components/schemas/AdministrativeDataElement' + photo: + $ref: '#/components/schemas/AdministrativeDataElement' + birthdate: + $ref: '#/components/schemas/AdministrativeDataElement' + additionalProperties: false + AdministrativeDataElement: + type: object + properties: + inaccuracyFlag: + type: boolean + inaccuracyFlagReason: + type: string + nullable: true + inaccuracyFlagCounter: + type: integer + format: int32 + changeCounter: + type: integer + format: int32 + maxUpdatesVerificationCount: + type: integer + format: int32 + lastChangeDate: + type: string + format: date-time + isValidated: + type: boolean + additionalProperties: false + B2bAccessToken: + type: object + properties: + access_token: + type: string + nullable: true + expires_in: + type: integer + format: int32 + refresh_expires_in: + type: integer + format: int32 + refresh_token: + type: string + nullable: true + token_type: + type: string + nullable: true + not-before-policy: + type: integer + format: int32 + scope: + type: string + nullable: true + BE_ID: + type: string + nullable: true + additionalProperties: false + ByteReadOnlyMemory: + type: object + properties: + length: + type: integer + format: int32 + readOnly: true + isEmpty: + type: boolean + readOnly: true + span: + $ref: '#/components/schemas/ByteReadOnlySpan' + additionalProperties: false + ByteReadOnlySpan: + type: object + properties: + length: + type: integer + format: int32 + readOnly: true + isEmpty: + type: boolean + readOnly: true + additionalProperties: false + Data: + type: object + properties: + name: + type: string + nullable: true + birthdate: + type: string + nullable: true + photo: + type: string + nullable: true + additionalProperties: false + DecryptedData: + type: object + properties: + decryptedName: + type: string + nullable: true + decryptedBirthdate: + type: string + nullable: true + decryptedPhoto: + type: string + description: Base64 encoded photo + format: byte + nullable: true + additionalProperties: false + DecryptedPersonalData: + type: object + properties: + decryptedData: + $ref: '#/components/schemas/DecryptedData' + encryptedData: + $ref: '#/components/schemas/PersonalData' + additionalProperties: false + DeletePersonalDataResponse: + type: object + properties: + deletedAttributes: + type: array + items: + type: string + nullable: true + additionalProperties: false + EntityTagHeaderValue: + type: object + properties: + tag: + $ref: '#/components/schemas/StringSegment' + isWeak: + type: boolean + readOnly: true + additionalProperties: false + EphemeralKey: + type: object + properties: + ephemeralKeyAlias: + type: string + nullable: true + encryptedEphemeralKey: + type: string + nullable: true + additionalProperties: false + Error: + type: object + properties: + code: + type: string + nullable: true + data: + type: array + items: + type: string + nullable: true + message: + type: string + nullable: true + additionalProperties: false + ErrorResponse: + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + nullable: true + exceptionClassName: + type: string + nullable: true + exceptionStackTrace: + type: string + nullable: true + additionalProperties: false + FileContentHttpResult: + type: object + properties: + contentType: + type: string + nullable: true + readOnly: true + fileDownloadName: + type: string + nullable: true + readOnly: true + lastModified: + type: string + format: date-time + nullable: true + readOnly: true + entityTag: + $ref: '#/components/schemas/EntityTagHeaderValue' + enableRangeProcessing: + type: boolean + readOnly: true + fileLength: + type: integer + format: int64 + nullable: true + readOnly: true + fileContents: + $ref: '#/components/schemas/ByteReadOnlyMemory' + additionalProperties: false + Metadata: + type: object + properties: + encryptedEphemeralKey: + type: string + nullable: true + additionalProperties: false + OtpResponse: + type: object + properties: + maskedEmailAddress: + type: string + nullable: true + additionalProperties: false + PersonalData: + type: object + properties: + metadata: + $ref: '#/components/schemas/Metadata' + data: + $ref: '#/components/schemas/Data' + additionalProperties: false + StringSegment: + type: object + properties: + buffer: + type: string + nullable: true + offset: + type: integer + format: int32 + readOnly: true + length: + type: integer + format: int32 + readOnly: true + value: + type: string + nullable: true + readOnly: true + hasValue: + type: boolean + readOnly: true + additionalProperties: false + UserAccessToken: + type: object + properties: + accessToken: + type: string + nullable: true + additionalProperties: false