diff --git a/documentation/SupportingDocuments/branding-flow-complete.png b/documentation/SupportingDocuments/branding-flow-complete.png new file mode 100644 index 0000000..170e45a Binary files /dev/null and b/documentation/SupportingDocuments/branding-flow-complete.png differ diff --git a/documentation/SupportingDocuments/branding-flow-complete.uml b/documentation/SupportingDocuments/branding-flow-complete.uml new file mode 100644 index 0000000..5d9bad7 --- /dev/null +++ b/documentation/SupportingDocuments/branding-flow-complete.uml @@ -0,0 +1,166 @@ +@startuml + +title CAMARA VerifiedCaller usage flow + +autonumber "[00]" +hide footbox + +' --------------- + +participant CC as "**API consumer**\nCall Center\nPlatform" #lightSalmon +participant AGG as "API platform\nor aggregator" +box Operator network + participant APIGW as "API Gateway\nExposure" + participant BRAND as "Branded\nSolution" + participant CSCF as "Voice\nnetwork" +endbox + +== Brand Registration == + +-> CC: register +activate CC #lightBlue +CC -> AGG: **onboard** +activate AGG #lightBlue + +AGG -> APIGW: **POST /registrations**\n\ + phoneNumber* \n\ + terminatingCountryCode* \n\ + displayName* \n\ + verifyCallerAction + +note right + API PARAMS: + + - ""phoneNumber"": **Mandatory** Caller phone number in E.164 standard format + - ""phoneNumberAlternate"": Alternative caller number + - ""displayName"": **Mandatory** Brand information that will be displayed for the calling party + - ""customerId"": Unique customer identifier for a brand + - ""verifyCallerAction"": Indicates if Antispoofing feature is enabled for the A-party, + - ""terminatingCountryCode"": **Mandatory** Country Code of the called number in E.164 format + - ""campaignName"": Logical name to group a set of calling party numbers under a brand for a specific purpose + + RESPONSE: + - ""registrationId"": Unique identifier of a registration created in the Branded Calling Platform as a result of the POST operation. +end note + +activate APIGW +return **201 OK**\n\ + **registrationId** \n\ + phoneNumber \n\ + terminatingCountryCode \n\ + displayName \n\ + verifyCallerAction + +CC <- AGG: **201 OK**\n\ + **registrationId** \n\ + phoneNumber \n\ + terminatingCountryCode \n\ + displayName \n\ + verifyCallerAction +deactivate AGG + +||| + +== Call pre-announcement == + +hnote over AGG: No intermediate intervention\nto avoid leak of called numbers + +-> CC: campaing\nactivation +activate CC + +-> CC: pre-announce + +CC -> APIGW: **POST /pre-announce**\n\ + callingParticipant*\n\ + calledParticipant* +activate APIGW + +note right + API PARAMS: + - ""callingParticipant"": **Mandatory** Caller phone number in E.164 standard format + - ""calledParticipant"": **Mandatory** Destination phone number in E.164 standard format + - ""timeToLive"": This parameter specifies for how long the pre-announcement is requested (secs) + - ""customerId"": Unique customer identifier for a brand . ""registrationId?"" + - ""displayName"": Information that will be displayed to the callee (purpose of a specific call). + + RESPONSE: + - ""announcementId"": Unique identifier of a pre-announcement created as a result of the POST operation + end note + +APIGW -> BRAND: **POST /pre-announce**\n\ + callingParticipant\n\ + calledParticipant +activate BRAND + +return **201 OK**\n\ + timeToLive\n\ + announcementId + +note right + Locate and validate associated customerId + Validate requested TTL or add default + Create unique identifier for announcement +end note + +return **201 OK**\n\ + timeToLive\n\ + announcementId + +return **201 OK**\n\ + expiresAt\n\ + announcementId + +-> CC: make call + +== Call Branding == + +CC-> CSCF: **INVITE**\n\ + FROM: aNumber\n\ + TO: bNumber\n\ + X-VERIFIED: announcementId +activate CSCF + +CSCF->BRAND: **GET /pre-announce**\n\ + aNumber\n\ + bNumber\n\ + announcementId +activate BRAND + +note over BRAND, CSCF + Based on the covered validations, different + levels of attesitation are possible +end note + +alt pre-announced + BRAND-->CSCF: **200 OK**\n\ + announcementId\n\ + verifyCallerAction: VERIFIY + + CSCF -> : **INVITE**\n\ + aNumber\n\ + bNumber\n\ + RCD (branding)\n\ + <&circle-check> + +else continue - Not branded + + BRAND-->CSCF: **200 OK**\n\ + announcementId\n\ + verifyCallerAction: DO_NOT_BRAND + CSCF -> : **INVITE**\n\ + aNumber\n\ + bNumber + +else blocked + + BRAND-->CSCF: **200 OK**\n\ + verifyCallerAction: BLOCK_UNVERIFIED + deactivate BRAND + + CSCF-\\: **BLOCKED INVITE** + +end + + + +@enduml \ No newline at end of file diff --git a/documentation/SupportingDocuments/branding-flow-short.png b/documentation/SupportingDocuments/branding-flow-short.png new file mode 100644 index 0000000..786d66d Binary files /dev/null and b/documentation/SupportingDocuments/branding-flow-short.png differ diff --git a/documentation/SupportingDocuments/branding-flow-short.uml b/documentation/SupportingDocuments/branding-flow-short.uml new file mode 100644 index 0000000..6ef1567 --- /dev/null +++ b/documentation/SupportingDocuments/branding-flow-short.uml @@ -0,0 +1,73 @@ +@startuml + +title CAMARA VerifiedCaller usage flow + +autonumber "[00]" +hide footbox + +' --------------- + +participant CC as "**API consumer**\nCall Center\nPlatform" #lightSalmon +participant AGG as "API platform\nor aggregator" +box Operator network + participant APIGW as "API Gateway\nExposure" + participant BRAND as "Branded\nSolution" + participant CSCF as "Voice\nnetwork" +endbox + +== Onboarding == + +-> CC: register +activate CC #lightBlue +CC <-> AGG: **onboard** +activate AGG #lightBlue + +AGG -> APIGW: **POST /registrations**\n\ + phoneNumber, displayName, terminatingCountryCode + +activate APIGW +return **201 Created**\n\ + registrationId + +return **201 Created**\n\ + registrationId +||| + +== Call pre-announcement == + +-> CC: campaing\nactivation +activate CC + +-> CC: pre-announce +CC -> APIGW: **POST /pre-announce**\n\ + callingParticipant, calledParticipant +activate APIGW + +APIGW -> BRAND ++ +'activate BRAND +return + +return **201 Created**\n\ + timeToLive, preAnnounceId +return + +-> CC: make call + +== Call Branding == + +CC-> CSCF: **INVITE**\n\ + callingParticipant, calledParticipant, preAnnounceId (optional) +activate CSCF +note over BRAND, CSCF + Based on the verifyCallerAction, different + levels of attesitation are possible +end note + +CSCF -> : **INVITE**\n\ + callingParticipant\n\ + calledParticipant\n\ + RCD (branding)\n\ + <&circle-check> + + +@enduml \ No newline at end of file