syntax = "proto3"; package pbmessages; message MemberChange { message Member { string device_id = 1; string network_id = 2; string identity = 3; // Identity of the member bool authorized = 4; // Whether the member is authorized repeated string ip_assignments = 5; // List of IP assignments bool active_bridge = 6; // Whether the member is an active bridge string tags = 7; // JSON string of tags string capabilities = 8; // JSON string of capabilities uint64 creation_time = 9; // Unix timestamp in milliseconds bool no_auto_assign_ips = 10; // Whether auto IP assignment is disabled uint64 revision = 11; // Revision number uint64 last_authorized_time = 12; // Last time the member was authorized uint64 last_deauthorized_time = 13; // Last time the member was deauthorized optional string last_authorized_credential_type = 14; // Type of credential used for last authorization optional string last_authorized_credential = 15; // Credential used for last authorization int32 version_major = 16; // Major version of the member int32 version_minor = 17; // Minor version of the member int32 version_rev = 18; // Patch version of the member int32 version_protocol = 19; // Protocol version of the member int32 remote_trace_level = 20; // Remote trace level optional string remote_trace_target = 21; // Remote trace target bool sso_exepmt = 22; // Whether SSO is exempt uint64 auth_expiry_time = 23; // Authorization expiry time in milliseconds } message MemberChangeMetadata { string trace_id = 1; string controller_id = 2; } optional Member old = 1; optional Member new = 2; optional MemberChangeMetadata metadata = 3; }