Use SQLite for persistence and generate Rust protobuf bindings at build time. Add Docker image support for containerized deployment. Co-Authored-By: codex <[email protected]>
666 lines
24 KiB
Protocol Buffer
666 lines
24 KiB
Protocol Buffer
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
//
|
|
// Sync protocol datatype extension for autofill.
|
|
|
|
// If you change or add any fields in this file, update proto_visitors.h and
|
|
// potentially proto_enum_conversions.{h, cc}.
|
|
|
|
syntax = "proto2";
|
|
|
|
option go_package = "./sync_pb";
|
|
|
|
option java_multiple_files = true;
|
|
option java_package = "org.chromium.components.sync.protocol";
|
|
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
package sync_pb;
|
|
|
|
// Properties of autofill sync objects.
|
|
|
|
// An AutofillProfile.
|
|
message AutofillProfileSpecifics {
|
|
// Represents the validation status of value stored in the AutofillProfile.
|
|
enum VerificationStatus {
|
|
// No verification status assigned.
|
|
VERIFICATION_STATUS_UNSPECIFIED = 0;
|
|
// The value token was parsed from a parent token.
|
|
// For example, the first name was derived by splitting a full name into
|
|
// its components.
|
|
PARSED = 1;
|
|
// Value was built from its subcomponents.
|
|
// For example, the full name was built from the first, middle and last
|
|
// name.
|
|
FORMATTED = 2;
|
|
// The value was observed in a form transmission.
|
|
// For example, the user filled a form that contained at NAME_FULL field.
|
|
// The value of NAME_FULL will be stored as OBSERVED.
|
|
OBSERVED = 3;
|
|
// The user used the autofill settings to verify and store this token.
|
|
// This is currently only applicable to the full name, since users cannot
|
|
// edit individual components of their name.
|
|
USER_VERIFIED = 4;
|
|
// The token was parsed remotely.
|
|
SERVER_PARSED = 5;
|
|
}
|
|
|
|
optional string guid = 15;
|
|
// Starting from M115, Autofill ignores the origin and doesn't distinguish
|
|
// between verified (meaning `deprecated_origin == kSettingsOrigin`) and
|
|
// unverified profiles anymore. However, clients prior to this milestone only
|
|
// accept updates to verified profiles through Sync if the remote profile is
|
|
// verified as well. For this reason, M115 clients and above always set the
|
|
// origin to kSettingsOrigin.
|
|
// TODO(crbug.com/1441905): Remove in a few milestones.
|
|
optional string deprecated_origin = 16;
|
|
optional int64 use_count = 22;
|
|
|
|
// The time_t value of the last time this profile was used. This
|
|
// value makes sense wrt base::Time::To/FromTimeT, which measures
|
|
// from the Windows epoch.
|
|
optional int64 use_date = 23;
|
|
|
|
// A user chosen profile label that is used to identify the profile.
|
|
// The value of the label can be freely chosen by the user. Two possible label
|
|
// values are '$HOME$' or '$WORK$' which have a special meaning.
|
|
optional string profile_label = 62;
|
|
|
|
// Contact info name fields.
|
|
repeated string name_first = 2;
|
|
repeated string name_middle = 3;
|
|
repeated string name_last = 4;
|
|
// Sometimes the last name is composed of two names as it is common for
|
|
// Hispanic/Latinx names. In the unstructured representation of the last name,
|
|
// there may be even a conjunction between the first and the second last
|
|
// name. For example, the more-complete version of Pablo Picasso's surname is
|
|
// "Ruiz y Picasso" containing a first last name, a conjunction (the y) and a
|
|
// second last name.
|
|
repeated string name_last_first = 27;
|
|
repeated string name_last_conjunction = 28;
|
|
repeated string name_last_second = 29;
|
|
repeated string name_full = 21;
|
|
|
|
reserved 60;
|
|
reserved "name_full_with_honorific";
|
|
|
|
// Validation status records for name fields.
|
|
reserved 30;
|
|
reserved "name_honorific_status";
|
|
repeated VerificationStatus name_first_status = 31;
|
|
repeated VerificationStatus name_middle_status = 32;
|
|
repeated VerificationStatus name_last_status = 33;
|
|
repeated VerificationStatus name_last_first_status = 34;
|
|
repeated VerificationStatus name_last_conjunction_status = 35;
|
|
repeated VerificationStatus name_last_second_status = 36;
|
|
repeated VerificationStatus name_full_status = 37;
|
|
reserved 61;
|
|
reserved "name_full_with_honorific_status";
|
|
|
|
// Contact info additional fields.
|
|
repeated string email_address = 5;
|
|
optional string company_name = 6;
|
|
|
|
// Address field.
|
|
// The address_home_line1/2 fields are deprecated and
|
|
// address_home_street_address should be used instead by
|
|
// joining address_home_line1/2 with a newline ("\n").
|
|
// Full deprecation can not be achieved before all sync profiles have been
|
|
// updated with a M86+ client.
|
|
// TODO(crbug/1111740): Remove usages of address_home_line1/2 and mark field
|
|
// as deprecated.
|
|
optional string address_home_line1 = 7;
|
|
optional string address_home_line2 = 8;
|
|
optional string address_home_city = 9;
|
|
optional string address_home_state = 10;
|
|
optional string address_home_zip = 11;
|
|
optional string address_home_country = 12;
|
|
optional string address_home_admin_level_2 = 71;
|
|
|
|
// Additional address fields for i18n.
|
|
optional string address_home_street_address = 17;
|
|
optional string address_home_sorting_code = 18;
|
|
optional string address_home_dependent_locality = 19;
|
|
optional string address_home_language_code = 20;
|
|
optional string address_home_thoroughfare_name = 38;
|
|
optional string address_home_thoroughfare_number = 39;
|
|
optional string address_home_street_location = 73;
|
|
optional string address_home_subpremise_name = 42;
|
|
// All the information related to the apartment. Normally a combination of the
|
|
// apartment type (address_home_apt_type) and number (address_home_apt_num).
|
|
// E.g. "Apt 5".
|
|
optional string address_home_apt = 85;
|
|
// The raw number (or identifier) of an apartment (e.g. "5") but without a
|
|
// prefix. The value "apt 5" would correspond to the address_home_apt.
|
|
optional string address_home_apt_num = 56;
|
|
// Information describing the type of apartment (e.g. Apt, Apartamento, Sala,
|
|
// Departamento).
|
|
optional string address_home_apt_type = 87;
|
|
optional string address_home_floor = 57;
|
|
optional string address_home_landmark = 67;
|
|
// The type indicates that the address is at the intersection between two
|
|
// streets. This is a common way of writing addresses in Mexico.
|
|
optional string address_home_between_streets = 69;
|
|
// The meaning of the field is similar to address_home_between_streets. The
|
|
// type should be used for "Entre calle 1" in MX addresses which also
|
|
// contain the "Entre calle 2" field.
|
|
optional string address_home_between_streets_1 = 77;
|
|
// The meaning of the field is similar to address_home_between_streets. The
|
|
// type should be used for "Entre calle 2" in MX addresses which also
|
|
// contain the "Entre calle 1" field.
|
|
optional string address_home_between_streets_2 = 79;
|
|
optional string address_home_overflow = 75;
|
|
// Combination of types address_home_between_streets or address_home_landmark.
|
|
// Note that some address forms require the combination of both in a single
|
|
// field as opposed to each one separately.
|
|
optional string address_home_between_streets_or_landmark = 81;
|
|
// Combination of types address_home_overflow and address_home_landmark.
|
|
// Note that some address forms require the combination of both in a single
|
|
// field as opposed to each one separately.
|
|
optional string address_home_overflow_and_landmark = 83;
|
|
// Combination of types address_home_street_location and
|
|
// address_home_dependent_locality. Note that some address forms require the
|
|
// combination of both in a single field as opposed to each one separately.
|
|
optional string address_home_street_location_and_locality = 89;
|
|
|
|
// Validation status records for address fields.
|
|
optional VerificationStatus address_home_city_status = 43;
|
|
optional VerificationStatus address_home_state_status = 44;
|
|
optional VerificationStatus address_home_zip_status = 45;
|
|
optional VerificationStatus address_home_country_status = 46;
|
|
optional VerificationStatus address_home_landmark_status = 68;
|
|
optional VerificationStatus address_home_between_streets_status = 70;
|
|
optional VerificationStatus address_home_between_streets_1_status = 78;
|
|
optional VerificationStatus address_home_between_streets_2_status = 80;
|
|
optional VerificationStatus address_home_admin_level_2_status = 72;
|
|
optional VerificationStatus address_home_overflow_status = 76;
|
|
optional VerificationStatus address_home_between_streets_or_landmark_status =
|
|
82;
|
|
optional VerificationStatus address_home_overflow_and_landmark_status = 84;
|
|
optional VerificationStatus address_home_street_location_and_locality_status =
|
|
90;
|
|
optional VerificationStatus address_home_street_address_status = 47;
|
|
optional VerificationStatus address_home_sorting_code_status = 48;
|
|
optional VerificationStatus address_home_dependent_locality_status = 49;
|
|
optional VerificationStatus address_home_language_code_status = 50;
|
|
optional VerificationStatus address_home_thoroughfare_name_status = 51;
|
|
optional VerificationStatus address_home_thoroughfare_number_status = 52;
|
|
optional VerificationStatus address_home_street_location_status = 74;
|
|
optional VerificationStatus address_home_subpremise_name_status = 55;
|
|
optional VerificationStatus address_home_apt_status = 86;
|
|
optional VerificationStatus address_home_apt_num_status = 58;
|
|
optional VerificationStatus address_home_apt_type_status = 88;
|
|
optional VerificationStatus address_home_floor_status = 59;
|
|
|
|
// Phone.
|
|
repeated string phone_home_whole_number = 13;
|
|
|
|
reserved 63;
|
|
reserved "disallow_settings_visible_updates";
|
|
|
|
// Removed in M123.
|
|
reserved 64;
|
|
reserved "birthdate_day";
|
|
reserved 65;
|
|
reserved "birthdate_month";
|
|
reserved 66;
|
|
reserved "birthdate_year";
|
|
|
|
// Deprecated.
|
|
optional string deprecated_label = 1 [deprecated = true];
|
|
optional string phone_fax_whole_number = 14 [deprecated = true];
|
|
// The following validity-related fields have only been used in combination
|
|
// with an experimental features that are disabled for all clients and have
|
|
// been removed in M100.
|
|
optional int64 validity_state_bitfield = 24 [deprecated = true];
|
|
optional bool is_client_validity_states_updated = 25 [deprecated = true];
|
|
// Removed in M118.
|
|
reserved 40;
|
|
reserved "address_home_dependent_thoroughfare_name";
|
|
reserved 41;
|
|
reserved "address_home_premise_name";
|
|
reserved 53;
|
|
reserved "address_home_dependent_thoroughfare_name_status";
|
|
reserved 54;
|
|
reserved "address_home_premise_name_status";
|
|
// Removed in M122.
|
|
reserved 26;
|
|
reserved "name_honorific";
|
|
}
|
|
|
|
message AutofillSpecifics {
|
|
// If any of these 3 fields are present, then all 3 should be, and it implies
|
|
// that this entity represents a classic autofill object. In this case,
|
|
// none of the autofill++ objects below should be present.
|
|
optional string name = 1;
|
|
optional string value = 2;
|
|
repeated int64 usage_timestamp = 3;
|
|
|
|
// An autofill++ profile object. If present, indicates this entity
|
|
// represents an AutofillProfile exclusively, and no other fields (such as
|
|
// name/value or credit_card) should be present.
|
|
optional AutofillProfileSpecifics profile = 4;
|
|
|
|
reserved 5;
|
|
reserved "encrypted_credit_card";
|
|
reserved 6;
|
|
reserved "credit_card";
|
|
}
|
|
|
|
// TODO(crbug.com/1020740): Deprecated, remove this once dependent change is
|
|
// done. Use WalletCreditCardCloudTokenData instead.
|
|
message CloudTokenData {
|
|
// Last 4-5 digits of the Cloud Primary Account Number (CPAN).
|
|
optional string suffix = 1;
|
|
|
|
// CPAN Month number 1-12.
|
|
optional int32 exp_month = 2;
|
|
|
|
// CPAN Four-digit year (e.g. 2017).
|
|
optional int32 exp_year = 3;
|
|
|
|
// URL of the card art to be displayed for CPAN.
|
|
optional string art_fife_url = 4;
|
|
|
|
// Opaque identifier for the cloud token associated with the payment
|
|
// instrument.
|
|
optional string instrument_token = 5;
|
|
}
|
|
|
|
// Next id: 8
|
|
message CardBenefit {
|
|
// The unique identifier of the benefit. Generated originally in Chrome Sync
|
|
// server.
|
|
optional string benefit_id = 7;
|
|
|
|
// The benefit description (Engligh only currently) to be shown in the UI.
|
|
optional string benefit_description = 1;
|
|
|
|
// When the benefit should be displayed, in UTC time.
|
|
optional int64 start_time_unix_epoch_milliseconds = 2;
|
|
optional int64 end_time_unix_epoch_milliseconds = 3;
|
|
|
|
// Proto containing data specific to a flat rate benefit. Empty as flat rate
|
|
// benefits don't have unique fields. The actual benefit (e.g. "2% cash back")
|
|
// is already included in the `benefit_description`.
|
|
message FlatRateBenefit {}
|
|
|
|
// For category benefits, represents the category of purchases that the
|
|
// benefit can be applied to.
|
|
enum CategoryBenefitType {
|
|
CATEGORY_BENEFIT_TYPE_UNKNOWN = 0;
|
|
SUBSCRIPTION = 1;
|
|
FLIGHTS = 2;
|
|
DINING = 3;
|
|
ENTERTAINMENT = 4;
|
|
STREAMING = 5;
|
|
GROCERY_STORES = 6;
|
|
}
|
|
|
|
// Proto containing data specific to a category benefit.
|
|
message CategoryBenefit {
|
|
// The type of category purchases the benefit is eligible on.
|
|
optional CategoryBenefitType category_benefit_type = 1;
|
|
}
|
|
|
|
// Proto containing data specific to a merchant benefit.
|
|
message MerchantBenefit {
|
|
// The merchant domain that the benefit is eligible on.
|
|
// Example: https://www.acme.com
|
|
repeated string merchant_domain = 1;
|
|
}
|
|
|
|
// Proto data representing the actual data of the credit card benefit,
|
|
// depending on the benefit type.
|
|
oneof DomainSpecificBenefit {
|
|
FlatRateBenefit flat_rate_benefit = 4;
|
|
CategoryBenefit category_benefit = 5;
|
|
MerchantBenefit merchant_benefit = 6;
|
|
}
|
|
}
|
|
|
|
message CardIssuer {
|
|
enum Issuer {
|
|
ISSUER_UNKNOWN = 0;
|
|
// Card where the issuer is Google.
|
|
GOOGLE = 1;
|
|
// Card where the issuer is external.
|
|
EXTERNAL_ISSUER = 2;
|
|
}
|
|
optional Issuer issuer = 1;
|
|
|
|
// Uniquely identifies the issuer of the card. This field is required when
|
|
// Issuer is EXTERNAL_ISSUER.
|
|
// Example: capitalone, amex.
|
|
optional string issuer_id = 2;
|
|
}
|
|
|
|
message WalletMaskedCreditCard {
|
|
reserved 9, 14;
|
|
reserved "card_class";
|
|
|
|
enum WalletCardStatus {
|
|
VALID = 0;
|
|
EXPIRED = 1;
|
|
}
|
|
|
|
enum WalletCardType {
|
|
UNKNOWN = 0;
|
|
AMEX = 1;
|
|
DISCOVER = 2;
|
|
JCB = 3;
|
|
MAESTRO = 4;
|
|
MASTER_CARD = 5;
|
|
SOLO = 6;
|
|
SWITCH = 7;
|
|
VISA = 8;
|
|
UNIONPAY = 9;
|
|
ELO = 10;
|
|
}
|
|
|
|
enum VirtualCardEnrollmentState {
|
|
UNSPECIFIED = 0;
|
|
UNENROLLED = 1 [deprecated = true];
|
|
ENROLLED = 2;
|
|
UNENROLLED_AND_NOT_ELIGIBLE = 3;
|
|
UNENROLLED_AND_ELIGIBLE = 4;
|
|
}
|
|
|
|
enum VirtualCardEnrollmentType {
|
|
TYPE_UNSPECIFIED = 0;
|
|
ISSUER = 1;
|
|
NETWORK = 2;
|
|
}
|
|
|
|
// Server-generated unique ID string. This is opaque to the client.
|
|
// This is the legacy version of |instrument_id|.
|
|
optional string id = 1;
|
|
|
|
// What the server thinks of this card.
|
|
optional WalletCardStatus status = 2;
|
|
|
|
optional string name_on_card = 3;
|
|
|
|
optional WalletCardType type = 4;
|
|
|
|
// Last 4 digits of the credit card number.
|
|
optional string last_four = 5;
|
|
|
|
// Month number 1-12.
|
|
optional int32 exp_month = 6;
|
|
|
|
// Four-digit year (e.g. 2017).
|
|
optional int32 exp_year = 7;
|
|
|
|
// The WalletPostalAddress.id of the billing address.
|
|
optional string billing_address_id = 8;
|
|
|
|
// Issuing Bank name which is internationalized (e.g. "Chase", "工商银行")
|
|
optional string bank_name = 10;
|
|
|
|
// TODO(crbug.com/1020740): Deprecated, remove this once dependent change is
|
|
// done.
|
|
// Use WalletCreditCardCloudTokenData instead. This field will be set if
|
|
// a cloud token is available for the instrument.
|
|
optional CloudTokenData cloud_token_data = 11;
|
|
|
|
// The card's nickname, if it exists.
|
|
optional string nickname = 12;
|
|
|
|
// Issuer of the card.
|
|
optional CardIssuer card_issuer = 13;
|
|
|
|
// Server-generated unique ID. This is opaque to the client.
|
|
// |id| is the legacy version of this.
|
|
optional int64 instrument_id = 15;
|
|
|
|
// The state of virtual card enrollment.
|
|
optional VirtualCardEnrollmentState virtual_card_enrollment_state = 16;
|
|
|
|
// The URL for the client to fetch the card art image.
|
|
optional string card_art_url = 17;
|
|
|
|
// The product description for the card. Used to be shown in the UI.
|
|
optional string product_description = 18;
|
|
|
|
// The type of virtual card enrollment. kTypeUnspecified indicates that the
|
|
// card is unenrolled.
|
|
optional VirtualCardEnrollmentType virtual_card_enrollment_type = 19;
|
|
|
|
// The benefits (e.g. points or discounts) associated with purchases made
|
|
// with the card.
|
|
repeated CardBenefit card_benefit = 20;
|
|
|
|
// Separate link from the card issuer which provides additional context or
|
|
// terms and conditions regarding the credit card product and its benefits.
|
|
optional string product_terms_url = 21;
|
|
}
|
|
|
|
// Unused by the client since M121.
|
|
// TODO(crbug.com/1457187): Some server-side code still relies on this message.
|
|
// To keep the protos in sync, it is kept until that code is cleaned up.
|
|
// Different than an AutofillProfile because this represents some known address
|
|
// on the server that is pulled down rather than synced between Chromes.
|
|
message WalletPostalAddress {
|
|
optional string id = 1;
|
|
|
|
optional string recipient_name = 12;
|
|
optional string company_name = 2;
|
|
|
|
// This is the street address, of which there may be multiple lines. This
|
|
// corresponds to "address_home_line[1|2] in the AutofillProfileSpecifics
|
|
// message above. In some locales there may be more than two lines.
|
|
repeated string street_address = 3;
|
|
|
|
// Also known as "administrative area". This is normally the state or
|
|
// province in most countries.
|
|
optional string address_1 = 4;
|
|
|
|
// Also known as "locality". In the US this is the city.
|
|
optional string address_2 = 5;
|
|
|
|
// A sub-classification beneath the city, e.g. an inner-city district or
|
|
// suburb. Also known as "dependent_locality"
|
|
optional string address_3 = 6;
|
|
|
|
// Used in certain countries. Also known as "sub_dependent_locality".
|
|
optional string address_4 = 7;
|
|
|
|
optional string postal_code = 8;
|
|
|
|
// Similar to the zipcode column, but used for businesses or organizations
|
|
// that might not be geographically contiguous. The canonical example is
|
|
// CEDEX in France.
|
|
optional string sorting_code = 9;
|
|
|
|
optional string country_code = 10;
|
|
optional string language_code = 11;
|
|
|
|
// Phone number. The format is unspecified and will be explicitly ignored.
|
|
optional string phone_number = 13;
|
|
}
|
|
|
|
// Contains information about a Payments Customer.
|
|
message PaymentsCustomerData {
|
|
// The billable customer ID associated with the account.
|
|
optional string id = 1;
|
|
}
|
|
|
|
// Contains information about the cloud token data of server credit cards.
|
|
message WalletCreditCardCloudTokenData {
|
|
// Server-generated ID string for the card this cloud token data is related
|
|
// to. This should match the id in WalletMaskedCreditCard for to fetch the
|
|
// corresponding actual card data. Note this is not unique across all cloud
|
|
// token data, which means one card can have multiple sets of cloud token data
|
|
// with the same masked_card_id.
|
|
optional string masked_card_id = 1;
|
|
|
|
// Last 4-5 digits of the Cloud Primary Account Number (CPAN).
|
|
optional string suffix = 2;
|
|
|
|
// CPAN Month number 1-12.
|
|
optional int32 exp_month = 3;
|
|
|
|
// CPAN Four-digit year (e.g. 2017).
|
|
optional int32 exp_year = 4;
|
|
|
|
// URL of the card art to be displayed for CPAN.
|
|
optional string art_fife_url = 5;
|
|
|
|
// Opaque identifier for the cloud token.
|
|
optional string instrument_token = 6;
|
|
}
|
|
|
|
// Contains information of payment instruments that can be used by the user.
|
|
message PaymentInstrument {
|
|
// Opaque identifier for the account stored in Payments Platform.
|
|
// This will be used to initiate the payment.
|
|
optional int64 instrument_id = 1;
|
|
|
|
// Supported payment infrastructures (rail) that allow users to send money
|
|
// between the payer and the payee. https://en.wikipedia.org/wiki/Payment_rail
|
|
enum SupportedRail {
|
|
SUPPORTED_RAIL_UNKNOWN = 0;
|
|
// Payment rails for Brazil Open Banking.
|
|
PIX = 1;
|
|
// International Bank Account Numbers.
|
|
IBAN = 2;
|
|
}
|
|
// The supported rails for which a payment can be made for the given account.
|
|
// For example, Pix is the open-banking rail in Brazil, UPI is the
|
|
// open-banking rail in India.
|
|
repeated SupportedRail supported_rails = 2;
|
|
|
|
// The URL for the image to be displayed when showing the account to the
|
|
// user.
|
|
optional string display_icon_url = 3;
|
|
|
|
// Nickname for the instrument.
|
|
optional string nickname = 4;
|
|
|
|
// The backing source for the applicable rails.
|
|
oneof instrument_details {
|
|
BankAccountDetails bank_account = 5;
|
|
WalletMaskedIban iban = 6;
|
|
}
|
|
}
|
|
|
|
// Contains information of server IBAN (International Bank Account Number).
|
|
message WalletMaskedIban {
|
|
// Opaque identifier for the account stored in Payments Platform.
|
|
optional string instrument_id = 1;
|
|
|
|
// Prefix of the full IBAN value, if available.
|
|
optional string prefix = 2;
|
|
|
|
// Suffix of the full IBAN value, if available.
|
|
optional string suffix = 3;
|
|
|
|
// Length of the full IBAN value, if available.
|
|
optional int32 length = 4;
|
|
|
|
// Nickname for the IBAN, if available.
|
|
optional string nickname = 5;
|
|
}
|
|
|
|
// Details of a bank account required to show it in the payment instrument
|
|
// selector.
|
|
message BankAccountDetails {
|
|
// The name of the bank where the user has an account.
|
|
optional string bank_name = 1;
|
|
|
|
// The last four digits of the account number to help the user identify their
|
|
// account.
|
|
optional string account_number_suffix = 2;
|
|
|
|
enum AccountType {
|
|
ACCOUNT_TYPE_UNSPECIFIED = 0;
|
|
CHECKING = 1;
|
|
SAVINGS = 2;
|
|
CURRENT = 3;
|
|
SALARY = 4;
|
|
TRANSACTING_ACCOUNT = 5;
|
|
}
|
|
// The type of bank account.
|
|
optional AccountType account_type = 3;
|
|
}
|
|
|
|
message AutofillWalletSpecifics {
|
|
enum WalletInfoType {
|
|
UNKNOWN = 0;
|
|
MASKED_CREDIT_CARD = 1;
|
|
// POSTAL_ADDRESS is unused by the client since M121.
|
|
POSTAL_ADDRESS = 2;
|
|
CUSTOMER_DATA = 3;
|
|
CREDIT_CARD_CLOUD_TOKEN_DATA = 4;
|
|
PAYMENT_INSTRUMENT = 5;
|
|
MASKED_IBAN = 6 [deprecated = true];
|
|
}
|
|
|
|
optional WalletInfoType type = 1;
|
|
|
|
// This field exists if and only if the "type" field equals to
|
|
// MASKED_CREDIT_CARD.
|
|
optional WalletMaskedCreditCard masked_card = 2;
|
|
|
|
// Unused by the client since M121.
|
|
// This field exists if and only if the `type` equals POSTAL_ADDRESS.
|
|
// TODO(crbug.com/1457187): Some server-side code still relies on this field.
|
|
// To keep the protos in sync, it is kept until that code is cleaned up.
|
|
optional WalletPostalAddress address = 3;
|
|
|
|
// This field exists if and only if the "type" field equals to CUSTOMER_DATA.
|
|
optional PaymentsCustomerData customer_data = 4;
|
|
|
|
// This field exists if and only if the "type" field equals to
|
|
// CREDIT_CARD_CLOUD_TOKEN_DATA.
|
|
optional WalletCreditCardCloudTokenData cloud_token_data = 5;
|
|
|
|
// This field exists if and only if the "type" field equals to
|
|
// PAYMENT_INSTRUMENT.
|
|
optional PaymentInstrument payment_instrument = 6;
|
|
|
|
// This field exists if and only if the `type` field equals to
|
|
// MASKED_IBAN.
|
|
optional WalletMaskedIban masked_iban = 7 [deprecated = true];
|
|
}
|
|
|
|
// Wallet card usage information that can be synced.
|
|
message WalletMetadataSpecifics {
|
|
enum Type {
|
|
UNKNOWN = 0;
|
|
CARD = 1;
|
|
// Unused by the client since M121.
|
|
// TODO(crbug.com/1457187): Some server-side code still relies on this.
|
|
// To keep the protos in sync, it is kept until that code is cleaned up.
|
|
ADDRESS = 2;
|
|
IBAN = 3;
|
|
}
|
|
|
|
// The type of the Wallet metadata.
|
|
optional Type type = 1;
|
|
|
|
// Base64 encoding of the unique ID string of the corresponding
|
|
// AutofillMetadata.
|
|
// For Wallet cards, this value is WalletMaskedCreditCard::id.
|
|
// For Wallet IBANs, this value is WalletMaskedIban::instrument_id.
|
|
optional string id = 2;
|
|
|
|
// The number of times that this Wallet card or address was used.
|
|
optional int64 use_count = 3;
|
|
|
|
// The last use date of this Wallet card or address. Measured in microseconds
|
|
// since the Windows epoch (1601).
|
|
optional int64 use_date = 4;
|
|
|
|
// The id of the profile/address that represents the billing address of this
|
|
// Wallet card.
|
|
optional string card_billing_address_id = 5;
|
|
|
|
// Unused by the client since M121.
|
|
// TODO(crbug.com/1457187): Some server-side code still relies on this field.
|
|
// To keep the protos in sync, it is kept until that code is cleaned up.
|
|
optional bool address_has_converted = 6;
|
|
}
|