features/TP-notifications #34

Merged
MirjamHTM merged 16 commits from features/TP-notifications into develop 2025-11-06 09:18:20 +00:00
Showing only changes of commit e73e3bd779 - Show all commits

View File

@ -40,7 +40,6 @@ paths:
{ {
"notificationCategoryId": 1, "notificationCategoryId": 1,
"name": "Nieuwsbrief", "name": "Nieuwsbrief",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 1, "eventTypeId": 1,
@ -69,7 +68,6 @@ paths:
{ {
"notificationCategoryId": 2, "notificationCategoryId": 2,
"name": "Mijn Reizen", "name": "Mijn Reizen",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 2, "eventTypeId": 2,
@ -138,7 +136,6 @@ paths:
{ {
"notificationCategoryId": 3, "notificationCategoryId": 3,
"name": "Mijn Passen", "name": "Mijn Passen",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 4, "eventTypeId": 4,
@ -214,7 +211,6 @@ paths:
{ {
"notificationCategoryId": 1, "notificationCategoryId": 1,
"name": "Nieuwsbrief", "name": "Nieuwsbrief",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 1, "eventTypeId": 1,
@ -232,7 +228,6 @@ paths:
{ {
"notificationCategoryId": 2, "notificationCategoryId": 2,
"name": "Mijn Reizen", "name": "Mijn Reizen",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 2, "eventTypeId": 2,
@ -261,7 +256,6 @@ paths:
{ {
"notificationCategoryId": 3, "notificationCategoryId": 3,
"name": "Mijn Passen", "name": "Mijn Passen",
"optinRequired": False,
"eventTypes": [ "eventTypes": [
{ {
"eventTypeId": 4, "eventTypeId": 4,
@ -296,18 +290,15 @@ paths:
"notificationCategories":[ "notificationCategories":[
{ {
"notificationCategoryId": 1, "notificationCategoryId": 1,
"name": "Nieuwsbrief", "name": "Nieuwsbrief"
"optinRequired": False
}, },
{ {
"notificationCategoryId": 2, "notificationCategoryId": 2,
"name": "Mijn Reizen", "name": "Mijn Reizen"
"optinRequired": False
}, },
{ {
"notificationCategoryId": 3, "notificationCategoryId": 3,
"name": "Mijn Passen", "name": "Mijn Passen"
"optinRequired": False
} }
] ]
} }
@ -327,7 +318,7 @@ paths:
/notificationsubscriptions: /notificationsubscriptions:
get: get:
tags: tags:
- Notifications - Notification subscriptions
summary: Get all possible notificationSubscriptions for a customer (account or private). summary: Get all possible notificationSubscriptions for a customer (account or private).
description: | description: |
Get all possible notificationSubscriptions for a customer (account or private), including if they have opted-in for it. Get all possible notificationSubscriptions for a customer (account or private), including if they have opted-in for it.
@ -361,363 +352,48 @@ paths:
example: john.doe@mymailprovider.com example: john.doe@mymailprovider.com
required: false required: false
description: The emailadress of the customer in the case of anonymous opt-ins description: The emailadress of the customer in the case of anonymous opt-ins
- name: nested
in: query
schema:
type: boolean
default: true
required: false
description: Return subscriptions nested, so it is presentation ready for touchpoint (default), if false only return the notificationSubcriptions as a flat list
responses: responses:
"200": "200":
description: OK description: OK
content: content:
application/json: application/json:
examples: examples:
getNotifactionSubscriptionsWithAccountNestedTrue: getNotifactionSubscriptionsAll:
summary: Return all the notification subscriptions when the user is logged in with an account/ identified by SMP in a nested form summary: Return all the notification subscriptions where for each category the client has actively opted in or out - All
value: value:
{ {
"customer":{
"customerProfileId":"f1ba488b-7b2f-46c2-b72f-f24fe25a81e5",
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"notificationCategory":[
{
"notificationCategoryId": 1,
"status": "on",
"eventTypes":[
{
"eventTypeId": 1,
"status": "on",
"eventTypeChannels":[
{
"eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd",
"notificationSubscriptions":[ "notificationSubscriptions":[
{ {
"notificationSubscriptionId":"", "notificationSubscriptionId": "64047471-e0c3-4abc-b4eb-83a12a6de903",
"ovpayToken": null, "notificationCategoryId": 1,
"isActive": True "isActive": true
}
]
}
]
}
]
}, },
{ {
"notificationSubscriptionId": "571388cd-8903-40d5-89e6-9191cb8d656e",
"notificationCategoryId": 2, "notificationCategoryId": 2,
"status": "off", "isActive": true
"eventTypes":[
{
"eventTypeId": 2,
"status": "off",
"eventTypeChannels":[
{
"eventTypeChannelId": "ccc8c025-06b5-4928-a632-23e1c55cd173",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayToken":{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayToken": {
"ovPayTokenId": 138,
"alias": "Mijn ING pas"
},
"isActive": False
}
]
},
{
"eventTypeChannelId": "da2deb4c-ce77-4b5f-aecc-ddebfd14349d",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayToken":{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayToken": {
"ovPayTokenId": 138,
"alias": "Mijn ING pas"
},
"isActive": False
}
]
}
]
},
{
"eventTypeId": 3,
"status": "off",
"eventTypeChannels":[
{
"eventTypeChannelId": "8e7df8f1-7e50-482f-8301-d399e75fd432",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayTokenId": 136,
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayTokenId": 138,
"isActive": False
}
]
},
{
"eventTypeChannelId": "72960a92-1855-469f-9cfd-5d72f57106f2",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayTokenId": 136,
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayTokenId": 138,
"isActive": False
}
]
}
]
}
]
}, },
{ {
"notificationSubscriptionId": "cf736ff2-2f8f-434e-a3c7-a14064b73c9b",
"notificationCategoryId": 3, "notificationCategoryId": 3,
"status": "partial", "isActive": false
"eventTypes":[
{
"eventTypeId": 4,
"status": "on",
"eventTypeChannels":[
{
"eventTypeChannelId": "ccc8c025-06b5-4928-a632-23e1c55cd173",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayToken":{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": True
},
{
"notificationSubscriptionId":"",
"ovpayToken": {
"ovPayTokenId": 138,
"alias": "Mijn ING pas"
},
"isActive": False
}
]
},
{
"eventTypeChannelId": "da2deb4c-ce77-4b5f-aecc-ddebfd14349d",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayToken":{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayToken": {
"ovPayTokenId": 138,
"alias": "Mijn ING pas"
},
"isActive": False
} }
] ]
} }
] getNotifactionSubscriptionsSome:
}, summary: Return all the notification subscriptions where for each category the client has actively opted in or out - Some
{
"eventTypeId": 5,
"status": "off",
"eventTypeChannels":[
{
"eventTypeChannelId": "8e7df8f1-7e50-482f-8301-d399e75fd432",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayTokenId": 136,
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayTokenId": 138,
"isActive": False
}
]
},
{
"eventTypeChannelId": "72960a92-1855-469f-9cfd-5d72f57106f2",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"",
"ovpayTokenId": 136,
"isActive": False
},
{
"notificationSubscriptionId":"",
"ovpayTokenId": 138,
"isActive": False
}
]
}
]
}
]
}
]
}
getNotifactionSubscriptionsWithAccountNestedFalse:
summary: Return all the notification subscriptions when the user is logged in with an account/ identified by SMP as a flat list
value: value:
{ {
"notificationSubscriptions":[ "notificationSubscriptions": [
{ {
"notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae", "notificationSubscriptionId": "64047471-e0c3-4abc-b4eb-83a12a6de903",
"notificationCategoryId": 1, "notificationCategoryId": 1,
"eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd", "isActive": true
"customer":{
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"ovpayTokenId": null,
"isActive": True
}, },
{ {
"notificationSubscriptionId": "17e87b99-014f-491f-87db-39b92ffd2b1d", "notificationSubscriptionId": "cf736ff2-2f8f-434e-a3c7-a14064b73c9b",
"notificationCategoryId": 3, "notificationCategoryId": 3,
"eventTypeChannelId": "be07c7bb-714b-4637-acf5-a67025ad8e60", "isActive": false
"customer":{
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"ovpayToken":
{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": True
},
{
"notificationSubscriptionId": "17e87b99-014f-491f-87db-39b92ffd2b1d",
"notificationCategoryId": 3,
"eventTypeChannelId": "be07c7bb-714b-4637-acf5-a67025ad8e60",
"customer":{
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"ovpayToken":
{
"ovPayTokenId": 134,
"alias": "Mijn Rabopas"
},
"isActive": True
},
{
"notificationSubscriptionId": "17e87b99-014f-491f-87db-39b92ffd2b1d",
"notificationCategoryId": 3,
"eventTypeChannelId": "be07c7bb-714b-4637-acf5-a67025ad8e60",
"customer":{
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"ovpayTokenId": 101,
"ovpayToken":
{
"ovPayTokenId": 101,
"alias": "Mijn ING pas"
},
"isActive": False
}
]
}
getNotifactionSubscriptionsWithEmailNestedTrue:
summary: Return all the notification subscriptions when the user has identified themselves by email
description: Return all the notification subscriptions when the user has identified themselves by email, but the email is not verified
value:
{
"customer":{
"customerProfileId": "d6771347-b56f-4020-92bb-7c77c8f13f40",
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": False
},
"notificationCategory":[
{
"notificationCategoryId": 1,
"status": "on",
"eventTypes":[
{
"eventTypeId": 1,
"status": "on",
"eventTypeChannels":[
{
"eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd",
"notificationSubscriptions":[
{
"notificationSubscriptionId":"882b33ef-b750-44f9-a1e0-bed8fe1b4e0b",
"ovpayToken": null,
"isActive": True
}
]
}
]
}
]
}
]
}
getNotifactionSubscriptionsAnonymousNestedTrue:
summary: Return all the notification subscriptions when the user is not identifiable, return customerobject with id if customer decides to opt in.
value:
{
"customer":{
"customerProfileId": "71e3cc93-ab16-4dc8-beed-7c7abfb3f09c",
"emailAddress": null,
"isEmailVerified": False
},
"notificationCategory":[
{
"notificationCategoryId": 1,
"status": "off",
"eventTypes":[
{
"eventTypeId": 1,
"status": "off",
"eventTypeChannels":[
{
"eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd",
"notificationSubscriptions":[
{
"notificationSubscriptionId": "fde46cac-7dd3-46d0-86c0-fcab685998ad",
"ovpayToken": null,
"isActive": False
}
]
}
]
}
]
} }
] ]
} }
@ -747,10 +423,121 @@ paths:
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7",
"errors": [{ "subApiErrorCode": "0017" }], "errors": [{ "subApiErrorCode": "0017" }],
} }
post:
MirjamHTM marked this conversation as resolved
Review
https://htm-prod.atlassian.net/browse/OVPAY-1499
tags:
- Notification subscriptions
summary: Create a new notificationSubscription for a customer (account or private).
description: |
Create a notificationSubscriptions for a customer (account or private), including if they have opted-in for it.
parameters:
- name: X-HTM-JWT-AUTH-HEADER
in: header
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
required: false
description: The JWT of a customer in case of touchpoint were customer logs in themselves
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
MirjamHTM marked this conversation as resolved Outdated
https://htm-prod.atlassian.net/browse/OVPAY-1499
in: header
schema:
type: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
description: The role of the HTM employee in the case of the SMP

Klopt het dat alle params niet verplicht zijn?

Klopt het dat alle params niet verplicht zijn?

Klopt heeft te maken met hoe het endpoint benaderd wordt, ingelogd, SMP of anoniem.

Klopt heeft te maken met hoe het endpoint benaderd wordt, ingelogd, SMP of anoniem.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Create notificationSubscription anonymous active:
value:
{
"emailAddress": "anonymous@mymailprovider.com",
"notificationCategoryId": 1,
"isActive": True
}
Create notificationSubscription anonymous inactive:
value:
{
"emailAddress": "anonymous@mymailprovider.com",
"notificationCategoryId": 1,
"isActive": False
}
Create notificationSubscription account active:
value:
{
"notificationCategoryId": 2,
"isActive": True
}
Create notificationSubscription account inactive:
value:
{
"notificationCategoryId": 3,
"isActive": False
}
responses:
"201":
description: Created
content:
application/json:
examples:
Create notificationSubscription anonymous active:
summary: Return the created notification for an anonymous user active
value:
{
"notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae",
"notificationCategoryId": 1,
"isActive": True
}
Create notificationSubscription anonymous inactive:
summary: Return the created notification for an anonymous user inactive
value:
{
"notificationSubscriptionId": "d51081fd-c48d-4111-8de4-ac5db7d47ecb",
"notificationCategoryId": 1,
"isActive": False
}
Create notificationSubscription account active:
summary: Return the created notification for an anonymous user active
value:
{
"notificationSubscriptionId": "6b88eba1-af1f-42fc-82d3-d7202d5f1afe",
"notificationCategoryId": 2,
"isActive": True
}
Create notificationSubscription account inactive:
summary: Return the created notification for an anonymous user inactive
value:
{
"notificationSubscriptionId": "0dfc0ac9-c221-4493-8828-9dfa79ad9061",
"notificationCategoryId": 3,
"isActive": False
}
"405":
description: Method not allowed
content:
application/json:
example:
{
"type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications",
"apiErrorCode": "405",
"title": "Methode ",
"detail": "Notificatie niet gevonden",
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7",
"errors": [{ "subApiErrorCode": "0017" }],
}
/notificationsubscriptions/{notificationSubscriptionId}: /notificationsubscriptions/{notificationSubscriptionId}:
patch: patch:
tags: tags:
- Notifications - Notification subscriptions
summary: Update a notificationSubscription for a customer (account or private). summary: Update a notificationSubscription for a customer (account or private).
description: | description: |
Update a notificationSubscription for a customer (account or private). Update a notificationSubscription for a customer (account or private).
@ -820,14 +607,227 @@ paths:
{ {
"notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae", "notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae",
"notificationCategoryId": 1, "notificationCategoryId": 1,
"eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd",
"customer":{
"emailAddress": "j.jansen@mymailprovider.nl",
"isEmailVerified": True
},
"ovpayTokenId": null,
"isActive": False "isActive": False
} }
Update a notificationSubscription to active:
summary: Return the updated notification
value:
{
"notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae",
"notificationCategoryId": 1,
"isActive": True
}
/notificationsubscriptions/{notificationSubscriptionId}/notificationpreferences:
get:
tags:
- Notification preferences
summary: Get all possible latest notificationPreferences for a customer (account or private) for a specific notificationSubscription.
description: |
Get all possible notificationPreferences for a customer (account or private) for a specific notificationSubscription.
parameters:
- name: X-HTM-JWT-AUTH-HEADER
in: header
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
required: false
description: The JWT of a customer in case of touchpoint were customer logs in themselves
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
in: header
schema:
type: string
MirjamHTM marked this conversation as resolved Outdated

Misschien ff de summary aanpassen. Die is nu gelijk voor beide.

Misschien ff de summary aanpassen. Die is nu gelijk voor beide.
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
description: The role of the HTM employee in the case of the SMP
- name: notificationSubscriptionId
MirjamHTM marked this conversation as resolved Outdated

Misschien ff de summary aanpassen. Die is nu gelijk voor beide.

Misschien ff de summary aanpassen. Die is nu gelijk voor beide.
in: path
schema:
type: string
format: uuid
example: b4afbbca-55e0-4578-944e-0112929d2b13
required: true
description: The id of notificationsubscription we want to to get the notificationSubscriptions for
- name: emailAddress
in: query
schema:
type: string
format: email
example: john.doe@mymailprovider.com
required: false
description: The emailadress of the customer in the case of anonymous opt-ins
responses:
"200":
description: OK
content:
application/json:
examples:
getNotifactionPreferencesAll:
summary: Return all the latest unique notification preferences for a specific subscription
value:
{
"notificationPreferences":[
{
"eventTypeChannel":{
"eventTypeChannelId": 1,
"eventType":{
"prettyName": "HTM nieuwsbrief",
"optinRequired": False
},
"channel":{
"channelId": 2,
"name": "email"
}
},
"isActive": True,
"_links":{
"create_new":{
"href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences",
"method": "POST"
}
}
},
{
"eventTypeChannel":{
"eventTypeChannelId": 2,
"eventType":{
"prettyName": "Check in",
"optinRequired": False
},
"channel":{
"channelId": 2,
"name": "email"
}
},
"isActive": True,
"_links":{
"create_new":{
"href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences",
"method": "POST"
},
"get_tokens":{
"href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/customers/tokens",
"method": "GET"
}
}
},
{
"eventTypeChannel":{
"eventTypeChannelId": 3,
"eventType":{
"prettyName": "Profielgegevens op de pas",
"optinRequired": False
},
"channel":{
"channelId": 2,
"name": "email"
}
},
"isActive": True,
"_links":{
"partial_edit":{
"href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences/e3045b28-d686-4e02-babd-53f0724c8826",
"method": "PATCH"
},
"get_tokens":{
"href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/customers/tokens",
"method": "GET"
}
}
}
]
}
/notificationpreferences:
post:
tags:
- Notification preferences
summary: Create a new notificationPreference for a customer (account or private).
description: |
Create a notificationPreference for a customer (account or private), including if they have opted-in for it.
parameters:
- name: X-HTM-JWT-AUTH-HEADER
in: header
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
required: false
description: The JWT of a customer in case of touchpoint were customer logs in themselves
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
in: header
schema:
type: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
description: The role of the HTM employee in the case of the SMP
- name: emailAddress
in: header
schema:
type: string
format: email
example: anonymous@mymailprovider.com
required: false
description: The emailadress of the customer in case of an anonymous customer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Create notificationPreference anonymous active:
value:
{
"eventTypeChannelId": 1,
"isActive": False,
"notificationPreferenceResources": null
}
Create notificationSubscription for token inactive:
value:
{
"eventTypeChannelId": 3,
"isActive": False,
"notificationPreferenceResources":[
{
"resourceNameId": 6,
"resourceIdentifier": 136
}
]
}
responses:
"201":
description: Created
content:
application/json:
examples:
TODO
TODO error emailadress known for verified profile
"405":
description: Method not allowed
content:
application/json:
example:
{
"type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications",
"apiErrorCode": "405",
"title": "Methode ",
"detail": "Notificatie niet gevonden",
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7",
"errors": [{ "subApiErrorCode": "0017" }],
}
components: components:
schemas: schemas:
unavailable: unavailable: