syntax = "proto3"; import "okap-errors.proto"; option go_package = "whiteboxsystems.nl/okap"; service OKAP { // Onboarding rpc GetMetadata (GetMetadataRequest) returns (GetMetadataResponse) {} rpc Register (RegisterRequest) returns (RegisterResponse) {} rpc CompleteRegistration (CompleteRegistrationRequest) returns (CompleteRegistrationResponse) {} // Configuration rpc ConfigureCallback (ConfigureCallbackRequest) returns (ConfigureCallbackResponse) {} rpc ListServices (ListServicesRequest) returns (ListServicesResponse) {} rpc UpdatePatientRegistration (UpdatePatientRegistrationRequest) returns (UpdatePatientRegistrationResponse) {} rpc ListPatientRegistration (ListPatientRegistrationRequest) returns (ListPatientRegistrationResponse) {} } enum XISAuthMethod { mTLS = 0; BearerToken = 1; } message MTLSConfigurationParams { string publicKey = 1; } message BearerTokenConfigurationParams { string token = 1; } message XISAuthConfiguration { XISAuthMethod method = 1; oneof config { MTLSConfigurationParams mtlsConfig = 2; BearerTokenConfigurationParams apiTokenConfig = 3; } } message ProtocolAuthConfiguration { string method = 1; map configuration = 2; } enum SubscriptionPolicy { subnone = 0; optin = 1; optout = 2; } enum ConsentPolicy { consentnone = 0; explicit = 1; presumed = 2; } message ProtocolDefinition { string protocol = 1; repeated string authMethods = 2; } message ServiceDefinition { string id = 1; string name = 2; string description = 3; SubscriptionPolicy subscriptionPolicy = 4; ConsentPolicy consentPolicy = 5; repeated ProtocolDefinition fetchProtocols = 6; repeated ProtocolDefinition pushProtocols = 7; } message GetMetadataRequest {} message GetMetadataResponse { string supplierFormalName = 1; string supplierDisplayName = 2; string productName = 3; string version = 4; } message RegisterRequest { string organisationFormalName = 1; string organisationDisplayName = 2; string organisationIdentifier = 3; string organisationIdentifierType = 4; // Type bijv. AGB, BIG registratie of KvK XISAuthConfiguration auth = 5; } message RegisterResponse { string reference = 1; } message CompleteRegistrationRequest { string reference = 1; string registrationToken = 2; } message CompleteRegistrationResponse {} message CallbackConfig { string protocol = 1; map config = 2; ProtocolAuthConfiguration auth = 3; } message ConfigureCallbackRequest { string serviceId = 1; bool enabled = 2; CallbackConfig fetch = 3; CallbackConfig push = 4; } message ConfigureCallbackResponse { string serviceId = 1; bool enabled = 2; CallbackConfig fetch = 3; CallbackConfig push = 4; } message ListServicesRequest { } message ServiceConfiguration { string serviceId = 1; bool enabled = 2; CallbackConfig fetch = 3; CallbackConfig push = 4; } message ListServicesResponse { repeated ServiceDefinition availableServices = 1; repeated ServiceConfiguration configurations = 2; } message PatientMeta { string identifier = 1; string identifierType = 2; string firstname = 3; string surname = 4; string birthdate = 5; string street = 6; string streetNumber = 7; string streetNumberExtension = 8; string postalCode = 9; string city = 10; string country = 11; map extra = 12; } message PatientRegistrationData { PatientMeta subject = 1; bool registered = 2; map callbackProtocolMeta = 3; } message PatientRegistrationError { int32 index = 1; OKAPError error = 2; } message UpdatePatientRegistrationRequest { string serviceId = 1; repeated PatientRegistrationData PatientRegistrationData = 2; bool atomicUpdate = 3; } message UpdatePatientRegistrationResponse { repeated PatientRegistrationError errors = 2; } message ListPatientRegistrationRequest { string serviceId = 1; } message ListPatientRegistrationResponse { repeated PatientRegistrationData PatientRegistrationData = 2; }