Skip to content

Instantly share code, notes, and snippets.

@benwaffle
Created September 17, 2025 07:42
Show Gist options
  • Select an option

  • Save benwaffle/1a59a98b10eab41dae64f245722b2c03 to your computer and use it in GitHub Desktop.

Select an option

Save benwaffle/1a59a98b10eab41dae64f245722b2c03 to your computer and use it in GitHub Desktop.
syntax = "proto3";
package constellation;
import "google/protobuf/timestamp.proto";
message SyncRequest {
repeated Verification verifications = 3;
RequestHeader header = 4;
// repeated VerificationToken verification_tokens = <unknown field number>;
}
message SyncResponse {
repeated VerificationResponse responses = 1;
ServerTimestamp next_sync_time = 2;
ResponseHeader header = 3;
DroidGuardTokenResponse droidguard_token_response = 4;
repeated VerificationToken verification_tokens = 5;
}
message ProceedRequest {
Verification verification = 2;
ChallengeResponse challenge_response = 3;
RequestHeader header = 4;
}
message ProceedResponse {
Verification verification = 1;
ResponseHeader header = 2;
ServerTimestamp next_sync_time = 3;
DroidGuardTokenResponse droidguard_token_response = 4;
}
message VerificationResponse {
Verification verification = 1;
StatusProto error = 2;
}
message Verification {
VerificationAssociation association = 1;
VerificationState state = 2;
VerificationInfo verification_info = 3;
PendingVerificationInfo pending_verification_info = 4;
TelephonyInfo telephony_info = 5;
repeated Param api_params = 6;
ChallengePreference challenge_preference = 7;
StructuredAPIParams structured_api_params = 8;
bytes unverified_info = 9;
}
enum VerificationState {
VERIFICATION_STATE_UNKNOWN = 0;
VERIFICATION_STATE_NONE = 1;
VERIFICATION_STATE_PENDING = 2;
VERIFICATION_STATE_VERIFIED = 3;
}
message VerificationAssociation {
SIMAssociation sim = 1;
GaiaAssociation gaia = 2;
}
message SIMAssociation {
SIMInfo sim_info = 1;
repeated GaiaId gaia_ids = 2;
SIMSlot sim_slot = 4;
}
message GaiaAssociation {
GaiaId gaia_id = 1;
}
message SIMInfo {
repeated string imsi = 1;
string sim_readable_number = 2;
repeated TelephonyPhoneNumber telephony_phone_number = 3;
string iccid = 4;
}
message TelephonyPhoneNumber {
string number = 1;
PhoneNumberSource source = 2;
}
enum PhoneNumberSource {
PHONE_NUMBER_SOURCE_UNKNOWN = 0;
PHONE_NUMBER_SOURCE_CARRIER = 1;
PHONE_NUMBER_SOURCE_IUCC = 2;
PHONE_NUMBER_SOURCE_IMS = 3;
}
message SIMSlot {
int32 index = 1;
int32 sub_id = 2;
}
message GaiaId {
string access_token = 1;
}
message Param {
string name = 1;
string value = 2;
}
message ChallengePreference {
repeated string capabilities = 1;
MTChallengePreference mt_preference = 2;
MOChallengePreference mo_preference = 3;
FlashCallChallengePreference flash_call_preference = 4;
}
message MTChallengePreference {
PreferredCarrierInfo preferred_carrier_info = 1;
string localized_message_template = 2;
DataSMSInfo data_sms_info = 3;
}
message PreferredCarrierInfo {
string name = 1;
bool lookup_by_imsi = 2;
bool enforce_carrier_resolution_override = 3;
}
message DataSMSInfo {
int32 port = 1;
}
message MOChallengePreference {
DataSMSInfo data_sms_info = 1;
}
message FlashCallChallengePreference {
PhoneRange phone_range = 1;
}
message PhoneRange {
string country_code = 1;
string prefix = 2;
string lower_bound = 3;
string upper_bound = 4;
}
message IMSIRequest {
string imsi = 1;
string phone_number_hint = 2;
}
message ChallengeResponse {
MTChallengeResponse mt_challenge_response = 1;
CarrierIDChallengeResponse carrier_id_challenge_response = 2;
MOChallengeResponse mo_challenge_response = 3;
RegisteredSMSChallengeResponse registered_sms_challenge_response = 4;
FlashCallChallengeResponse flash_call_challenge_response = 5;
Ts43ChallengeResponse ts43_challenge_response = 9;
}
message MTChallengeResponse {}
message CarrierIDChallengeResponse {}
message MOChallengeResponse {}
message RegisteredSMSChallengeResponse {}
message FlashCallChallengeResponse {}
message PendingVerificationInfo {
string mt_hint_number = 1;
Challenge challenge = 2;
AsterismClient asterism_client = 3;
BillingClient billing_client = 4;
}
enum AsterismClient {
ASTERISM_CLIENT_UNKNOWN = 0;
ASTERISM_CLIENT_CONSTELLATION = 1;
ASTERISM_CLIENT_RCS = 2;
ASTERISM_CLIENT_ONE_TIME_VERIFICATION = 3;
}
enum BillingClient {
BILLING_CLIENT_UNKNOWN = 0;
BILLING_CLIENT_CONSTELLATION = 1;
BILLING_CLIENT_CONSTELLATION_ACQUISITION = 2;
BILLING_CLIENT_CONSTELLATION_REVERIFICATION = 3;
BILLING_CLIENT_CONSTELLATION_INTERNATIONAL_MO = 4;
BILLING_CLIENT_RCS = 5;
BILLING_CLIENT_RCS_MO = 6;
BILLING_CLIENT_RCS_HB_MO = 7;
BILLING_CLIENT_RCS_JIBE = 8;
BILLING_CLIENT_RCS_OTP_PROBER = 9;
BILLING_CLIENT_ONE_TIME_VERIFICATION_VERIFIER_SIGNUP_RECOVERY = 10;
BILLING_CLIENT_ONE_TIME_VERIFICATION_ABRA_USERNAME_RECOVERY = 11;
BILLING_CLIENT_ONE_TIME_VERIFICATION_INTERNATIONAL_MO = 12;
BILLING_CLIENT_RCS_PROVISIONING_UPI = 13;
BILLING_CLIENT_GAIA_USERNAME_RECOVERY = 14;
BILLING_CLIENT_GAIA_USERNAME_RECOVERY_INT_MO = 15;
BILLING_CLIENT_MEET = 16;
BILLING_CLIENT_UPI_FREE_SMS = 17;
BILLING_CLIENT_GAIA_DEVICE_VERIFICATION = 18;
BILLING_CLIENT_GAIA_DEVICE_VERIFICATION_INT_MO = 19;
BILLING_CLIENT_UPI_CARRIER_TOS = 20;
BILLING_CLIENT_UPI_INTL_MO = 21;
BILLING_CLIENT_FIREBASE_PNV = 22;
}
message VerificationInfo {
string phone_number = 1;
google.protobuf.Timestamp verification_time = 2;
AsterismClient asterism_client = 3;
VerificationToken verification_token = 4;
ChallengeType challenge_method = 5;
}
message Challenge {
ChallengeID challenge_id = 1;
ChallengeType type = 2;
ServerTimestamp expiry_time = 3;
int32 group_id = 4;
Ts43Challenge ts43_challenge = 12;
}
message ChallengeID {
string id = 1;
}
enum ChallengeType {
CHALLENGE_TYPE_UNKNOWN = 0;
CHALLENGE_TYPE_MO_SMS = 1;
CHALLENGE_TYPE_MT_SMS = 2;
CHALLENGE_TYPE_CARRIER_ID = 3;
CHALLENGE_TYPE_IMSI_LOOKUP = 4;
CHALLENGE_TYPE_REGISTERED_SMS = 5;
CHALLENGE_TYPE_FLASH_CALL = 6;
CHALLENGE_TYPE_TS43 = 11;
}
message Ts43Challenge {
Ts43Type ts43_type = 1;
string entitlement_url = 2;
ServiceEntitlementRequest service_entitlement_request = 3;
ClientChallenge client_challenge = 5;
string app_id = 6;
string eap_aka_realm = 7;
ServerChallenge server_challenge = 8;
}
message Ts43Type {
Ts43Integrator integrator = 1;
RcsRouteInfo rcs_route_info = 2;
}
enum Ts43Integrator {
TS43_INTEGRATOR_UNKNOWN = 0;
TS43_INTEGRATOR_UNSPECIFIED = 1;
TS43_INTEGRATOR_JIO = 2;
TS43_INTEGRATOR_TELUS = 3;
TS43_INTEGRATOR_ERICSSON = 4;
TS43_INTEGRATOR_HPE = 5;
TS43_INTEGRATOR_TMO = 6;
TS43_INTEGRATOR_TMO_SERVER = 7;
TS43_INTEGRATOR_TELENOR = 8;
TS43_INTEGRATOR_RCS_CIS_PROXY = 9;
TS43_INTEGRATOR_MOBI_US = 10;
TS43_INTEGRATOR_SFR = 11;
TS43_INTEGRATOR_SASKTEL_CANADA = 12;
TS43_INTEGRATOR_MOTIVE = 13;
TS43_INTEGRATOR_DT = 14;
TS43_INTEGRATOR_DT_SERVER = 15;
TS43_INTEGRATOR_GLIDE = 16;
TS43_INTEGRATOR_GLIDE_GETPHONENUMBER = 17;
TS43_INTEGRATOR_NETLYNC = 18;
TS43_INTEGRATOR_ORANGE_FRANCE = 19;
TS43_INTEGRATOR_AMDOCS = 20;
TS43_INTEGRATOR_IPIFICATION = 21;
}
message RcsRouteInfo {
string rcs_carrier_id = 1;
OverrideTagSet rcs_override_tag_set = 2;
}
message OverrideTagSet {
repeated string tags = 1;
}
message ClientChallenge {
OdsaOperation get_phone_number_operation = 1;
}
message ServerChallenge {
OdsaOperation acquire_temporary_token_operation = 1;
}
message Ts43ChallengeResponse {
Ts43Type ts43_type = 1;
ClientChallengeResponse client_challenge_response = 2;
ServerChallengeResponse server_challenge_response = 3;
Error error = 4;
repeated string http_history = 5;
}
message ClientChallengeResponse {
string payload = 1;
string get_phone_number_response = 2;
}
message ServerChallengeResponse {
string temporary_token = 1;
string acquire_temporary_token_response = 2;
}
message Error {
ErrorType error_type = 1;
ServiceEntitlementError service_entitlement_error = 2;
}
enum ErrorType {
VERIFICATION_ERROR_TYPE_UNSPECIFIED = 0;
NOT_SUPPORTED = 1;
CHALLENGE_NOT_SET = 2;
INTERNAL_ERROR = 3;
RUNTIME_ERROR = 4;
JSON_PARSE_ERROR = 5;
}
message ServiceEntitlementError {
int32 error_code = 1;
int32 http_status = 2;
string api = 3;
}
message ServiceEntitlementRequest {
int32 configuration_version = 1;
string entitlement_version = 2;
string authentication_token = 3;
string temporary_token = 4;
string terminal_id = 5;
string terminal_vendor = 6;
string terminal_model = 7;
string terminal_software_version = 8;
string notification_token = 9;
int32 notification_action = 10;
string accept_content_type = 13;
string boost_type = 14;
string gid1 = 15;
}
message OdsaOperation {
string operation = 1;
repeated string operation_targets = 3;
int32 operation_type = 4;
string target_terminal_iccid = 12;
}
message StructuredAPIParams {
string policy_id = 1;
IdTokenRequest id_token_request = 3;
string calling_package = 4;
repeated IMSIRequest imsi_requests = 5;
}
message IdTokenRequest {
string certificate_hash = 1;
string token_nonce = 2;
}
message RequestHeader {
ClientInfo client_info = 1;
ClientAuth client_auth = 2;
string session_id = 3;
RequestTrigger trigger = 4;
}
message ClientAuth {
DeviceId device_id = 1;
bytes client_sign = 2;
google.protobuf.Timestamp sign_timestamp = 3;
}
message DeviceId {
string iid_token = 1;
int64 device_android_id = 2;
int64 device_user_id = 3;
int64 user_android_id = 4;
}
message ClientInfo {
DeviceId device_id = 1;
bytes client_public_key = 2;
string locale = 3;
int32 gmscore_version_number = 4;
string gmscore_version = 5;
int32 android_sdk_version = 6;
ChallengePreference challenge_preference = 7;
DeviceSignals device_signals = 8;
bool has_read_privileged_phone_state_permission = 11;
repeated GaiaId gaia_ids = 12;
CountryInfo country_info = 13;
repeated ConnectivityInfo connectivity_infos = 14;
string model = 15;
string manufacturer = 16;
UserProfileType user_profile_type = 17;
DeviceType device_type = 18;
bool is_standalone_device = 19;
string device_fingerprint = 21;
}
message DeviceSignals {
string droidguard_result = 1;
string droidguard_token = 2;
}
message CountryInfo {
repeated string sim_countries = 1;
repeated string network_countries = 2;
}
message ConnectivityInfo {
ConnectivityType type = 1;
ConnectivityState state = 2;
ConnectivityAvailability availability = 3;
}
enum ConnectivityType {
CONNECTIVITY_TYPE_UNKNOWN = 0;
CONNECTIVITY_TYPE_WIFI = 1;
CONNECTIVITY_TYPE_MOBILE = 2;
}
enum ConnectivityState {
CONNECTIVITY_STATE_UNKNOWN = 0;
CONNECTIVITY_STATE_CONNECTING = 1;
CONNECTIVITY_STATE_CONNECTED = 2;
CONNECTIVITY_STATE_DISCONNECTING = 3;
CONNECTIVITY_STATE_DISCONNECTED = 4;
CONNECTIVITY_STATE_SUSPENDED = 5;
}
enum ConnectivityAvailability {
CONNECTIVITY_AVAILABILITY_UNKNOWN = 0;
CONNECTIVITY_AVAILABLE = 1;
CONNECTIVITY_NOT_AVAILABLE = 2;
}
enum DeviceType {
DEVICE_TYPE_UNKNOWN = 0;
DEVICE_TYPE_PHONE = 1;
DEVICE_TYPE_PHONE_GO = 2;
DEVICE_TYPE_TV = 3;
DEVICE_TYPE_WEARABLE = 4;
DEVICE_TYPE_AUTOMOTIVE = 5;
DEVICE_TYPE_BATTLESTAR = 6;
DEVICE_TYPE_CHROME_OS = 7;
DEVICE_TYPE_XR = 8;
}
enum UserProfileType {
UNKNOWN_PROFILE_TYPE = 0;
REGULAR_USER = 1;
MANAGED_PROFILE = 2;
}
message VerificationToken {
bytes token = 1;
google.protobuf.Timestamp expiration_time = 2;
}
message ResponseHeader {
ClientInfoUpdate client_info_update = 1;
string session_id = 2;
string server_build_label = 3;
}
message ClientInfoUpdate {
PublicKeyStatus public_key_status = 1;
}
enum PublicKeyStatus {
PUBLIC_KEY_STATUS_NO_STATUS = 0;
CLIENT_KEY_UPDATED = 1;
}
message ServerTimestamp {
google.protobuf.Timestamp timestamp = 1;
google.protobuf.Timestamp now = 2;
}
message DroidGuardTokenResponse {
string droidguard_token = 1;
google.protobuf.Timestamp droidguard_token_ttl = 2;
}
message StatusProto {
int32 code = 1;
string space = 2;
string message = 3;
bytes message_set = 5;
int32 canonical_code = 6;
}
message TelephonyInfo {
SIMState sim_state = 1;
string group_id_level1 = 2;
MobileOperatorInfo sim_operator = 3;
MobileOperatorInfo network_operator = 4;
RoamingState network_roaming = 5;
RoamingState data_roaming = 6;
SMSCapability sms_capability = 7;
CarrierIdCapability carrier_id_capability = 8;
PremiumSmsPermission premium_sms_permission = 9;
PhoneType phone_type = 10;
int32 subscription_count = 11;
int32 subscription_count_max = 12;
uint32 sim_index = 13;
bool is_embedded_sim = 14;
string imei = 15;
ServiceState service_state = 16;
GtafVerificationMethod gtaf_verification_method = 17;
CarrierIdChallengePreference carrier_id_challenge_preference = 18;
repeated CallEvent call_events = 19;
repeated ServiceStateEvent service_state_events = 20;
repeated SMSEvent sms_events = 21;
repeated CellularNetworkEvent cellular_network_events = 22;
bool skip_device_roaming_checks = 23;
int32 sim_carrier_id = 25;
}
message MobileOperatorInfo {
string country_code = 1;
string mcc_mnc = 2;
string operator_name = 3;
uint32 nil_since_micros = 4;
uint64 nil_since_usec = 5;
}
message CarrierIdChallengePreference {
Integrator integrator = 1;
GtafVerificationMethod gtaf_verification_method = 2;
}
message CellularNetworkEvent {
google.protobuf.Timestamp event_timestamp = 1;
bool mobile_data_enabled = 2;
bool airplane_mode_enabled = 3;
bool mobile_data_always_on_enabled = 4;
bool connected_to_wifi = 5;
repeated CellularNetwork data_networks = 6;
}
message CellularNetwork {
repeated int32 network_capabilities = 1;
bool can_reach_google = 2;
}
message CallEvent {
google.protobuf.Timestamp event_timestamp = 1;
CommunicationDirection event_direction = 2;
PhoneNumberType number_type = 3;
}
message SMSEvent {
google.protobuf.Timestamp event_timestamp = 1;
CommunicationDirection event_direction = 2;
PhoneNumberType number_type = 3;
}
message ServiceStateEvent {
google.protobuf.Timestamp event_timestamp = 1;
bool mobile_data_enabled = 2;
bool airplane_mode_enabled = 3;
int32 voice_registration_state = 4;
int32 data_registration_state = 5;
int32 voice_network_type = 6;
int32 data_network_type = 7;
int32 signal_strength = 8;
}
enum SIMState {
SIM_STATE_UNKNOWN = 0;
SIM_NOT_READY = 1;
SIM_READY = 2;
}
enum PhoneType {
PHONE_TYPE_UNKNOWN = 0;
PHONE_TYPE_GSM = 1;
PHONE_TYPE_CDMA = 2;
PHONE_TYPE_SIP = 3;
}
enum RoamingState {
ROAMING_STATE_UNKNOWN = 0;
ROAMING_STATE_NOT_ROAMING = 1;
ROAMING_STATE_ROAMING = 2;
}
enum SMSCapability {
SMS_CAPABILITY_UNKNOWN = 0;
SMS_CAPABILITY_INCAPABLE = 1;
SMS_CAPABILITY_APP_RESTRICTED = 2;
SMS_CAPABILITY_USER_RESTRICTED = 3;
SMS_CAPABILITY_CAPABLE = 4;
}
enum CarrierIdCapability {
CARRIER_ID_CAPABILITY_UNKNOWN = 0;
CARRIER_ID_INCAPABLE = 1;
CARRIER_ID_CAPABLE = 2;
}
enum PremiumSmsPermission {
PREMIUM_SMS_PERMISSION_UNKNOWN = 0;
PREMIUM_SMS_PROMPT_REQUIRED = 1;
PREMIUM_SMS_PERMISSION_GRANTED = 2;
}
enum ServiceState {
SERVICE_STATE_UNKNOWN = 0;
SERVICE_STATE_IN_SERVICE = 1;
SERVICE_STATE_OUT_OF_SERVICE = 2;
SERVICE_STATE_EMERGENCY_ONLY = 3;
SERVICE_STATE_POWER_OFF = 4;
}
enum GtafVerificationMethod {
GTAF_METHOD_UNKNOWN = 0;
METHOD_CARRIER_ID_TS43 = 1;
METHOD_CARRIER_ID_LEGACY = 2;
METHOD_CARRIER_ID_TS43_UPI = 3;
}
enum Integrator {
INTEGRATOR_UNSPECIFIED = 0;
INTEGRATOR_TATA_GT1 = 1;
INTEGRATOR_TATA_GT2 = 2;
}
enum CommunicationDirection {
COMMUNICATION_DIRECTION_UNKNOWN = 0;
COMMUNICATION_DIRECTION_INCOMING = 1;
COMMUNICATION_DIRECTION_OUTGOING = 2;
COMMUNICATION_DIRECTION_MISSED = 3;
}
enum PhoneNumberType {
PHONE_NUMBER_TYPE_UNKNOWN = 0;
PHONE_NUMBER_TYPE_LONG_NUMBER = 1;
PHONE_NUMBER_TYPE_SHORT_CODE = 2;
}
message RequestTrigger {
TriggerType type = 1;
}
enum TriggerType {
TRIGGER_TYPE_UNKNOWN = 0;
TRIGGER_TYPE_PERIODIC_CONSENT_CHECK = 1;
TRIGGER_TYPE_PERIODIC_REFRESH = 2;
TRIGGER_TYPE_SIM_STATE_CHANGED = 3;
TRIGGER_TYPE_GAIA_CHANGE_EVENT = 4;
TRIGGER_TYPE_USER_SETTINGS = 5;
TRIGGER_TYPE_DEBUG_SETTINGS = 6;
TRIGGER_TYPE_TRIGGER_API_CALL = 7;
TRIGGER_TYPE_REBOOT_CHECKER = 8;
TRIGGER_TYPE_SERVER_TRIGGER = 9;
TRIGGER_TYPE_FAILURE_RETRY = 10;
TRIGGER_TYPE_CONSENT_API_TRIGGER = 11;
TRIGGER_TYPE_PNVR_DEVICE_SETTINGS = 12;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment