syntax = "proto3"; package komp_ac.ecb; // ECB-only operational details. Conversion selection and evidence live in the // provider-neutral exchange_rates contract. service EcbService { rpc GetEcbPipelineStatus(GetEcbPipelineStatusRequest) returns (GetEcbPipelineStatusResponse); } message GetEcbPipelineStatusRequest { int32 batch_limit = 1; } enum ImportBatchStatus { IMPORT_BATCH_STATUS_UNSPECIFIED = 0; IMPORT_BATCH_STATUS_RUNNING = 1; IMPORT_BATCH_STATUS_SUCCEEDED = 2; IMPORT_BATCH_STATUS_FAILED = 3; } enum CurrencyCoverageStatus { CURRENCY_COVERAGE_STATUS_UNSPECIFIED = 0; CURRENCY_COVERAGE_STATUS_PENDING = 1; CURRENCY_COVERAGE_STATUS_COMPLETE = 2; } message EcbImportBatch { int64 batch_id = 1; ImportBatchStatus status = 2; string requested_from = 3; string requested_through = 4; string endpoint = 5; string started_at = 6; optional string completed_at = 7; optional string verified_through_date = 8; optional int32 observation_count = 9; optional int32 inserted_observation_count = 10; optional string error_message = 11; } message EcbCurrencyCoverage { string currency = 1; CurrencyCoverageStatus status = 2; optional string verified_from_date = 3; optional string verified_through_date = 4; } message GetEcbPipelineStatusResponse { optional string verified_through_date = 1; string latest_verifiable_date = 2; bool healthy = 3; int32 days_behind = 4; bool import_running = 5; string next_import_at = 6; repeated EcbImportBatch batches = 7; repeated string covered_currencies = 8; optional string transactions_postable_through = 9; optional string statements_postable_through = 10; repeated EcbCurrencyCoverage currency_coverage = 11; }