@startuml Register Provider
actor rAppCatalogue
+actor rApp
participant rAppManager
box "CAPIF Internal"
participant capifcore
participant publishservice
participant invokerservice
participant discoverservice
+participant securityservice
+participant eventservice
end box
rAppCatalogue->rAppManager: Start rApp, with rApp\n descriptor specifying which\n services to expose and consume
alt#LightBlue #LightBlue Publish Service
rAppManager->capifcore: Publish services\n with providerId\n andServiceAPIDescription
capifcore->publishservice: Publish services
- publishservice->providermanager: Check that AEFs are\n registered for provider
+ publishservice->providermanager: Are AEFs are\n registered for provider?
providermanager->publishservice: Ok
publishservice->publishservice: Create apiId
publishservice->helmmanager: Install chart
note right: Optional and not decided yet
helmmanager->publishservice: Ok
+ alt#Orange #Orange Subcribed Event Handling
+ publishservice->eventservice: Service published
+ eventservice->rApp: CAPIFEventDetail
+ end
publishservice->capifcore: ServiceAPIDescription\n with apiId
capifcore->rAppManager: ServiceAPIDescription\n with apiId
end
invokerservice->invokerservice: Create apiInvokerId and\n onboardingSecret
invokerservice->publishservice: Get available services
publishservice->invokerservice: Available services
+ alt#Orange #Orange Subcribed Event Handling
+ invokerservice->eventservice: Invoker registered
+ eventservice->rApp: CAPIFEventDetail
+ end
invokerservice->capifcore: Services available\n for the invoker
capifcore->rAppManager: Invoker with invokerId\n and available services
end
discoverservice->capifcore: Services available for the\n invoker matching the\n filter parameters
capifcore->rAppManager: Services available for the\n invoker and matching the\n filter parameters
end
+
+alt#Pink #Pink Security Service
+ rApp->securityservice: Request token\n for service with\n AccessTokenReq
+ securityservice->invokerservice: Is invoker registered?
+ invokerservice->securityservice: Ok
+ securityservice->invokerservice: Is secret valid?
+ invokerservice->securityservice: Ok
+ securityservice->providermanager: Is function providing\n service registered?
+ providermanager->securityservice: Ok
+ securityservice->publishservice: Is service published?
+ publishservice->securityservice: Ok
+ securityservice->rApp: AccessTokenRsp with\n token
+end
+
+alt#Orange #Orange Event Service
+ rApp->eventservice: Subscribe to event with EventSubscription
+ eventservice->eventservice: Create subscriptionId
+ eventservice->rApp: subscriptionId
+end
@enduml
\ No newline at end of file