diff --git a/src/service/poc_mobile.proto b/src/service/poc_mobile.proto index a6819d52..d03c68ac 100644 --- a/src/service/poc_mobile.proto +++ b/src/service/poc_mobile.proto @@ -119,6 +119,97 @@ message subscriber_location_ingest_report_v1 { subscriber_location_req_v1 report = 2; } +message radio_threshold_report_req_v1 { + // the id of the radio which has met the coverage threshold requirements + // CBRS radios only + string cbsd_id = 1; + // The onchain address of the gateway which has met the coverage + // threshold requirements + bytes hotspot_pubkey = 2; + // the threshold value representing the amount of transferred bytes the + // minimum number of subscribers as defined by subscriber_threshold have + // exceeded + uint64 bytes_threshold = 3; + // the threshold value representing the minimum number of subscribers + // that have exceeded the bytes_threshold for the hotspot + uint32 subscriber_threshold = 4; + // Unix timestamp in seconds when the thresholds were exceeded + uint64 threshold_timestamp = 5; + // pubkey of the carrier identity service + bytes carrier_pub_key = 6; + // signed payload of the carrier identity service + bytes signature = 7; +} + +message radio_threshold_report_resp_v1 { string id = 1; } + +message radio_threshold_ingest_report_v1 { + // Timestamp in milliseconds since unix epoch + uint64 received_timestamp = 1; + radio_threshold_report_req_v1 report = 2; +} + +enum radio_threshold_report_verification_status { + threshold_report_status_valid = 0; + // used to grandfather in hotspots that have received boosting + // prior to the data component of hip84 going live + threshold_report_status_legacy_valid = 1; + threshold_report_status_invalid_carrier_key = 2; +} + +message verified_radio_threshold_ingest_report_v1 { + // the verified report + radio_threshold_ingest_report_v1 report = 1; + // the status determined by the verification + radio_threshold_report_verification_status status = 2; + // Timestamp at which verification was determined, in milliseconds since unix + // epoch + uint64 timestamp = 3; +} + +enum invalidated_threshold_reason { + invalidated_threshold_reason_radio_moved = 0; +} + +message invalidated_radio_threshold_report_req_v1 { + // the id of the radio which thresholds are invalidated + string cbsd_id = 1; + // The onchain address of the gateway + bytes hotspot_pubkey = 2; + // the reason the thresholds are invalidated + invalidated_threshold_reason reason = 3; + // Timestamp in milliseconds since unix epoch + // of when the thresholds were invalidated + uint64 timestamp = 4; + // pubkey of the carrier identity service + bytes carrier_pub_key = 5; + // signed payload of the carrier identity service + bytes signature = 6; +} + +message invalidated_radio_threshold_report_resp_v1 { string id = 1; } + +message invalidated_radio_threshold_ingest_report_v1 { + // Timestamp in milliseconds since unix epoch + uint64 received_timestamp = 1; + invalidated_radio_threshold_report_req_v1 report = 2; +} + +enum invalidated_radio_threshold_report_verification_status { + invalidated_threshold_report_status_valid = 0; + invalidated_threshold_report_status_invalid_carrier_key = 1; +} + +message verified_invalidated_radio_threshold_ingest_report_v1 { + // the verified report + invalidated_radio_threshold_ingest_report_v1 report = 1; + // the status determined by the verification + invalidated_radio_threshold_report_verification_status status = 2; + // Timestamp at which verification was determined, in milliseconds since unix + // epoch + uint64 timestamp = 3; +} + enum signal_level { NONE = 0; LOW = 1; @@ -190,6 +281,11 @@ service poc_mobile { returns (subscriber_location_resp_v1); rpc submit_coverage_object(coverage_object_req_v1) returns (coverage_object_resp_v1); + rpc submit_threshold_report(radio_threshold_report_req_v1) + returns (radio_threshold_report_resp_v1); + rpc submit_invalidated_threshold_report( + invalidated_radio_threshold_report_req_v1) + returns (invalidated_radio_threshold_report_resp_v1); } message file_info {