Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
166 changes: 166 additions & 0 deletions documentation/SupportingDocuments/branding-flow-complete.uml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
@startuml

title CAMARA VerifiedCaller usage flow

autonumber "<font color=blue><b>[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\
<size:30><&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-\\: <color:red>**BLOCKED INVITE**

end



@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
73 changes: 73 additions & 0 deletions documentation/SupportingDocuments/branding-flow-short.uml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
@startuml

title CAMARA VerifiedCaller usage flow

autonumber "<font color=blue><b>[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\
<size:30><&circle-check>


@enduml