@startuml Register Provider actor rAppCatalogue participant rAppManager box "CAPIF Internal" participant capifcore participant providermanager participant helmmanager participant publishservice participant invokerservice participant discoverservice end box rAppCatalogue->rAppManager: Start rApp, with rApp\n descriptor specifying which\n services to expose and consume alt#paleGreen #paleGreen Provider Enrolment rAppManager->capifcore: Register provider with\n APIProviderEnrolmentDetails capifcore->providermanager:Register provider providermanager->providermanager: Create apiProvDomId\n and apiProvFuncIds\n for provided functions providermanager->capifcore: Provider with\n apfId and aefIds capifcore->rAppManager: Provider with\n apfId and aefIds end 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 providermanager->publishservice: Ok publishservice->publishservice: Create apiId publishservice->helmmanager: Install chart note right: Optional and not decided yet helmmanager->publishservice: Ok publishservice->capifcore: ServiceAPIDescription\n with apiId capifcore->rAppManager: ServiceAPIDescription\n with apiId end alt#coral #coral Register Invoker rAppManager->capifcore: Register invoker with\n APIInvokerEnrolmentDetails capifcore->invokerservice: Register invoker invokerservice->invokerservice: Create apiInvokerId and\n onboardingSecret invokerservice->publishservice: Get available services publishservice->invokerservice: Available services invokerservice->capifcore: Services available\n for the invoker capifcore->rAppManager: Invoker with invokerId\n and available services end rAppManager->rAppCatalogue: Ok alt#Yellow #Yellow Discover Services rAppManager->capifcore: Discover services for an\n invoker with apiInvokerId\n and filter parameters capifcore->discoverservice: Get services available\n for the invoker discoverservice->invokerservice: Get services available\n for the invoker invokerservice->publishservice: Get available services publishservice->invokerservice: Available services invokerservice->discoverservice: Services available \nfor the invoker 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 @enduml