diff --git a/src/openapi/customers/SE-customers.yaml b/src/openapi/customers/SE-customers.yaml index a9316b9..1f0c2cd 100644 --- a/src/openapi/customers/SE-customers.yaml +++ b/src/openapi/customers/SE-customers.yaml @@ -13,11 +13,12 @@ tags: Service Engine APIs for HTM Customers. These are NOT the CRUD APIs to access raw data in the database. To be used by touchpoints to get information about HTM customers. paths: - /customers: + /customers: get: tags: - ServiceEngine Customers - summary: Get a customer profile based on search parameters, only returns a unique profile + summary: Get a single customer profile based on search parameters + description: Get a single customer profile based on search parameters. Only returns a profile if a single result matches the parameters; when multiple results are found, additional seach parameters are required to disambiguate. parameters: - name: customerProfileId in: query @@ -28,17 +29,17 @@ paths: in: query schema: type: integer - example: 1 + example: 1000001 - name: debtorNumber in: query schema: type: integer - example: 1 + example: 100001 - name: birthname in: query schema: type: string - example: Jon + example: John - name: surname in: query schema: @@ -49,7 +50,7 @@ paths: schema: type: string format: email - example: jon.doe@mymailprovider.com + example: john.doe@mymailprovider.com - name: dateOfBirth in: query schema: @@ -90,7 +91,7 @@ paths: in: query schema: type: string - example: The Netherlands + example: "0123456789" - name: ovChipcardNumber in: query schema: @@ -123,17 +124,53 @@ paths: example: e1307c73-676a-4d07-967b-6141276f7c7c responses: '200': - description: Ok + description: OK content: application/json: schema: $ref: '#/components/schemas/CustomersResponse' '404': - description: Customer not found + description: No customer found content: application/json: - schema: - $ref: '#/components/schemas/CustomersResponse' + example: + { + "type": "https://api.integratielaag.nl/abt/serviceengine/1.0/customers", + "apiErrorCode": "400.1", + "title": "Niet gevonden", + "detail": "Klant niet gevonden", + "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", + "errors": [ + { + "subApiErrorCode": "0017" + } + ] + } + '409': + description: Multiple customers found + content: + application/json: + example: + { + "type": "https://api.integratielaag.nl/abt/serviceengine/1.0/customers", + "apiErrorCode": "409.1", + "title": "Meer dan 1 klantprofiel gevonden", + "detail": "Meer dan 1 klantprofiel gevonden. Verfijn je zoekcriteria.", + "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7" + } + /customers/tokens: + get: + tags: + - ServiceEngine Customers + summary: Get a list of all OvPayTokens for a certain customer + description: Get a list of all OvPayTokens for a certain customer. + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/OvPayTokensResponse' /customers/tokens/{tokenId}/product-instances: get: tags: @@ -166,6 +203,335 @@ paths: Entries: [] components: schemas: + CustomersResponse: + type: object + properties: + customerProfileId: + type: integer + example: 1 + customerNumber: + type: integer + example: 1000001 + debtorNumber: + type: string + example: DB100001 + customerStatus: + type: object + properties: + customerStatusId: + type: integer + example: 1 + name: + type: string + example: Active + person: + type: object + properties: + prefix: + type: string + example: Mr + birthname: + type: string + example: John + surname: + type: string + example: Doe + suffix: + type: string + example: Jr. + dateOfBirth: + type: string + format: date + example: '2023-02-01' + emailAdress: + type: string + format: email + example: 4j2dD@example.com + addresses: + type: array + items: + type: object + properties: + addressId: + type: integer + example: 1 + isPreferred: + type: boolean + example: true + addressType: + type: object + properties: + addressTypeId: + type: integer + example: 1 + name: + type: string + example: Brug + street: + type: string + example: Appelstraat + houseNumber: + type: integer + example: 1 + houseNumberSuffix: + type: string + example: BS + postalCode: + type: string + example: 1234AB + city: + type: string + example: Den Haag + country: + type: string + example: Nederland + _links: + type: object + properties: + delete: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/addresses/1 + method: + type: string + example: DELETE + phones: + type: array + items: + type: object + properties: + phoneId: + type: integer + example: 1 + isPreferred: + type: boolean + example: true + phoneType: + type: object + properties: + phoneTypeId: + type: integer + example: 1 + name: + type: string + example: Mobiel + number: + type: string + example: "0123456789" + countryCode: + type: string + example: "0031" + _links: + type: object + properties: + delete: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/phones/1 + method: + type: string + example: DELETE + _links: + type: object + properties: + partial_edit: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers + method: + type: string + example: PATCH + templated: + type: boolean + example: true + get_tokens: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens + method: + type: string + example: GET + templated: + type: boolean + example: true + create_token: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens + method: + type: string + example: POST + templated: + type: boolean + example: true + _templates: + type: object + properties: + partial_edit: + type: object + properties: + method: + type: string + example: PATCH + properties: + example: + [ + { name: person, required: true, properties: [ + { name: prefix, required: false, type: string }, + { name: birthname, required: false, type: string }, + { name: surname, required: false, type: string }, + { name: suffix, required: false, type: string }, + { name: dateOfBirth, required: false, type: string }, + { name: emailAdress, required: false, type: string }, + { name: addresses, required: false, multi: true, properties: [ + { name: addressId, required: false, type: integer }, + { name: isPreferred, required: false, type: boolean }, + { name: addressTypeId, required: false, type: integer }, + { name: street, required: false, type: string }, + { name: houseNumber, required: false, type: integer }, + { name: houseNumberSuffix, required: false, type: string }, + { name: postalCode, required: false, type: string }, + { name: city, required: false, type: string }, + { name: country, required: false, type: string } + ]}, + { name: phones, required: false, multi: true, properties: [ + { name: phoneId, required: false, type: integer }, + { name: isPreferred, required: false, type: boolean }, + { name: phoneTypeId, required: false, type: integer }, + { name: number, required: false, type: string }, + { name: countryCode, required: false, type: string } + ]} + ] } + ] + create_token: + type: object + properties: + method: + type: string + example: POST + properties: + example: + [ + { name: ovPayToken, required: true, properties: [ + { name: tokenTypeId, required: true, type: integer }, + { name: alias, required: true, type: string }, + { name: serviceReferenceId, required: false, type: string }, + { name: amount, required: false, type: integer }, + ]} + ] + + OvPayTokensResponse: + type: object + required: + - ovPayTokens + properties: + Entries: + type: array + items: + type: object + properties: + ovPayTokenId: + type: integer + example: 1 + tokenType: + type: object + properties: + tokenTypeId: + type: integer + example: 1 + name: + type: string + example: EMV + alias: + type: string + example: MyToken + tokenStatus: + type: object + properties: + tokenStatusId: + type: integer + example: 1 + name: + type: string + example: Active + expirationDate: + type: string + format: date + example: '2023-02-01' + replacedByTokenId: + type: integer + example: 1 + _links: + type: object + properties: + partial_edit: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens/1 + method: + type: string + example: PATCH + templated: + type: boolean + example: true + delete: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens/1 + method: + type: string + example: DELETE + product-instances: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens/1/product-instances + method: + type: string + example: GET + trips: + type: object + properties: + href: + type: string + example: https://api.integratielaag.nl/abt/serviceengine/1.0/customers/tokens/1/trips + method: + type: string + example: GET + _templates: + type: object + properties: + partial_edit: + type: object + properties: + method: + type: string + example: PATCH + properties: + example: + [ + { name: ovPayToken, required: true, properties: [ + { name: tokenStatusId, required: false, type: integer }, + { name: alias, required: false, type: string } + ]} + ] + + TokenProductInstancesResponse: type: object required: @@ -173,5 +539,5 @@ components: properties: Entries: type: array - CustomersResponse: - type: object + +