syntax = "proto3"; package as411.resolver.v1; option go_package = "github.com/as4-411/api/proto/resolver/v1;resolverv1"; // ResolverService provides resolution of identifiers to routing directives. // Aligned with REST /v1/resolve and /v1/bulk-resolve; see OpenAPI and route-directive.schema.json. service ResolverService { rpc Resolve(ResolveRequest) returns (ResolveResponse); rpc BulkResolve(BulkResolveRequest) returns (BulkResolveResponse); } message ResolveRequest { repeated IdentifierInput identifiers = 1; ServiceContext service_context = 2; ResolveConstraints constraints = 3; string tenant = 4; repeated string desired_protocols = 5; } message IdentifierInput { string type = 1; // e.g. as4.partyId, e164, peppol.participantId string value = 2; string scope = 3; // e.g. BIC, LEI } message ServiceContext { string service = 1; // e.g. iso20022.fi string action = 2; // e.g. credit.transfer string process = 3; string document_type = 4; } message ResolveConstraints { string trust_domain = 1; string region = 2; string jurisdiction = 3; int32 max_results = 4; string network_brand = 5; string tenant_contract = 6; string connectivity_group = 7; string required_capability = 8; string message_type = 9; } message ResolveResponse { RouteDirective primary = 1; repeated DirectiveWithReason alternates = 2; repeated RouteDirective directives = 3; int32 ttl = 4; string trace_id = 5; string correlation_id = 6; FailurePolicy failure_policy = 7; int32 negative_cache_ttl = 8; repeated ResolutionTraceEntry resolution_trace = 9; } message RouteDirective { string target_protocol = 1; string target_address = 2; string transport_profile = 3; // e.g. as4.fifi.iso20022.v1 RouteDirectiveSecurity security = 4; RouteDirectiveServiceContext service_context = 5; RouteDirectiveQos qos = 6; int32 ttl_seconds = 7; repeated EvidenceItem evidence = 8; } message EvidenceItem { string source = 1; string freshness = 2; // date-time double confidence = 3; string signature = 4; } message RouteDirectiveSecurity { bool sign_required = 1; bool encrypt_required = 2; repeated string key_refs = 3; map algorithms = 4; } message RouteDirectiveServiceContext { string service = 1; string action = 2; string service_indicator = 3; } message RouteDirectiveQos { int32 retries = 1; bool receipts_required = 2; string ordering = 3; } message DirectiveWithReason { RouteDirective directive = 1; string reason = 2; } message FailurePolicy { bool retry = 1; string backoff = 2; bool circuit_break = 3; } message ResolutionTraceEntry { string source = 1; int32 directive_index = 2; string message = 3; } message BulkResolveRequest { repeated ResolveRequest requests = 1; } message BulkResolveResponse { repeated ResolveResponse results = 1; string trace_id = 2; }