blob: 28cde7b6f0343035509d9f3cd8a4ac6176b41148 [file] [log] [blame] [edit]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: deprecated_member_use_from_same_package
// ignore_for_file: doc_directive_unknown
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unintended_html_in_doc_comment
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_string_interpolations
/// Google Wallet API - v1
///
/// API for issuers to save and manage Google Wallet Objects.
///
/// For more information, see <https://developers.google.com/pay/passes>
///
/// Create an instance of [WalletobjectsApi] to access these resources:
///
/// - [EventticketclassResource]
/// - [EventticketobjectResource]
/// - [FlightclassResource]
/// - [FlightobjectResource]
/// - [GenericclassResource]
/// - [GenericobjectResource]
/// - [GiftcardclassResource]
/// - [GiftcardobjectResource]
/// - [IssuerResource]
/// - [JwtResource_1]
/// - [LoyaltyclassResource]
/// - [LoyaltyobjectResource]
/// - [MediaResource]
/// - [OfferclassResource]
/// - [OfferobjectResource]
/// - [PermissionsResource]
/// - [SmarttapResource]
/// - [TransitclassResource]
/// - [TransitobjectResource]
/// - [WalletobjectsResource]
/// - [WalletobjectsV1Resource]
/// - [WalletobjectsV1PrivateContentResource]
library;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'dart:core' as core;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
import '../shared.dart';
import '../src/user_agent.dart';
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show
ApiRequestError,
ByteRange,
DetailedApiRequestError,
DownloadOptions,
Media,
PartialDownloadOptions,
ResumableUploadOptions,
UploadOptions;
/// API for issuers to save and manage Google Wallet Objects.
class WalletobjectsApi {
/// Private Service: https://www.googleapis.com/auth/wallet_object.issuer
static const walletObjectIssuerScope =
'https://www.googleapis.com/auth/wallet_object.issuer';
final commons.ApiRequester _requester;
EventticketclassResource get eventticketclass =>
EventticketclassResource(_requester);
EventticketobjectResource get eventticketobject =>
EventticketobjectResource(_requester);
FlightclassResource get flightclass => FlightclassResource(_requester);
FlightobjectResource get flightobject => FlightobjectResource(_requester);
GenericclassResource get genericclass => GenericclassResource(_requester);
GenericobjectResource get genericobject => GenericobjectResource(_requester);
GiftcardclassResource get giftcardclass => GiftcardclassResource(_requester);
GiftcardobjectResource get giftcardobject =>
GiftcardobjectResource(_requester);
IssuerResource get issuer => IssuerResource(_requester);
JwtResource_1 get jwt => JwtResource_1(_requester);
LoyaltyclassResource get loyaltyclass => LoyaltyclassResource(_requester);
LoyaltyobjectResource get loyaltyobject => LoyaltyobjectResource(_requester);
MediaResource get media => MediaResource(_requester);
OfferclassResource get offerclass => OfferclassResource(_requester);
OfferobjectResource get offerobject => OfferobjectResource(_requester);
PermissionsResource get permissions => PermissionsResource(_requester);
SmarttapResource get smarttap => SmarttapResource(_requester);
TransitclassResource get transitclass => TransitclassResource(_requester);
TransitobjectResource get transitobject => TransitobjectResource(_requester);
WalletobjectsResource get walletobjects => WalletobjectsResource(_requester);
WalletobjectsApi(
http.Client client, {
core.String rootUrl = 'https://walletobjects.googleapis.com/',
core.String servicePath = '',
}) : _requester = commons.ApiRequester(
client,
rootUrl,
servicePath,
requestHeaders,
);
}
class EventticketclassResource {
final commons.ApiRequester _requester;
EventticketclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the event ticket class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return EventTicketClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the event ticket class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return EventTicketClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an event ticket class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClass> insert(
EventTicketClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/eventTicketClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return EventTicketClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all event ticket classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/eventTicketClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return EventTicketClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the event ticket class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClass> patch(
EventTicketClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return EventTicketClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the event ticket class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketClass> update(
EventTicketClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return EventTicketClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class EventticketobjectResource {
final commons.ApiRequester _requester;
EventticketobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the event ticket object referenced by the given object
/// ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return EventTicketObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the event ticket object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return EventTicketObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an event ticket object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObject> insert(
EventTicketObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/eventTicketObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return EventTicketObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all event ticket objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/eventTicketObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return EventTicketObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Modifies linked offer objects for the event ticket object with the given
/// ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObject> modifylinkedofferobjects(
ModifyLinkedOfferObjectsRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketObject/' +
commons.escapeVariable('$resourceId') +
'/modifyLinkedOfferObjects';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return EventTicketObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the event ticket object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObject> patch(
EventTicketObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return EventTicketObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the event ticket object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [EventTicketObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<EventTicketObject> update(
EventTicketObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/eventTicketObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return EventTicketObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class FlightclassResource {
final commons.ApiRequester _requester;
FlightclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the flight class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return FlightClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the flight class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return FlightClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an flight class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClass> insert(
FlightClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/flightClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return FlightClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all flight classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/flightClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return FlightClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the flight class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClass> patch(
FlightClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return FlightClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the flight class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightClass> update(
FlightClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return FlightClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class FlightobjectResource {
final commons.ApiRequester _requester;
FlightobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the flight object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return FlightObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the flight object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return FlightObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an flight object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObject> insert(
FlightObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/flightObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return FlightObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all flight objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/flightObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return FlightObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the flight object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObject> patch(
FlightObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return FlightObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the flight object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FlightObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FlightObject> update(
FlightObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/flightObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return FlightObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class GenericclassResource {
final commons.ApiRequester _requester;
GenericclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the generic class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GenericClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the generic class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GenericClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts a generic class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClass> insert(
GenericClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/genericClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GenericClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all generic classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/genericClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GenericClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the generic class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClass> patch(
GenericClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return GenericClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the Generic class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericClass> update(
GenericClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return GenericClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class GenericobjectResource {
final commons.ApiRequester _requester;
GenericobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the generic object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GenericObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the generic object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GenericObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts a generic object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObject> insert(
GenericObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/genericObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GenericObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all generic objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/genericObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GenericObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the generic object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObject> patch(
GenericObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return GenericObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the generic object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value needs to follow the format
/// `issuerID.identifier` where `issuerID` is issued by Google and
/// `identifier` is chosen by you. The unique identifier can only include
/// alphanumeric characters, `.`, `_`, or `-`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GenericObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GenericObject> update(
GenericObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/genericObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return GenericObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class GiftcardclassResource {
final commons.ApiRequester _requester;
GiftcardclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the gift card class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GiftCardClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the gift card class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GiftCardClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an gift card class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClass> insert(
GiftCardClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/giftCardClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GiftCardClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all gift card classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/giftCardClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GiftCardClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the gift card class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClass> patch(
GiftCardClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return GiftCardClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the gift card class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardClass> update(
GiftCardClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return GiftCardClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class GiftcardobjectResource {
final commons.ApiRequester _requester;
GiftcardobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the gift card object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GiftCardObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the gift card object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GiftCardObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an gift card object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObject> insert(
GiftCardObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/giftCardObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return GiftCardObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all gift card objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/giftCardObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GiftCardObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the gift card object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObject> patch(
GiftCardObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return GiftCardObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the gift card object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GiftCardObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GiftCardObject> update(
GiftCardObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/giftCardObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return GiftCardObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class IssuerResource {
final commons.ApiRequester _requester;
IssuerResource(commons.ApiRequester client) : _requester = client;
/// Returns the issuer with the given issuer ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an issuer.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Issuer].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Issuer> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/issuer/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Issuer.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Inserts an issuer with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Issuer].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Issuer> insert(Issuer request, {core.String? $fields}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/issuer';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Issuer.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Returns a list of all issuers shared to the caller.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [IssuerListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<IssuerListResponse> list({core.String? $fields}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/issuer';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return IssuerListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the issuer referenced by the given issuer ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an issuer.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Issuer].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Issuer> patch(
Issuer request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/issuer/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return Issuer.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the issuer referenced by the given issuer ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an issuer.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Issuer].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Issuer> update(
Issuer request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/issuer/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Issuer.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class JwtResource_1 {
final commons.ApiRequester _requester;
JwtResource_1(commons.ApiRequester client) : _requester = client;
/// Inserts the resources in the JWT.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [JwtInsertResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<JwtInsertResponse> insert(
JwtResource request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/jwt';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return JwtInsertResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class LoyaltyclassResource {
final commons.ApiRequester _requester;
LoyaltyclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the loyalty class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return LoyaltyClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the loyalty class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return LoyaltyClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an loyalty class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClass> insert(
LoyaltyClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/loyaltyClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return LoyaltyClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all loyalty classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/loyaltyClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return LoyaltyClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the loyalty class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClass> patch(
LoyaltyClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return LoyaltyClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the loyalty class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyClass> update(
LoyaltyClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return LoyaltyClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class LoyaltyobjectResource {
final commons.ApiRequester _requester;
LoyaltyobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the loyalty object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return LoyaltyObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the loyalty object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return LoyaltyObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an loyalty object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObject> insert(
LoyaltyObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/loyaltyObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return LoyaltyObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all loyalty objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/loyaltyObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return LoyaltyObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Modifies linked offer objects for the loyalty object with the given ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObject> modifylinkedofferobjects(
ModifyLinkedOfferObjectsRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyObject/' +
commons.escapeVariable('$resourceId') +
'/modifyLinkedOfferObjects';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return LoyaltyObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the loyalty object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObject> patch(
LoyaltyObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return LoyaltyObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the loyalty object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [LoyaltyObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<LoyaltyObject> update(
LoyaltyObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/loyaltyObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return LoyaltyObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class MediaResource {
final commons.ApiRequester _requester;
MediaResource(commons.ApiRequester client) : _requester = client;
/// Downloads rotating barcode values for the transit object referenced by the
/// given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// [downloadOptions] - Options for downloading. A download can be either a
/// Metadata (default) or Media download. Partial Media downloads are possible
/// as well.
///
/// Completes with a
///
/// - [Media] for Metadata downloads (see [downloadOptions]).
///
/// - [commons.Media] for Media downloads (see [downloadOptions]).
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<core.Object> download(
core.String resourceId, {
core.String? $fields,
commons.DownloadOptions downloadOptions = commons.DownloadOptions.metadata,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId') +
'/downloadRotatingBarcodeValues';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
downloadOptions: downloadOptions,
);
if (downloadOptions.isMetadataDownload) {
return Media.fromJson(response_ as core.Map<core.String, core.dynamic>);
} else {
return response_ as commons.Media;
}
}
/// Uploads rotating barcode values for the transit object referenced by the
/// given object ID.
///
/// Note the max upload size is specified in
/// google3/production/config/cdd/apps-upload/customers/payments-consumer-passes/config.gcl
/// and enforced by Scotty.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// [uploadMedia] - The media to upload.
///
/// Completes with a [TransitObjectUploadRotatingBarcodeValuesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObjectUploadRotatingBarcodeValuesResponse> upload(
TransitObjectUploadRotatingBarcodeValuesRequest request,
core.String resourceId, {
core.String? $fields,
commons.Media? uploadMedia,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
core.String url_;
if (uploadMedia == null) {
url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId') +
'/uploadRotatingBarcodeValues';
} else {
url_ =
'/upload/walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId') +
'/uploadRotatingBarcodeValues';
}
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
uploadMedia: uploadMedia,
uploadOptions: commons.UploadOptions.defaultOptions,
);
return TransitObjectUploadRotatingBarcodeValuesResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class OfferclassResource {
final commons.ApiRequester _requester;
OfferclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the offer class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return OfferClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the offer class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return OfferClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an offer class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClass> insert(
OfferClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/offerClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return OfferClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all offer classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/offerClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return OfferClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the offer class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClass> patch(
OfferClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return OfferClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the offer class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferClass> update(
OfferClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerClass/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return OfferClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class OfferobjectResource {
final commons.ApiRequester _requester;
OfferobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the offer object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return OfferObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the offer object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerObject/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return OfferObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an offer object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObject> insert(
OfferObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/offerObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return OfferObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all offer objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/offerObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return OfferObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the offer object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObject> patch(
OfferObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerObject/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return OfferObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the offer object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [OfferObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<OfferObject> update(
OfferObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/offerObject/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return OfferObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class PermissionsResource {
final commons.ApiRequester _requester;
PermissionsResource(commons.ApiRequester client) : _requester = client;
/// Returns the permissions for the given issuer id.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an issuer. This ID must be unique
/// across all issuers.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Permissions].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Permissions> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/permissions/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Permissions.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the permissions for the given issuer.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an issuer. This ID must be unique
/// across all issuers.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Permissions].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Permissions> update(
Permissions request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/permissions/' + commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Permissions.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class SmarttapResource {
final commons.ApiRequester _requester;
SmarttapResource(commons.ApiRequester client) : _requester = client;
/// Inserts the smart tap.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [SmartTap].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<SmartTap> insert(
SmartTap request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/smartTap';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return SmartTap.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class TransitclassResource {
final commons.ApiRequester _requester;
TransitclassResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the transit class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClassAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClassAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitClass/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return TransitClassAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the transit class with the given class ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClass> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return TransitClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts a transit class with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClass> insert(
TransitClass request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/transitClass';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return TransitClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all transit classes for a given issuer ID.
///
/// Request parameters:
///
/// [issuerId] - The ID of the issuer authorized to list classes.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` classes are available in a list. For
/// example, if you have a list of 200 classes and you call list with
/// `maxResults` set to 20, list will return the first 20 classes and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 classes.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClassListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClassListResponse> list({
core.String? issuerId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (issuerId != null) 'issuerId': [issuerId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/transitClass';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return TransitClassListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the transit class referenced by the given class ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClass> patch(
TransitClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return TransitClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the transit class referenced by the given class ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for a class. This ID must be unique
/// across all classes from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitClass].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitClass> update(
TransitClass request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitClass/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return TransitClass.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class TransitobjectResource {
final commons.ApiRequester _requester;
TransitobjectResource(commons.ApiRequester client) : _requester = client;
/// Adds a message to the transit object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObjectAddMessageResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObjectAddMessageResponse> addmessage(
AddMessageRequest request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId') +
'/addMessage';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return TransitObjectAddMessageResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns the transit object with the given object ID.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObject> get(
core.String resourceId, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return TransitObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Inserts an transit object with the given ID and properties.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObject> insert(
TransitObject request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/transitObject';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return TransitObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Returns a list of all transit objects for a given issuer ID.
///
/// Request parameters:
///
/// [classId] - The ID of the class whose objects will be listed.
///
/// [maxResults] - Identifies the max number of results returned by a list.
/// All results are returned if `maxResults` isn't defined.
///
/// [token] - Used to get the next set of results if `maxResults` is
/// specified, but more than `maxResults` objects are available in a list. For
/// example, if you have a list of 200 objects and you call list with
/// `maxResults` set to 20, list will return the first 20 objects and a token.
/// Call list again with `maxResults` set to 20 and the token to get the next
/// 20 objects.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObjectListResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObjectListResponse> list({
core.String? classId,
core.int? maxResults,
core.String? token,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (classId != null) 'classId': [classId],
if (maxResults != null) 'maxResults': ['${maxResults}'],
if (token != null) 'token': [token],
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/transitObject';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return TransitObjectListResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the transit object referenced by the given object ID.
///
/// This method supports patch semantics.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObject> patch(
TransitObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return TransitObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Updates the transit object referenced by the given object ID.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resourceId] - The unique identifier for an object. This ID must be unique
/// across all objects from an issuer. This value should follow the format
/// issuer ID. identifier where the former is issued by Google and latter is
/// chosen by you. Your unique identifier should only include alphanumeric
/// characters, '.', '_', or '-'.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TransitObject].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TransitObject> update(
TransitObject request,
core.String resourceId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ =
'walletobjects/v1/transitObject/' +
commons.escapeVariable('$resourceId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return TransitObject.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class WalletobjectsResource {
final commons.ApiRequester _requester;
WalletobjectsV1Resource get v1 => WalletobjectsV1Resource(_requester);
WalletobjectsResource(commons.ApiRequester client) : _requester = client;
}
class WalletobjectsV1Resource {
final commons.ApiRequester _requester;
WalletobjectsV1PrivateContentResource get privateContent =>
WalletobjectsV1PrivateContentResource(_requester);
WalletobjectsV1Resource(commons.ApiRequester client) : _requester = client;
}
class WalletobjectsV1PrivateContentResource {
final commons.ApiRequester _requester;
WalletobjectsV1PrivateContentResource(commons.ApiRequester client)
: _requester = client;
/// Provide Google with information about awaiting private pass update.
///
/// This will allow Google to provide the update notification to the device
/// that currently holds this pass.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [SetPassUpdateNoticeResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<SetPassUpdateNoticeResponse> setPassUpdateNotice(
SetPassUpdateNoticeRequest request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'walletobjects/v1/privateContent/setPassUpdateNotice';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return SetPassUpdateNoticeResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
/// ActivationOptions for the class
class ActivationOptions {
/// HTTPS URL that supports REST semantics.
///
/// Would be used for requesting activation from partners for given valuable,
/// triggered by the users.
core.String? activationUrl;
/// Flag to allow users to make activation call from different device.
///
/// This allows client to render the activation button enabled even if the
/// activationStatus is ACTIVATED but the requested device is different than
/// the current device.
core.bool? allowReactivation;
ActivationOptions({this.activationUrl, this.allowReactivation});
ActivationOptions.fromJson(core.Map json_)
: this(
activationUrl: json_['activationUrl'] as core.String?,
allowReactivation: json_['allowReactivation'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (activationUrl != null) 'activationUrl': activationUrl!,
if (allowReactivation != null) 'allowReactivation': allowReactivation!,
};
}
/// The activation status of the object.
///
/// This field includes activation status if valuable supports activation.
class ActivationStatus {
///
/// Possible string values are:
/// - "UNKNOWN_STATE"
/// - "NOT_ACTIVATED" : Not-Activated, this is the default status
/// - "not_activated" : Legacy alias for `NOT_ACTIVATED`. Deprecated.
/// - "ACTIVATED" : Activated
/// - "activated" : Legacy alias for `ACTIVATED`. Deprecated.
core.String? state;
ActivationStatus({this.state});
ActivationStatus.fromJson(core.Map json_)
: this(state: json_['state'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (state != null) 'state': state!,
};
}
/// Resource used when the AddMessage endpoints are called.
class AddMessageRequest {
Message? message;
AddMessageRequest({this.message});
AddMessageRequest.fromJson(core.Map json_)
: this(
message:
json_.containsKey('message')
? Message.fromJson(
json_['message'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (message != null) 'message': message!,
};
}
class AirportInfo {
/// Three character IATA airport code.
///
/// This is a required field for `origin` and `destination`. Eg: "SFO"
core.String? airportIataCode;
/// Optional field that overrides the airport city name defined by IATA.
///
/// By default, Google takes the `airportIataCode` provided and maps it to the
/// official airport city name defined by IATA. Official IATA airport city
/// names can be found at IATA airport city names website. For example, for
/// the airport IATA code "LTN", IATA website tells us that the corresponding
/// airport city is "London". If this field is not populated, Google would
/// display "London". However, populating this field with a custom name (eg:
/// "London Luton") would override it.
LocalizedString? airportNameOverride;
/// A name of the gate.
///
/// Eg: "B59" or "59"
core.String? gate;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#airportInfo"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Terminal name.
///
/// Eg: "INTL" or "I"
core.String? terminal;
AirportInfo({
this.airportIataCode,
this.airportNameOverride,
this.gate,
this.kind,
this.terminal,
});
AirportInfo.fromJson(core.Map json_)
: this(
airportIataCode: json_['airportIataCode'] as core.String?,
airportNameOverride:
json_.containsKey('airportNameOverride')
? LocalizedString.fromJson(
json_['airportNameOverride']
as core.Map<core.String, core.dynamic>,
)
: null,
gate: json_['gate'] as core.String?,
kind: json_['kind'] as core.String?,
terminal: json_['terminal'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (airportIataCode != null) 'airportIataCode': airportIataCode!,
if (airportNameOverride != null)
'airportNameOverride': airportNameOverride!,
if (gate != null) 'gate': gate!,
if (kind != null) 'kind': kind!,
if (terminal != null) 'terminal': terminal!,
};
}
class AppLinkData {
/// Optional information about the partner app link.
AppLinkDataAppLinkInfo? androidAppLinkInfo;
/// Optional display text for the app link button.
///
/// Character limit is 30.
LocalizedString? displayText;
/// Links to open iOS apps are not supported.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
AppLinkDataAppLinkInfo? iosAppLinkInfo;
/// Optional information about the partner web link.
AppLinkDataAppLinkInfo? webAppLinkInfo;
AppLinkData({
this.androidAppLinkInfo,
this.displayText,
this.iosAppLinkInfo,
this.webAppLinkInfo,
});
AppLinkData.fromJson(core.Map json_)
: this(
androidAppLinkInfo:
json_.containsKey('androidAppLinkInfo')
? AppLinkDataAppLinkInfo.fromJson(
json_['androidAppLinkInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
displayText:
json_.containsKey('displayText')
? LocalizedString.fromJson(
json_['displayText'] as core.Map<core.String, core.dynamic>,
)
: null,
iosAppLinkInfo:
json_.containsKey('iosAppLinkInfo')
? AppLinkDataAppLinkInfo.fromJson(
json_['iosAppLinkInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
webAppLinkInfo:
json_.containsKey('webAppLinkInfo')
? AppLinkDataAppLinkInfo.fromJson(
json_['webAppLinkInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (androidAppLinkInfo != null) 'androidAppLinkInfo': androidAppLinkInfo!,
if (displayText != null) 'displayText': displayText!,
if (iosAppLinkInfo != null) 'iosAppLinkInfo': iosAppLinkInfo!,
if (webAppLinkInfo != null) 'webAppLinkInfo': webAppLinkInfo!,
};
}
class AppLinkDataAppLinkInfo {
/// Image isn't supported in the app link module.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? appLogoImage;
/// Target to follow when opening the app link on clients.
///
/// It will be used by partners to open their app or webpage.
AppLinkDataAppLinkInfoAppTarget? appTarget;
/// Description isn't supported in the app link module.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
LocalizedString? description;
/// Title isn't supported in the app link module.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
LocalizedString? title;
AppLinkDataAppLinkInfo({
this.appLogoImage,
this.appTarget,
this.description,
this.title,
});
AppLinkDataAppLinkInfo.fromJson(core.Map json_)
: this(
appLogoImage:
json_.containsKey('appLogoImage')
? Image.fromJson(
json_['appLogoImage'] as core.Map<core.String, core.dynamic>,
)
: null,
appTarget:
json_.containsKey('appTarget')
? AppLinkDataAppLinkInfoAppTarget.fromJson(
json_['appTarget'] as core.Map<core.String, core.dynamic>,
)
: null,
description:
json_.containsKey('description')
? LocalizedString.fromJson(
json_['description'] as core.Map<core.String, core.dynamic>,
)
: null,
title:
json_.containsKey('title')
? LocalizedString.fromJson(
json_['title'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLogoImage != null) 'appLogoImage': appLogoImage!,
if (appTarget != null) 'appTarget': appTarget!,
if (description != null) 'description': description!,
if (title != null) 'title': title!,
};
}
class AppLinkDataAppLinkInfoAppTarget {
/// Package name for AppTarget.
///
/// For example: com.google.android.gm
core.String? packageName;
/// URI for AppTarget.
///
/// The description on the URI must be set. Prefer setting package field
/// instead, if this target is defined for your application.
Uri? targetUri;
AppLinkDataAppLinkInfoAppTarget({this.packageName, this.targetUri});
AppLinkDataAppLinkInfoAppTarget.fromJson(core.Map json_)
: this(
packageName: json_['packageName'] as core.String?,
targetUri:
json_.containsKey('targetUri')
? Uri.fromJson(
json_['targetUri'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (packageName != null) 'packageName': packageName!,
if (targetUri != null) 'targetUri': targetUri!,
};
}
class AuthenticationKey {
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
core.int? id;
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
core.String? publicKeyPem;
AuthenticationKey({this.id, this.publicKeyPem});
AuthenticationKey.fromJson(core.Map json_)
: this(
id: json_['id'] as core.int?,
publicKeyPem: json_['publicKeyPem'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (id != null) 'id': id!,
if (publicKeyPem != null) 'publicKeyPem': publicKeyPem!,
};
}
class Barcode {
/// An optional text that will override the default text that shows under the
/// barcode.
///
/// This field is intended for a human readable equivalent of the barcode
/// value, used when the barcode cannot be scanned.
core.String? alternateText;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#barcode"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The render encoding for the barcode.
///
/// When specified, barcode is rendered in the given encoding. Otherwise best
/// known encoding is chosen by Google.
/// Possible string values are:
/// - "RENDER_ENCODING_UNSPECIFIED"
/// - "UTF_8" : UTF_8 encoding for barcodes. This is only supported for
/// barcode type qrCode.
core.String? renderEncoding;
/// Optional text that will be shown when the barcode is hidden behind a click
/// action.
///
/// This happens in cases where a pass has Smart Tap enabled. If not
/// specified, a default is chosen by Google.
LocalizedString? showCodeText;
/// The type of barcode.
/// Possible string values are:
/// - "BARCODE_TYPE_UNSPECIFIED"
/// - "AZTEC" : Not supported for Rotating Barcodes.
/// - "aztec" : Legacy alias for `AZTEC`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODE_39" : Not supported for Rotating Barcodes.
/// - "code39" : Legacy alias for `CODE_39`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODE_128" : Not supported for Rotating Barcodes.
/// - "code128" : Legacy alias for `CODE_128`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODABAR" : Not supported for Rotating Barcodes.
/// - "codabar" : Legacy alias for `CODABAR`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "DATA_MATRIX" : A 2D matrix barcode consisting of black and white. Cells
/// or modules are arranged in either a square or rectangle. Not supported for
/// Rotating Barcodes.
/// - "dataMatrix" : Legacy alias for `DATA_MATRIX`. Deprecated. Not supported
/// for Rotating Barcodes.
/// - "EAN_8" : Not supported for Rotating Barcodes.
/// - "ean8" : Legacy alias for `EAN_8`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "EAN_13" : Not supported for Rotating Barcodes.
/// - "ean13" : Legacy alias for `EAN_13`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "EAN13" : Legacy alias for `EAN_13`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "ITF_14" : 14 digit ITF code Not supported for Rotating Barcodes.
/// - "itf14" : Legacy alias for `ITF_14`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "PDF_417" : Supported for Rotating Barcodes.
/// - "pdf417" : Legacy alias for `PDF_417`. Deprecated.
/// - "PDF417" : Legacy alias for `PDF_417`. Deprecated.
/// - "QR_CODE" : Supported for Rotating Barcodes.
/// - "qrCode" : Legacy alias for `QR_CODE`. Deprecated.
/// - "qrcode" : Legacy alias for `QR_CODE`. Deprecated.
/// - "UPC_A" : 11 or 12 digit codes Not supported for Rotating Barcodes.
/// - "upcA" : Legacy alias for `UPC_A`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "TEXT_ONLY" : Renders the field as a text field. The `alternateText`
/// field may not be used with a barcode of type `textOnly`. Not supported for
/// Rotating Barcodes.
/// - "textOnly" : Legacy alias for `TEXT_ONLY`. Deprecated. Not supported for
/// Rotating Barcodes.
core.String? type;
/// The value encoded in the barcode.
core.String? value;
Barcode({
this.alternateText,
this.kind,
this.renderEncoding,
this.showCodeText,
this.type,
this.value,
});
Barcode.fromJson(core.Map json_)
: this(
alternateText: json_['alternateText'] as core.String?,
kind: json_['kind'] as core.String?,
renderEncoding: json_['renderEncoding'] as core.String?,
showCodeText:
json_.containsKey('showCodeText')
? LocalizedString.fromJson(
json_['showCodeText'] as core.Map<core.String, core.dynamic>,
)
: null,
type: json_['type'] as core.String?,
value: json_['value'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (alternateText != null) 'alternateText': alternateText!,
if (kind != null) 'kind': kind!,
if (renderEncoding != null) 'renderEncoding': renderEncoding!,
if (showCodeText != null) 'showCodeText': showCodeText!,
if (type != null) 'type': type!,
if (value != null) 'value': value!,
};
}
class BarcodeSectionDetail {
/// A reference to an existing text-based or image field to display.
FieldSelector? fieldSelector;
BarcodeSectionDetail({this.fieldSelector});
BarcodeSectionDetail.fromJson(core.Map json_)
: this(
fieldSelector:
json_.containsKey('fieldSelector')
? FieldSelector.fromJson(
json_['fieldSelector'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (fieldSelector != null) 'fieldSelector': fieldSelector!,
};
}
/// Information to read/write to blobstore2.
typedef Blobstore2Info = $Blobstore2Info;
class BoardingAndSeatingInfo {
/// Set this field only if this flight boards through more than one door or
/// bridge and you want to explicitly print the door location on the boarding
/// pass.
///
/// Most airlines route their passengers to the right door or bridge by
/// refering to doors/bridges by the `seatClass`. In those cases
/// `boardingDoor` should not be set.
/// Possible string values are:
/// - "BOARDING_DOOR_UNSPECIFIED"
/// - "FRONT"
/// - "front" : Legacy alias for `FRONT`. Deprecated.
/// - "BACK"
/// - "back" : Legacy alias for `BACK`. Deprecated.
core.String? boardingDoor;
/// The value of boarding group (or zone) this passenger shall board with.
///
/// eg: "B" The label for this value will be determined by the
/// `boardingPolicy` field in the `flightClass` referenced by this object.
core.String? boardingGroup;
/// The value of boarding position.
///
/// eg: "76"
core.String? boardingPosition;
/// A small image shown above the boarding barcode.
///
/// Airlines can use it to communicate any special boarding privileges. In the
/// event the security program logo is also set, this image might be rendered
/// alongside the logo for that security program.
Image? boardingPrivilegeImage;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#boardingAndSeatingInfo"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The passenger's seat assignment.
///
/// To be used when there is no specific identifier to use in `seatNumber`.
/// eg: "assigned at gate"
LocalizedString? seatAssignment;
/// The value of the seat class.
///
/// eg: "Economy" or "Economy Plus"
core.String? seatClass;
/// The value of passenger seat.
///
/// If there is no specific identifier, use `seatAssignment` instead. eg:
/// "25A"
core.String? seatNumber;
/// The sequence number on the boarding pass.
///
/// This usually matches the sequence in which the passengers checked in.
/// Airline might use the number for manual boarding and bag tags. eg: "49"
core.String? sequenceNumber;
BoardingAndSeatingInfo({
this.boardingDoor,
this.boardingGroup,
this.boardingPosition,
this.boardingPrivilegeImage,
this.kind,
this.seatAssignment,
this.seatClass,
this.seatNumber,
this.sequenceNumber,
});
BoardingAndSeatingInfo.fromJson(core.Map json_)
: this(
boardingDoor: json_['boardingDoor'] as core.String?,
boardingGroup: json_['boardingGroup'] as core.String?,
boardingPosition: json_['boardingPosition'] as core.String?,
boardingPrivilegeImage:
json_.containsKey('boardingPrivilegeImage')
? Image.fromJson(
json_['boardingPrivilegeImage']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
seatAssignment:
json_.containsKey('seatAssignment')
? LocalizedString.fromJson(
json_['seatAssignment']
as core.Map<core.String, core.dynamic>,
)
: null,
seatClass: json_['seatClass'] as core.String?,
seatNumber: json_['seatNumber'] as core.String?,
sequenceNumber: json_['sequenceNumber'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (boardingDoor != null) 'boardingDoor': boardingDoor!,
if (boardingGroup != null) 'boardingGroup': boardingGroup!,
if (boardingPosition != null) 'boardingPosition': boardingPosition!,
if (boardingPrivilegeImage != null)
'boardingPrivilegeImage': boardingPrivilegeImage!,
if (kind != null) 'kind': kind!,
if (seatAssignment != null) 'seatAssignment': seatAssignment!,
if (seatClass != null) 'seatClass': seatClass!,
if (seatNumber != null) 'seatNumber': seatNumber!,
if (sequenceNumber != null) 'sequenceNumber': sequenceNumber!,
};
}
class BoardingAndSeatingPolicy {
/// Indicates the policy the airline uses for boarding.
///
/// If unset, Google will default to `zoneBased`.
/// Possible string values are:
/// - "BOARDING_POLICY_UNSPECIFIED"
/// - "ZONE_BASED"
/// - "zoneBased" : Legacy alias for `ZONE_BASED`. Deprecated.
/// - "GROUP_BASED"
/// - "groupBased" : Legacy alias for `GROUP_BASED`. Deprecated.
/// - "BOARDING_POLICY_OTHER"
/// - "boardingPolicyOther" : Legacy alias for `BOARDING_POLICY_OTHER`.
/// Deprecated.
core.String? boardingPolicy;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#boardingAndSeatingPolicy"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Seating policy which dictates how we display the seat class.
///
/// If unset, Google will default to `cabinBased`.
/// Possible string values are:
/// - "SEAT_CLASS_POLICY_UNSPECIFIED"
/// - "CABIN_BASED"
/// - "cabinBased" : Legacy alias for `CABIN_BASED`. Deprecated.
/// - "CLASS_BASED"
/// - "classBased" : Legacy alias for `CLASS_BASED`. Deprecated.
/// - "TIER_BASED"
/// - "tierBased" : Legacy alias for `TIER_BASED`. Deprecated.
/// - "SEAT_CLASS_POLICY_OTHER"
/// - "seatClassPolicyOther" : Legacy alias for `SEAT_CLASS_POLICY_OTHER`.
/// Deprecated.
core.String? seatClassPolicy;
BoardingAndSeatingPolicy({
this.boardingPolicy,
this.kind,
this.seatClassPolicy,
});
BoardingAndSeatingPolicy.fromJson(core.Map json_)
: this(
boardingPolicy: json_['boardingPolicy'] as core.String?,
kind: json_['kind'] as core.String?,
seatClassPolicy: json_['seatClassPolicy'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (boardingPolicy != null) 'boardingPolicy': boardingPolicy!,
if (kind != null) 'kind': kind!,
if (seatClassPolicy != null) 'seatClassPolicy': seatClassPolicy!,
};
}
class CallbackOptions {
/// URL for the merchant endpoint that would be called to request updates.
///
/// The URL should be hosted on HTTPS and robots.txt should allow the URL path
/// to be accessible by UserAgent:Googlebot. Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? updateRequestUrl;
/// The HTTPS url configured by the merchant.
///
/// The URL should be hosted on HTTPS and robots.txt should allow the URL path
/// to be accessible by UserAgent:Googlebot.
core.String? url;
CallbackOptions({this.updateRequestUrl, this.url});
CallbackOptions.fromJson(core.Map json_)
: this(
updateRequestUrl: json_['updateRequestUrl'] as core.String?,
url: json_['url'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (updateRequestUrl != null) 'updateRequestUrl': updateRequestUrl!,
if (url != null) 'url': url!,
};
}
class CardBarcodeSectionDetails {
/// Optional information to display below the barcode.
BarcodeSectionDetail? firstBottomDetail;
/// Optional information to display above the barcode.
///
/// If `secondTopDetail` is defined, this will be displayed to the start side
/// of this detail section.
BarcodeSectionDetail? firstTopDetail;
/// Optional second piece of information to display above the barcode.
///
/// If `firstTopDetail` is defined, this will be displayed to the end side of
/// this detail section.
BarcodeSectionDetail? secondTopDetail;
CardBarcodeSectionDetails({
this.firstBottomDetail,
this.firstTopDetail,
this.secondTopDetail,
});
CardBarcodeSectionDetails.fromJson(core.Map json_)
: this(
firstBottomDetail:
json_.containsKey('firstBottomDetail')
? BarcodeSectionDetail.fromJson(
json_['firstBottomDetail']
as core.Map<core.String, core.dynamic>,
)
: null,
firstTopDetail:
json_.containsKey('firstTopDetail')
? BarcodeSectionDetail.fromJson(
json_['firstTopDetail']
as core.Map<core.String, core.dynamic>,
)
: null,
secondTopDetail:
json_.containsKey('secondTopDetail')
? BarcodeSectionDetail.fromJson(
json_['secondTopDetail']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (firstBottomDetail != null) 'firstBottomDetail': firstBottomDetail!,
if (firstTopDetail != null) 'firstTopDetail': firstTopDetail!,
if (secondTopDetail != null) 'secondTopDetail': secondTopDetail!,
};
}
class CardRowOneItem {
/// The item to be displayed in the row.
///
/// This item will be automatically centered.
TemplateItem? item;
CardRowOneItem({this.item});
CardRowOneItem.fromJson(core.Map json_)
: this(
item:
json_.containsKey('item')
? TemplateItem.fromJson(
json_['item'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (item != null) 'item': item!,
};
}
class CardRowTemplateInfo {
/// Template for a row containing one item.
///
/// Exactly one of "one_item", "two_items", "three_items" must be set.
CardRowOneItem? oneItem;
/// Template for a row containing three items.
///
/// Exactly one of "one_item", "two_items", "three_items" must be set.
CardRowThreeItems? threeItems;
/// Template for a row containing two items.
///
/// Exactly one of "one_item", "two_items", "three_items" must be set.
CardRowTwoItems? twoItems;
CardRowTemplateInfo({this.oneItem, this.threeItems, this.twoItems});
CardRowTemplateInfo.fromJson(core.Map json_)
: this(
oneItem:
json_.containsKey('oneItem')
? CardRowOneItem.fromJson(
json_['oneItem'] as core.Map<core.String, core.dynamic>,
)
: null,
threeItems:
json_.containsKey('threeItems')
? CardRowThreeItems.fromJson(
json_['threeItems'] as core.Map<core.String, core.dynamic>,
)
: null,
twoItems:
json_.containsKey('twoItems')
? CardRowTwoItems.fromJson(
json_['twoItems'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (oneItem != null) 'oneItem': oneItem!,
if (threeItems != null) 'threeItems': threeItems!,
if (twoItems != null) 'twoItems': twoItems!,
};
}
class CardRowThreeItems {
/// The item to be displayed at the end of the row.
///
/// This item will be aligned to the right.
TemplateItem? endItem;
/// The item to be displayed in the middle of the row.
///
/// This item will be centered between the start and end items.
TemplateItem? middleItem;
/// The item to be displayed at the start of the row.
///
/// This item will be aligned to the left.
TemplateItem? startItem;
CardRowThreeItems({this.endItem, this.middleItem, this.startItem});
CardRowThreeItems.fromJson(core.Map json_)
: this(
endItem:
json_.containsKey('endItem')
? TemplateItem.fromJson(
json_['endItem'] as core.Map<core.String, core.dynamic>,
)
: null,
middleItem:
json_.containsKey('middleItem')
? TemplateItem.fromJson(
json_['middleItem'] as core.Map<core.String, core.dynamic>,
)
: null,
startItem:
json_.containsKey('startItem')
? TemplateItem.fromJson(
json_['startItem'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (endItem != null) 'endItem': endItem!,
if (middleItem != null) 'middleItem': middleItem!,
if (startItem != null) 'startItem': startItem!,
};
}
class CardRowTwoItems {
/// The item to be displayed at the end of the row.
///
/// This item will be aligned to the right.
TemplateItem? endItem;
/// The item to be displayed at the start of the row.
///
/// This item will be aligned to the left.
TemplateItem? startItem;
CardRowTwoItems({this.endItem, this.startItem});
CardRowTwoItems.fromJson(core.Map json_)
: this(
endItem:
json_.containsKey('endItem')
? TemplateItem.fromJson(
json_['endItem'] as core.Map<core.String, core.dynamic>,
)
: null,
startItem:
json_.containsKey('startItem')
? TemplateItem.fromJson(
json_['startItem'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (endItem != null) 'endItem': endItem!,
if (startItem != null) 'startItem': startItem!,
};
}
class CardTemplateOverride {
/// Template information for rows in the card view.
///
/// At most three rows are allowed to be specified.
core.List<CardRowTemplateInfo>? cardRowTemplateInfos;
CardTemplateOverride({this.cardRowTemplateInfos});
CardTemplateOverride.fromJson(core.Map json_)
: this(
cardRowTemplateInfos:
(json_['cardRowTemplateInfos'] as core.List?)
?.map(
(value) => CardRowTemplateInfo.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (cardRowTemplateInfos != null)
'cardRowTemplateInfos': cardRowTemplateInfos!,
};
}
class ClassTemplateInfo {
/// Specifies extra information to be displayed above and below the barcode.
CardBarcodeSectionDetails? cardBarcodeSectionDetails;
/// Override for the card view.
CardTemplateOverride? cardTemplateOverride;
/// Override for the details view (beneath the card view).
DetailsTemplateOverride? detailsTemplateOverride;
/// Override for the passes list view.
ListTemplateOverride? listTemplateOverride;
ClassTemplateInfo({
this.cardBarcodeSectionDetails,
this.cardTemplateOverride,
this.detailsTemplateOverride,
this.listTemplateOverride,
});
ClassTemplateInfo.fromJson(core.Map json_)
: this(
cardBarcodeSectionDetails:
json_.containsKey('cardBarcodeSectionDetails')
? CardBarcodeSectionDetails.fromJson(
json_['cardBarcodeSectionDetails']
as core.Map<core.String, core.dynamic>,
)
: null,
cardTemplateOverride:
json_.containsKey('cardTemplateOverride')
? CardTemplateOverride.fromJson(
json_['cardTemplateOverride']
as core.Map<core.String, core.dynamic>,
)
: null,
detailsTemplateOverride:
json_.containsKey('detailsTemplateOverride')
? DetailsTemplateOverride.fromJson(
json_['detailsTemplateOverride']
as core.Map<core.String, core.dynamic>,
)
: null,
listTemplateOverride:
json_.containsKey('listTemplateOverride')
? ListTemplateOverride.fromJson(
json_['listTemplateOverride']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (cardBarcodeSectionDetails != null)
'cardBarcodeSectionDetails': cardBarcodeSectionDetails!,
if (cardTemplateOverride != null)
'cardTemplateOverride': cardTemplateOverride!,
if (detailsTemplateOverride != null)
'detailsTemplateOverride': detailsTemplateOverride!,
if (listTemplateOverride != null)
'listTemplateOverride': listTemplateOverride!,
};
}
/// A sequence of media data references representing composite data.
///
/// Introduced to support Bigstore composite objects. For details, visit
/// http://go/bigstore-composites.
class CompositeMedia {
/// Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should
/// be the byte representation of a blobstore.BlobRef.
///
/// Since Blobstore is deprecating v1, use blobstore2_info instead. For now,
/// any v2 blob will also be represented in this field as v1 BlobRef.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? blobRef;
core.List<core.int> get blobRefAsBytes => convert.base64.decode(blobRef!);
set blobRefAsBytes(core.List<core.int> bytes_) {
blobRef = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to
/// a v2 blob.
Blobstore2Info? blobstore2Info;
/// A binary data reference for a media download.
///
/// Serves as a technology-agnostic binary reference in some Google
/// infrastructure. This value is a serialized storage_cosmo.BinaryReference
/// proto. Storing it as bytes is a hack to get around the fact that the cosmo
/// proto (as well as others it includes) doesn't support JavaScript. This
/// prevents us from including the actual type of this field.
core.String? cosmoBinaryReference;
core.List<core.int> get cosmoBinaryReferenceAsBytes =>
convert.base64.decode(cosmoBinaryReference!);
set cosmoBinaryReferenceAsBytes(core.List<core.int> bytes_) {
cosmoBinaryReference = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// crc32.c hash for the payload.
core.int? crc32cHash;
/// Media data, set if reference_type is INLINE
core.String? inline;
core.List<core.int> get inlineAsBytes => convert.base64.decode(inline!);
set inlineAsBytes(core.List<core.int> bytes_) {
inline = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Size of the data, in bytes
core.String? length;
/// MD5 hash for the payload.
core.String? md5Hash;
core.List<core.int> get md5HashAsBytes => convert.base64.decode(md5Hash!);
set md5HashAsBytes(core.List<core.int> bytes_) {
md5Hash = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
ObjectId? objectId;
/// Path to the data, set if reference_type is PATH
core.String? path;
/// Describes what the field reference contains.
/// Possible string values are:
/// - "PATH" : Reference contains a GFS path or a local path.
/// - "BLOB_REF" : Reference points to a blobstore object. This could be
/// either a v1 blob_ref or a v2 blobstore2_info. Clients should check
/// blobstore2_info first, since v1 is being deprecated.
/// - "INLINE" : Data is included into this proto buffer
/// - "BIGSTORE_REF" : Reference points to a bigstore object
/// - "COSMO_BINARY_REFERENCE" : Indicates the data is stored in
/// cosmo_binary_reference.
core.String? referenceType;
/// SHA-1 hash for the payload.
core.String? sha1Hash;
core.List<core.int> get sha1HashAsBytes => convert.base64.decode(sha1Hash!);
set sha1HashAsBytes(core.List<core.int> bytes_) {
sha1Hash = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
CompositeMedia({
this.blobRef,
this.blobstore2Info,
this.cosmoBinaryReference,
this.crc32cHash,
this.inline,
this.length,
this.md5Hash,
this.objectId,
this.path,
this.referenceType,
this.sha1Hash,
});
CompositeMedia.fromJson(core.Map json_)
: this(
blobRef: json_['blobRef'] as core.String?,
blobstore2Info:
json_.containsKey('blobstore2Info')
? Blobstore2Info.fromJson(
json_['blobstore2Info']
as core.Map<core.String, core.dynamic>,
)
: null,
cosmoBinaryReference: json_['cosmoBinaryReference'] as core.String?,
crc32cHash: json_['crc32cHash'] as core.int?,
inline: json_['inline'] as core.String?,
length: json_['length'] as core.String?,
md5Hash: json_['md5Hash'] as core.String?,
objectId:
json_.containsKey('objectId')
? ObjectId.fromJson(
json_['objectId'] as core.Map<core.String, core.dynamic>,
)
: null,
path: json_['path'] as core.String?,
referenceType: json_['referenceType'] as core.String?,
sha1Hash: json_['sha1Hash'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (blobRef != null) 'blobRef': blobRef!,
if (blobstore2Info != null) 'blobstore2Info': blobstore2Info!,
if (cosmoBinaryReference != null)
'cosmoBinaryReference': cosmoBinaryReference!,
if (crc32cHash != null) 'crc32cHash': crc32cHash!,
if (inline != null) 'inline': inline!,
if (length != null) 'length': length!,
if (md5Hash != null) 'md5Hash': md5Hash!,
if (objectId != null) 'objectId': objectId!,
if (path != null) 'path': path!,
if (referenceType != null) 'referenceType': referenceType!,
if (sha1Hash != null) 'sha1Hash': sha1Hash!,
};
}
/// Detailed Content-Type information from Scotty.
///
/// The Content-Type of the media will typically be filled in by the header or
/// Scotty's best_guess, but this extended information provides the backend with
/// more information so that it can make a better decision if needed. This is
/// only used on media upload requests from Scotty.
typedef ContentTypeInfo = $ContentTypeInfo;
class DateTime {
/// An ISO 8601 extended format date/time.
///
/// Offset may or may not be required (refer to the parent field's
/// documentation). Time may be specified up to nanosecond precision. Offsets
/// may be specified with seconds precision (even though offset seconds is not
/// part of ISO 8601). For example: `1985-04-12T23:20:50.52Z` would be 20
/// minutes and 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the date/time is intended for a physical
/// location in New York, this would be the equivalent of Eastern Daylight
/// Time (EDT). Remember that offset varies in regions that observe Daylight
/// Saving Time (or Summer Time), depending on the time of the year.
/// `1985-04-12T19:20:50.52` would be 20 minutes and 50.52 seconds after the
/// 19th hour of April 12th, 1985 with no offset information. Providing an
/// offset makes this an absolute instant in time around the world. The
/// date/time will be adjusted based on the user's time zone. For example, a
/// time of `2018-06-19T18:30:00-04:00` will be 18:30:00 for a user in New
/// York and 15:30:00 for a user in Los Angeles. Omitting the offset makes
/// this a local date/time, representing several instants in time around the
/// world. The date/time will always be in the user's current time zone. For
/// example, a time of `2018-06-19T18:30:00` will be 18:30:00 for a user in
/// New York and also 18:30:00 for a user in Los Angeles. This is useful when
/// the same local date/time should apply to many physical locations across
/// several time zones.
core.String? date;
DateTime({this.date});
DateTime.fromJson(core.Map json_) : this(date: json_['date'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (date != null) 'date': date!,
};
}
class DetailsItemInfo {
/// The item to be displayed in the details list.
TemplateItem? item;
DetailsItemInfo({this.item});
DetailsItemInfo.fromJson(core.Map json_)
: this(
item:
json_.containsKey('item')
? TemplateItem.fromJson(
json_['item'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (item != null) 'item': item!,
};
}
class DetailsTemplateOverride {
/// Information for the "nth" item displayed in the details list.
core.List<DetailsItemInfo>? detailsItemInfos;
DetailsTemplateOverride({this.detailsItemInfos});
DetailsTemplateOverride.fromJson(core.Map json_)
: this(
detailsItemInfos:
(json_['detailsItemInfos'] as core.List?)
?.map(
(value) => DetailsItemInfo.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (detailsItemInfos != null) 'detailsItemInfos': detailsItemInfos!,
};
}
/// Device context associated with the object.
class DeviceContext {
/// If set, redemption information will only be returned to the given device
/// upon activation of the object.
///
/// This should not be used as a stable identifier to trace a user's device.
/// It can change across different passes for the same device or even across
/// different activations for the same device. When setting this, callers must
/// also set has_linked_device on the object being activated.
core.String? deviceToken;
DeviceContext({this.deviceToken});
DeviceContext.fromJson(core.Map json_)
: this(deviceToken: json_['deviceToken'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (deviceToken != null) 'deviceToken': deviceToken!,
};
}
/// Backend response for a Diff get checksums response.
///
/// For details on the Scotty Diff protocol, visit
/// http://go/scotty-diff-protocol.
class DiffChecksumsResponse {
/// Exactly one of these fields must be populated.
///
/// If checksums_location is filled, the server will return the corresponding
/// contents to the user. If object_location is filled, the server will
/// calculate the checksums based on the content there and return that to the
/// user. For details on the format of the checksums, see
/// http://go/scotty-diff-protocol.
CompositeMedia? checksumsLocation;
/// The chunk size of checksums.
///
/// Must be a multiple of 256KB.
core.String? chunkSizeBytes;
/// If set, calculate the checksums based on the contents and return them to
/// the caller.
CompositeMedia? objectLocation;
/// The total size of the server object.
core.String? objectSizeBytes;
/// The object version of the object the checksums are being returned for.
core.String? objectVersion;
DiffChecksumsResponse({
this.checksumsLocation,
this.chunkSizeBytes,
this.objectLocation,
this.objectSizeBytes,
this.objectVersion,
});
DiffChecksumsResponse.fromJson(core.Map json_)
: this(
checksumsLocation:
json_.containsKey('checksumsLocation')
? CompositeMedia.fromJson(
json_['checksumsLocation']
as core.Map<core.String, core.dynamic>,
)
: null,
chunkSizeBytes: json_['chunkSizeBytes'] as core.String?,
objectLocation:
json_.containsKey('objectLocation')
? CompositeMedia.fromJson(
json_['objectLocation']
as core.Map<core.String, core.dynamic>,
)
: null,
objectSizeBytes: json_['objectSizeBytes'] as core.String?,
objectVersion: json_['objectVersion'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (checksumsLocation != null) 'checksumsLocation': checksumsLocation!,
if (chunkSizeBytes != null) 'chunkSizeBytes': chunkSizeBytes!,
if (objectLocation != null) 'objectLocation': objectLocation!,
if (objectSizeBytes != null) 'objectSizeBytes': objectSizeBytes!,
if (objectVersion != null) 'objectVersion': objectVersion!,
};
}
/// Backend response for a Diff download response.
///
/// For details on the Scotty Diff protocol, visit
/// http://go/scotty-diff-protocol.
class DiffDownloadResponse {
/// The original object location.
CompositeMedia? objectLocation;
DiffDownloadResponse({this.objectLocation});
DiffDownloadResponse.fromJson(core.Map json_)
: this(
objectLocation:
json_.containsKey('objectLocation')
? CompositeMedia.fromJson(
json_['objectLocation']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (objectLocation != null) 'objectLocation': objectLocation!,
};
}
/// A Diff upload request.
///
/// For details on the Scotty Diff protocol, visit
/// http://go/scotty-diff-protocol.
class DiffUploadRequest {
/// The location of the checksums for the new object.
///
/// Agents must clone the object located here, as the upload server will
/// delete the contents once a response is received. For details on the format
/// of the checksums, see http://go/scotty-diff-protocol.
CompositeMedia? checksumsInfo;
/// The location of the new object.
///
/// Agents must clone the object located here, as the upload server will
/// delete the contents once a response is received.
CompositeMedia? objectInfo;
/// The object version of the object that is the base version the incoming
/// diff script will be applied to.
///
/// This field will always be filled in.
core.String? objectVersion;
DiffUploadRequest({this.checksumsInfo, this.objectInfo, this.objectVersion});
DiffUploadRequest.fromJson(core.Map json_)
: this(
checksumsInfo:
json_.containsKey('checksumsInfo')
? CompositeMedia.fromJson(
json_['checksumsInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
objectInfo:
json_.containsKey('objectInfo')
? CompositeMedia.fromJson(
json_['objectInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
objectVersion: json_['objectVersion'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (checksumsInfo != null) 'checksumsInfo': checksumsInfo!,
if (objectInfo != null) 'objectInfo': objectInfo!,
if (objectVersion != null) 'objectVersion': objectVersion!,
};
}
/// Backend response for a Diff upload request.
///
/// For details on the Scotty Diff protocol, visit
/// http://go/scotty-diff-protocol.
class DiffUploadResponse {
/// The object version of the object at the server.
///
/// Must be included in the end notification response. The version in the end
/// notification response must correspond to the new version of the object
/// that is now stored at the server, after the upload.
core.String? objectVersion;
/// The location of the original file for a diff upload request.
///
/// Must be filled in if responding to an upload start notification.
CompositeMedia? originalObject;
DiffUploadResponse({this.objectVersion, this.originalObject});
DiffUploadResponse.fromJson(core.Map json_)
: this(
objectVersion: json_['objectVersion'] as core.String?,
originalObject:
json_.containsKey('originalObject')
? CompositeMedia.fromJson(
json_['originalObject']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (objectVersion != null) 'objectVersion': objectVersion!,
if (originalObject != null) 'originalObject': originalObject!,
};
}
/// Backend response for a Diff get version response.
///
/// For details on the Scotty Diff protocol, visit
/// http://go/scotty-diff-protocol.
typedef DiffVersionResponse = $DiffVersionResponse;
/// Information about how a class may be discovered and instantiated from within
/// the Google Wallet app.
///
/// This is done by searching for a loyalty or gift card program and scanning or
/// manually entering.
class DiscoverableProgram {
/// Information about the ability to signin and add a valuable for this
/// program through a merchant site.
///
/// Used when MERCHANT_HOSTED_SIGNIN is enabled.
DiscoverableProgramMerchantSigninInfo? merchantSigninInfo;
/// Information about the ability to signup and add a valuable for this
/// program through a merchant site.
///
/// Used when MERCHANT_HOSTED_SIGNUP is enabled.
DiscoverableProgramMerchantSignupInfo? merchantSignupInfo;
/// Visibility state of the discoverable program.
/// Possible string values are:
/// - "STATE_UNSPECIFIED"
/// - "TRUSTED_TESTERS" : Visible only to testers that have access to issuer
/// account.
/// - "trustedTesters" : Legacy alias for `TRUSTED_TESTERS`. Deprecated.
/// - "LIVE" : Visible to all.
/// - "live" : Legacy alias for `LIVE`. Deprecated.
/// - "DISABLED" : Not visible.
/// - "disabled" : Legacy alias for `DISABLED`. Deprecated.
core.String? state;
DiscoverableProgram({
this.merchantSigninInfo,
this.merchantSignupInfo,
this.state,
});
DiscoverableProgram.fromJson(core.Map json_)
: this(
merchantSigninInfo:
json_.containsKey('merchantSigninInfo')
? DiscoverableProgramMerchantSigninInfo.fromJson(
json_['merchantSigninInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
merchantSignupInfo:
json_.containsKey('merchantSignupInfo')
? DiscoverableProgramMerchantSignupInfo.fromJson(
json_['merchantSignupInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
state: json_['state'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (merchantSigninInfo != null) 'merchantSigninInfo': merchantSigninInfo!,
if (merchantSignupInfo != null) 'merchantSignupInfo': merchantSignupInfo!,
if (state != null) 'state': state!,
};
}
/// Information about the merchant hosted signin flow for a program.
class DiscoverableProgramMerchantSigninInfo {
/// The URL to direct the user to for the merchant's signin site.
Uri? signinWebsite;
DiscoverableProgramMerchantSigninInfo({this.signinWebsite});
DiscoverableProgramMerchantSigninInfo.fromJson(core.Map json_)
: this(
signinWebsite:
json_.containsKey('signinWebsite')
? Uri.fromJson(
json_['signinWebsite'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (signinWebsite != null) 'signinWebsite': signinWebsite!,
};
}
/// Information about the merchant hosted signup flow for a program.
class DiscoverableProgramMerchantSignupInfo {
/// User data that is sent in a POST request to the signup website URL.
///
/// This information is encoded and then shared so that the merchant's website
/// can prefill fields used to enroll the user for the discoverable program.
core.List<core.String>? signupSharedDatas;
/// The URL to direct the user to for the merchant's signup site.
Uri? signupWebsite;
DiscoverableProgramMerchantSignupInfo({
this.signupSharedDatas,
this.signupWebsite,
});
DiscoverableProgramMerchantSignupInfo.fromJson(core.Map json_)
: this(
signupSharedDatas:
(json_['signupSharedDatas'] as core.List?)
?.map((value) => value as core.String)
.toList(),
signupWebsite:
json_.containsKey('signupWebsite')
? Uri.fromJson(
json_['signupWebsite'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (signupSharedDatas != null) 'signupSharedDatas': signupSharedDatas!,
if (signupWebsite != null) 'signupWebsite': signupWebsite!,
};
}
/// Parameters specific to media downloads.
typedef DownloadParameters = $DownloadParameters;
class EventDateTime {
/// A custom label to use for the doors open value (`doorsOpen`) on the card
/// detail view.
///
/// This should only be used if the default "Doors Open" label or one of the
/// `doorsOpenLabel` options is not sufficient. Both `doorsOpenLabel` and
/// `customDoorsOpenLabel` may not be set. If neither is set, the label will
/// default to "Doors Open", localized. If the doors open field is unset, this
/// label will not be used.
LocalizedString? customDoorsOpenLabel;
/// The date/time when the doors open at the venue.
///
/// This is an ISO 8601 extended format date/time, with or without an offset.
/// Time may be specified up to nanosecond precision. Offsets may be specified
/// with seconds precision (even though offset seconds is not part of ISO
/// 8601). For example: `1985-04-12T23:20:50.52Z` would be 20 minutes and
/// 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. The portion of the date/time without the offset is considered
/// the "local date/time". This should be the local date/time at the venue.
/// For example, if the event occurs at the 20th hour of June 5th, 2018 at the
/// venue, the local date/time portion should be `2018-06-05T20:00:00`. If the
/// local date/time at the venue is 4 hours before UTC, an offset of `-04:00`
/// may be appended. Without offset information, some rich features may not be
/// available.
core.String? doorsOpen;
/// The label to use for the doors open value (`doorsOpen`) on the card detail
/// view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both
/// `doorsOpenLabel` and `customDoorsOpenLabel` may not be set. If neither is
/// set, the label will default to "Doors Open", localized. If the doors open
/// field is unset, this label will not be used.
/// Possible string values are:
/// - "DOORS_OPEN_LABEL_UNSPECIFIED"
/// - "DOORS_OPEN"
/// - "doorsOpen" : Legacy alias for `DOORS_OPEN`. Deprecated.
/// - "GATES_OPEN"
/// - "gatesOpen" : Legacy alias for `GATES_OPEN`. Deprecated.
core.String? doorsOpenLabel;
/// The date/time when the event ends.
///
/// If the event spans multiple days, it should be the end date/time on the
/// last day. This is an ISO 8601 extended format date/time, with or without
/// an offset. Time may be specified up to nanosecond precision. Offsets may
/// be specified with seconds precision (even though offset seconds is not
/// part of ISO 8601). For example: `1985-04-12T23:20:50.52Z` would be 20
/// minutes and 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. The portion of the date/time without the offset is considered
/// the "local date/time". This should be the local date/time at the venue.
/// For example, if the event occurs at the 20th hour of June 5th, 2018 at the
/// venue, the local date/time portion should be `2018-06-05T20:00:00`. If the
/// local date/time at the venue is 4 hours before UTC, an offset of `-04:00`
/// may be appended. Without offset information, some rich features may not be
/// available.
core.String? end;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventDateTime"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The date/time when the event starts.
///
/// If the event spans multiple days, it should be the start date/time on the
/// first day. This is an ISO 8601 extended format date/time, with or without
/// an offset. Time may be specified up to nanosecond precision. Offsets may
/// be specified with seconds precision (even though offset seconds is not
/// part of ISO 8601). For example: `1985-04-12T23:20:50.52Z` would be 20
/// minutes and 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. The portion of the date/time without the offset is considered
/// the "local date/time". This should be the local date/time at the venue.
/// For example, if the event occurs at the 20th hour of June 5th, 2018 at the
/// venue, the local date/time portion should be `2018-06-05T20:00:00`. If the
/// local date/time at the venue is 4 hours before UTC, an offset of `-04:00`
/// may be appended. Without offset information, some rich features may not be
/// available.
core.String? start;
EventDateTime({
this.customDoorsOpenLabel,
this.doorsOpen,
this.doorsOpenLabel,
this.end,
this.kind,
this.start,
});
EventDateTime.fromJson(core.Map json_)
: this(
customDoorsOpenLabel:
json_.containsKey('customDoorsOpenLabel')
? LocalizedString.fromJson(
json_['customDoorsOpenLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
doorsOpen: json_['doorsOpen'] as core.String?,
doorsOpenLabel: json_['doorsOpenLabel'] as core.String?,
end: json_['end'] as core.String?,
kind: json_['kind'] as core.String?,
start: json_['start'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (customDoorsOpenLabel != null)
'customDoorsOpenLabel': customDoorsOpenLabel!,
if (doorsOpen != null) 'doorsOpen': doorsOpen!,
if (doorsOpenLabel != null) 'doorsOpenLabel': doorsOpenLabel!,
if (end != null) 'end': end!,
if (kind != null) 'kind': kind!,
if (start != null) 'start': start!,
};
}
class EventReservationInfo {
/// The confirmation code of the event reservation.
///
/// This may also take the form of an "order number", "confirmation number",
/// "reservation number", or other equivalent.
core.String? confirmationCode;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventReservationInfo"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
EventReservationInfo({this.confirmationCode, this.kind});
EventReservationInfo.fromJson(core.Map json_)
: this(
confirmationCode: json_['confirmationCode'] as core.String?,
kind: json_['kind'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (confirmationCode != null) 'confirmationCode': confirmationCode!,
if (kind != null) 'kind': kind!,
};
}
class EventSeat {
/// The gate the ticket holder should enter to get to their seat, such as "A"
/// or "West".
///
/// This field is localizable so you may translate words or use different
/// alphabets for the characters in an identifier.
LocalizedString? gate;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventSeat"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The row of the seat, such as "1", E", "BB", or "A5".
///
/// This field is localizable so you may translate words or use different
/// alphabets for the characters in an identifier.
LocalizedString? row;
/// The seat number, such as "1", "2", "3", or any other seat identifier.
///
/// This field is localizable so you may translate words or use different
/// alphabets for the characters in an identifier.
LocalizedString? seat;
/// The section of the seat, such as "121".
///
/// This field is localizable so you may translate words or use different
/// alphabets for the characters in an identifier.
LocalizedString? section;
EventSeat({this.gate, this.kind, this.row, this.seat, this.section});
EventSeat.fromJson(core.Map json_)
: this(
gate:
json_.containsKey('gate')
? LocalizedString.fromJson(
json_['gate'] as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
row:
json_.containsKey('row')
? LocalizedString.fromJson(
json_['row'] as core.Map<core.String, core.dynamic>,
)
: null,
seat:
json_.containsKey('seat')
? LocalizedString.fromJson(
json_['seat'] as core.Map<core.String, core.dynamic>,
)
: null,
section:
json_.containsKey('section')
? LocalizedString.fromJson(
json_['section'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (gate != null) 'gate': gate!,
if (kind != null) 'kind': kind!,
if (row != null) 'row': row!,
if (seat != null) 'seat': seat!,
if (section != null) 'section': section!,
};
}
class EventTicketClass {
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// The label to use for the confirmation code value
/// (`eventTicketObject.reservationInfo.confirmationCode`) on the card detail
/// view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both
/// `confirmationCodeLabel` and `customConfirmationCodeLabel` may not be set.
/// If neither is set, the label will default to "Confirmation Code",
/// localized. If the confirmation code field is unset, this label will not be
/// used.
/// Possible string values are:
/// - "CONFIRMATION_CODE_LABEL_UNSPECIFIED"
/// - "CONFIRMATION_CODE"
/// - "confirmationCode" : Legacy alias for `CONFIRMATION_CODE`. Deprecated.
/// - "CONFIRMATION_NUMBER"
/// - "confirmationNumber" : Legacy alias for `CONFIRMATION_NUMBER`.
/// Deprecated.
/// - "ORDER_NUMBER"
/// - "orderNumber" : Legacy alias for `ORDER_NUMBER`. Deprecated.
/// - "RESERVATION_NUMBER"
/// - "reservationNumber" : Legacy alias for `RESERVATION_NUMBER`. Deprecated.
core.String? confirmationCodeLabel;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// A custom label to use for the confirmation code value
/// (`eventTicketObject.reservationInfo.confirmationCode`) on the card detail
/// view.
///
/// This should only be used if the default "Confirmation Code" label or one
/// of the `confirmationCodeLabel` options is not sufficient. Both
/// `confirmationCodeLabel` and `customConfirmationCodeLabel` may not be set.
/// If neither is set, the label will default to "Confirmation Code",
/// localized. If the confirmation code field is unset, this label will not be
/// used.
LocalizedString? customConfirmationCodeLabel;
/// A custom label to use for the gate value
/// (`eventTicketObject.seatInfo.gate`) on the card detail view.
///
/// This should only be used if the default "Gate" label or one of the
/// `gateLabel` options is not sufficient. Both `gateLabel` and
/// `customGateLabel` may not be set. If neither is set, the label will
/// default to "Gate", localized. If the gate field is unset, this label will
/// not be used.
LocalizedString? customGateLabel;
/// A custom label to use for the row value (`eventTicketObject.seatInfo.row`)
/// on the card detail view.
///
/// This should only be used if the default "Row" label or one of the
/// `rowLabel` options is not sufficient. Both `rowLabel` and `customRowLabel`
/// may not be set. If neither is set, the label will default to "Row",
/// localized. If the row field is unset, this label will not be used.
LocalizedString? customRowLabel;
/// A custom label to use for the seat value
/// (`eventTicketObject.seatInfo.seat`) on the card detail view.
///
/// This should only be used if the default "Seat" label or one of the
/// `seatLabel` options is not sufficient. Both `seatLabel` and
/// `customSeatLabel` may not be set. If neither is set, the label will
/// default to "Seat", localized. If the seat field is unset, this label will
/// not be used.
LocalizedString? customSeatLabel;
/// A custom label to use for the section value
/// (`eventTicketObject.seatInfo.section`) on the card detail view.
///
/// This should only be used if the default "Section" label or one of the
/// `sectionLabel` options is not sufficient. Both `sectionLabel` and
/// `customSectionLabel` may not be set. If neither is set, the label will
/// default to "Section", localized. If the section field is unset, this label
/// will not be used.
LocalizedString? customSectionLabel;
/// The date & time information of the event.
EventDateTime? dateTime;
/// Identifies whether this class supports Smart Tap.
///
/// The `redemptionIssuers` and object level `smartTapRedemptionLevel` fields
/// must also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// The ID of the event.
///
/// This ID should be unique for every event in an account. It is used to
/// group tickets together if the user has saved multiple tickets for the same
/// event. It can be at most 64 characters. If provided, the grouping will be
/// stable. Be wary of unintentional collision to avoid grouping tickets that
/// should not be grouped. If you use only one class per event, you can simply
/// set this to the `classId` (with or without the issuer ID portion). If not
/// provided, the platform will attempt to use other data to group tickets
/// (potentially unstable).
core.String? eventId;
/// The name of the event, such as "LA Dodgers at SF Giants".
///
/// Required.
LocalizedString? eventName;
/// The fine print, terms, or conditions of the ticket.
LocalizedString? finePrint;
/// The label to use for the gate value (`eventTicketObject.seatInfo.gate`) on
/// the card detail view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both `gateLabel`
/// and `customGateLabel` may not be set. If neither is set, the label will
/// default to "Gate", localized. If the gate field is unset, this label will
/// not be used.
/// Possible string values are:
/// - "GATE_LABEL_UNSPECIFIED"
/// - "GATE"
/// - "gate" : Legacy alias for `GATE`. Deprecated.
/// - "DOOR"
/// - "door" : Legacy alias for `DOOR`. Deprecated.
/// - "ENTRANCE"
/// - "entrance" : Legacy alias for `ENTRANCE`. Deprecated.
core.String? gateLabel;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventTicketClass"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// The logo image of the ticket.
///
/// This image is displayed in the card detail view of the app.
Image? logo;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If not specified, no notification will be triggered.
/// This setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or `underReview` using the insert, patch,
/// or update API calls. Once the review state is changed from `draft` it may
/// not be changed back to `draft`. You should keep this field to `draft` when
/// the class is under development. A `draft` class cannot be used to create
/// any object. You should set this field to `underReview` when you believe
/// the class is ready for use. The platform will automatically set this field
/// to `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// The label to use for the row value (`eventTicketObject.seatInfo.row`) on
/// the card detail view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both `rowLabel`
/// and `customRowLabel` may not be set. If neither is set, the label will
/// default to "Row", localized. If the row field is unset, this label will
/// not be used.
/// Possible string values are:
/// - "ROW_LABEL_UNSPECIFIED"
/// - "ROW"
/// - "row" : Legacy alias for `ROW`. Deprecated.
core.String? rowLabel;
/// The label to use for the seat value (`eventTicketObject.seatInfo.seat`) on
/// the card detail view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both `seatLabel`
/// and `customSeatLabel` may not be set. If neither is set, the label will
/// default to "Seat", localized. If the seat field is unset, this label will
/// not be used.
/// Possible string values are:
/// - "SEAT_LABEL_UNSPECIFIED"
/// - "SEAT"
/// - "seat" : Legacy alias for `SEAT`. Deprecated.
core.String? seatLabel;
/// The label to use for the section value
/// (`eventTicketObject.seatInfo.section`) on the card detail view.
///
/// Each available option maps to a set of localized strings, so that
/// translations are shown to the user based on their locale. Both
/// `sectionLabel` and `customSectionLabel` may not be set. If neither is set,
/// the label will default to "Section", localized. If the section field is
/// unset, this label will not be used.
/// Possible string values are:
/// - "SECTION_LABEL_UNSPECIFIED"
/// - "SECTION"
/// - "section" : Legacy alias for `SECTION`. Deprecated.
/// - "THEATER"
/// - "theater" : Legacy alias for `THEATER`. Deprecated.
core.String? sectionLabel;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Event venue details.
EventVenue? venue;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the event ticket.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// The wide logo of the ticket.
///
/// When provided, this will be used in place of the logo in the top left of
/// the card view.
Image? wideLogo;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
EventTicketClass({
this.allowMultipleUsersPerObject,
this.appLinkData,
this.callbackOptions,
this.classTemplateInfo,
this.confirmationCodeLabel,
this.countryCode,
this.customConfirmationCodeLabel,
this.customGateLabel,
this.customRowLabel,
this.customSeatLabel,
this.customSectionLabel,
this.dateTime,
this.enableSmartTap,
this.eventId,
this.eventName,
this.finePrint,
this.gateLabel,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.kind,
this.linksModuleData,
this.localizedIssuerName,
this.locations,
this.logo,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.rowLabel,
this.seatLabel,
this.sectionLabel,
this.securityAnimation,
this.textModulesData,
this.valueAddedModuleData,
this.venue,
this.version,
this.viewUnlockRequirement,
this.wideLogo,
this.wordMark,
});
EventTicketClass.fromJson(core.Map json_)
: this(
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
confirmationCodeLabel: json_['confirmationCodeLabel'] as core.String?,
countryCode: json_['countryCode'] as core.String?,
customConfirmationCodeLabel:
json_.containsKey('customConfirmationCodeLabel')
? LocalizedString.fromJson(
json_['customConfirmationCodeLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customGateLabel:
json_.containsKey('customGateLabel')
? LocalizedString.fromJson(
json_['customGateLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customRowLabel:
json_.containsKey('customRowLabel')
? LocalizedString.fromJson(
json_['customRowLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customSeatLabel:
json_.containsKey('customSeatLabel')
? LocalizedString.fromJson(
json_['customSeatLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customSectionLabel:
json_.containsKey('customSectionLabel')
? LocalizedString.fromJson(
json_['customSectionLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
dateTime:
json_.containsKey('dateTime')
? EventDateTime.fromJson(
json_['dateTime'] as core.Map<core.String, core.dynamic>,
)
: null,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
eventId: json_['eventId'] as core.String?,
eventName:
json_.containsKey('eventName')
? LocalizedString.fromJson(
json_['eventName'] as core.Map<core.String, core.dynamic>,
)
: null,
finePrint:
json_.containsKey('finePrint')
? LocalizedString.fromJson(
json_['finePrint'] as core.Map<core.String, core.dynamic>,
)
: null,
gateLabel: json_['gateLabel'] as core.String?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
kind: json_['kind'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
logo:
json_.containsKey('logo')
? Image.fromJson(
json_['logo'] as core.Map<core.String, core.dynamic>,
)
: null,
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
rowLabel: json_['rowLabel'] as core.String?,
seatLabel: json_['seatLabel'] as core.String?,
sectionLabel: json_['sectionLabel'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
venue:
json_.containsKey('venue')
? EventVenue.fromJson(
json_['venue'] as core.Map<core.String, core.dynamic>,
)
: null,
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
wideLogo:
json_.containsKey('wideLogo')
? Image.fromJson(
json_['wideLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (confirmationCodeLabel != null)
'confirmationCodeLabel': confirmationCodeLabel!,
if (countryCode != null) 'countryCode': countryCode!,
if (customConfirmationCodeLabel != null)
'customConfirmationCodeLabel': customConfirmationCodeLabel!,
if (customGateLabel != null) 'customGateLabel': customGateLabel!,
if (customRowLabel != null) 'customRowLabel': customRowLabel!,
if (customSeatLabel != null) 'customSeatLabel': customSeatLabel!,
if (customSectionLabel != null) 'customSectionLabel': customSectionLabel!,
if (dateTime != null) 'dateTime': dateTime!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (eventId != null) 'eventId': eventId!,
if (eventName != null) 'eventName': eventName!,
if (finePrint != null) 'finePrint': finePrint!,
if (gateLabel != null) 'gateLabel': gateLabel!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (kind != null) 'kind': kind!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (locations != null) 'locations': locations!,
if (logo != null) 'logo': logo!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (rowLabel != null) 'rowLabel': rowLabel!,
if (seatLabel != null) 'seatLabel': seatLabel!,
if (sectionLabel != null) 'sectionLabel': sectionLabel!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (venue != null) 'venue': venue!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (wideLogo != null) 'wideLogo': wideLogo!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class EventTicketClassAddMessageResponse {
/// The updated EventTicketClass resource.
EventTicketClass? resource;
EventTicketClassAddMessageResponse({this.resource});
EventTicketClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? EventTicketClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class EventTicketClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<EventTicketClass>? resources;
EventTicketClassListResponse({this.pagination, this.resources});
EventTicketClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => EventTicketClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class EventTicketObject {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
Barcode? barcode;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
EventTicketClass? classReference;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for offers.
core.bool? disableExpirationNotification;
/// The face value of the ticket, matching what would be printed on a physical
/// version of the ticket.
Money? faceValue;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventTicketObject"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this event ticket object.
///
/// If a user had saved this event ticket, then these linked_object_ids would
/// be automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// A list of offer objects linked to this event ticket.
///
/// The offer objects must already exist. Offer object IDs should follow the
/// format issuer ID. identifier where the former is issued by Google and
/// latter is chosen by you.
core.List<core.String>? linkedOfferIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// Reservation details for this ticket.
///
/// This is expected to be shared amongst all tickets that were purchased in
/// the same order.
EventReservationInfo? reservationInfo;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// Seating details for this ticket.
EventSeat? seatInfo;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// Name of the ticket holder, if the ticket is assigned to a person.
///
/// E.g. "John Doe" or "Jane Doe".
core.String? ticketHolderName;
/// The number of the ticket.
///
/// This can be a unique identifier across all tickets in an issuer's system,
/// all tickets for the event (e.g. XYZ1234512345), or all tickets in the
/// order (1, 2, 3, etc.).
core.String? ticketNumber;
/// The type of the ticket, such as "Adult" or "Child", or "VIP" or
/// "Standard".
LocalizedString? ticketType;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
EventTicketObject({
this.appLinkData,
this.barcode,
this.classId,
this.classReference,
this.disableExpirationNotification,
this.faceValue,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.hexBackgroundColor,
this.id,
this.imageModulesData,
this.infoModuleData,
this.kind,
this.linkedObjectIds,
this.linkedOfferIds,
this.linksModuleData,
this.locations,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.reservationInfo,
this.rotatingBarcode,
this.saveRestrictions,
this.seatInfo,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.ticketHolderName,
this.ticketNumber,
this.ticketType,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
EventTicketObject.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? EventTicketClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
faceValue:
json_.containsKey('faceValue')
? Money.fromJson(
json_['faceValue'] as core.Map<core.String, core.dynamic>,
)
: null,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linkedOfferIds:
(json_['linkedOfferIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
reservationInfo:
json_.containsKey('reservationInfo')
? EventReservationInfo.fromJson(
json_['reservationInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
seatInfo:
json_.containsKey('seatInfo')
? EventSeat.fromJson(
json_['seatInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
ticketHolderName: json_['ticketHolderName'] as core.String?,
ticketNumber: json_['ticketNumber'] as core.String?,
ticketType:
json_.containsKey('ticketType')
? LocalizedString.fromJson(
json_['ticketType'] as core.Map<core.String, core.dynamic>,
)
: null,
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (faceValue != null) 'faceValue': faceValue!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (kind != null) 'kind': kind!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linkedOfferIds != null) 'linkedOfferIds': linkedOfferIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (reservationInfo != null) 'reservationInfo': reservationInfo!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (seatInfo != null) 'seatInfo': seatInfo!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (ticketHolderName != null) 'ticketHolderName': ticketHolderName!,
if (ticketNumber != null) 'ticketNumber': ticketNumber!,
if (ticketType != null) 'ticketType': ticketType!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class EventTicketObjectAddMessageResponse {
/// The updated EventTicketObject resource.
EventTicketObject? resource;
EventTicketObjectAddMessageResponse({this.resource});
EventTicketObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? EventTicketObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class EventTicketObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<EventTicketObject>? resources;
EventTicketObjectListResponse({this.pagination, this.resources});
EventTicketObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => EventTicketObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class EventVenue {
/// The address of the venue, such as "24 Willie Mays Plaza\nSan Francisco, CA
/// 94107".
///
/// Address lines are separated by line feed (`\n`) characters. This is
/// required.
LocalizedString? address;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#eventVenue"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The name of the venue, such as "AT&T Park".
///
/// This is required.
LocalizedString? name;
EventVenue({this.address, this.kind, this.name});
EventVenue.fromJson(core.Map json_)
: this(
address:
json_.containsKey('address')
? LocalizedString.fromJson(
json_['address'] as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
name:
json_.containsKey('name')
? LocalizedString.fromJson(
json_['name'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (address != null) 'address': address!,
if (kind != null) 'kind': kind!,
if (name != null) 'name': name!,
};
}
/// Indicates that the issuer would like Google Wallet to send expiry
/// notifications 2 days prior to the card expiration.
class ExpiryNotification {
/// Indicates if the object needs to have expiry notification enabled.
core.bool? enableNotification;
ExpiryNotification({this.enableNotification});
ExpiryNotification.fromJson(core.Map json_)
: this(enableNotification: json_['enableNotification'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() => {
if (enableNotification != null) 'enableNotification': enableNotification!,
};
}
/// Reference definition to use with field overrides.
class FieldReference {
/// Only valid if the `fieldPath` references a date field.
///
/// Chooses how the date field will be formatted and displayed in the UI.
/// Possible string values are:
/// - "DATE_FORMAT_UNSPECIFIED" : Default option when no format is specified,
/// when selected, no formatting will be applied.
/// - "DATE_TIME" : Renders `2018-12-14T13:00:00` as `Dec 14, 1:00 PM` in
/// `en_US`.
/// - "dateTime" : Legacy alias for `DATE_TIME`. Deprecated.
/// - "DATE_ONLY" : Renders `2018-12-14T13:00:00` as `Dec 14` in `en_US`.
/// - "dateOnly" : Legacy alias for `DATE_ONLY`. Deprecated.
/// - "TIME_ONLY" : Renders `2018-12-14T13:00:00` as `1:00 PM` in `en_US`.
/// - "timeOnly" : Legacy alias for `TIME_ONLY`. Deprecated.
/// - "DATE_TIME_YEAR" : Renders `2018-12-14T13:00:00` as `Dec 14, 2018, 1:00
/// PM` in `en_US`.
/// - "dateTimeYear" : Legacy alias for `DATE_TIME_YEAR`. Deprecated.
/// - "DATE_YEAR" : Renders `2018-12-14T13:00:00` as `Dec 14, 2018` in
/// `en_US`.
/// - "dateYear" : Legacy alias for `DATE_YEAR`. Deprecated.
/// - "YEAR_MONTH" : Renders `2018-12-14T13:00:00` as `2018-12`.
/// - "YEAR_MONTH_DAY" : Renders `2018-12-14T13:00:00` as `2018-12-14`.
core.String? dateFormat;
/// Path to the field being referenced, prefixed with "object" or "class" and
/// separated with dots.
///
/// For example, it may be the string "object.purchaseDetails.purchasePrice".
core.String? fieldPath;
FieldReference({this.dateFormat, this.fieldPath});
FieldReference.fromJson(core.Map json_)
: this(
dateFormat: json_['dateFormat'] as core.String?,
fieldPath: json_['fieldPath'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (dateFormat != null) 'dateFormat': dateFormat!,
if (fieldPath != null) 'fieldPath': fieldPath!,
};
}
/// Custom field selector to use with field overrides.
class FieldSelector {
/// If more than one reference is supplied, then the first one that references
/// a non-empty field will be displayed.
core.List<FieldReference>? fields;
FieldSelector({this.fields});
FieldSelector.fromJson(core.Map json_)
: this(
fields:
(json_['fields'] as core.List?)
?.map(
(value) => FieldReference.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (fields != null) 'fields': fields!,
};
}
class FirstRowOption {
/// A reference to the field to be displayed in the first row.
FieldSelector? fieldOption;
///
/// Possible string values are:
/// - "TRANSIT_OPTION_UNSPECIFIED"
/// - "ORIGIN_AND_DESTINATION_NAMES"
/// - "originAndDestinationNames" : Legacy alias for
/// `ORIGIN_AND_DESTINATION_NAMES`. Deprecated.
/// - "ORIGIN_AND_DESTINATION_CODES"
/// - "originAndDestinationCodes" : Legacy alias for
/// `ORIGIN_AND_DESTINATION_CODES`. Deprecated.
/// - "ORIGIN_NAME"
/// - "originName" : Legacy alias for `ORIGIN_NAME`. Deprecated.
core.String? transitOption;
FirstRowOption({this.fieldOption, this.transitOption});
FirstRowOption.fromJson(core.Map json_)
: this(
fieldOption:
json_.containsKey('fieldOption')
? FieldSelector.fromJson(
json_['fieldOption'] as core.Map<core.String, core.dynamic>,
)
: null,
transitOption: json_['transitOption'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (fieldOption != null) 'fieldOption': fieldOption!,
if (transitOption != null) 'transitOption': transitOption!,
};
}
class FlightCarrier {
/// A logo for the airline alliance, displayed below the QR code that the
/// passenger scans to board.
Image? airlineAllianceLogo;
/// A logo for the airline described by carrierIataCode and
/// localizedAirlineName.
///
/// This logo will be rendered at the top of the detailed card view.
Image? airlineLogo;
/// A localized name of the airline specified by carrierIataCode.
///
/// If unset, `issuer_name` or `localized_issuer_name` from `FlightClass` will
/// be used for display purposes. eg: "Swiss Air" for "LX"
LocalizedString? airlineName;
/// Two character IATA airline code of the marketing carrier (as opposed to
/// operating carrier).
///
/// Exactly one of this or `carrierIcaoCode` needs to be provided for
/// `carrier` and `operatingCarrier`. eg: "LX" for Swiss Air
core.String? carrierIataCode;
/// Three character ICAO airline code of the marketing carrier (as opposed to
/// operating carrier).
///
/// Exactly one of this or `carrierIataCode` needs to be provided for
/// `carrier` and `operatingCarrier`. eg: "EZY" for Easy Jet
core.String? carrierIcaoCode;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#flightCarrier"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The wide logo of the airline.
///
/// When provided, this will be used in place of the airline logo in the top
/// left of the card view.
Image? wideAirlineLogo;
FlightCarrier({
this.airlineAllianceLogo,
this.airlineLogo,
this.airlineName,
this.carrierIataCode,
this.carrierIcaoCode,
this.kind,
this.wideAirlineLogo,
});
FlightCarrier.fromJson(core.Map json_)
: this(
airlineAllianceLogo:
json_.containsKey('airlineAllianceLogo')
? Image.fromJson(
json_['airlineAllianceLogo']
as core.Map<core.String, core.dynamic>,
)
: null,
airlineLogo:
json_.containsKey('airlineLogo')
? Image.fromJson(
json_['airlineLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
airlineName:
json_.containsKey('airlineName')
? LocalizedString.fromJson(
json_['airlineName'] as core.Map<core.String, core.dynamic>,
)
: null,
carrierIataCode: json_['carrierIataCode'] as core.String?,
carrierIcaoCode: json_['carrierIcaoCode'] as core.String?,
kind: json_['kind'] as core.String?,
wideAirlineLogo:
json_.containsKey('wideAirlineLogo')
? Image.fromJson(
json_['wideAirlineLogo']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (airlineAllianceLogo != null)
'airlineAllianceLogo': airlineAllianceLogo!,
if (airlineLogo != null) 'airlineLogo': airlineLogo!,
if (airlineName != null) 'airlineName': airlineName!,
if (carrierIataCode != null) 'carrierIataCode': carrierIataCode!,
if (carrierIcaoCode != null) 'carrierIcaoCode': carrierIcaoCode!,
if (kind != null) 'kind': kind!,
if (wideAirlineLogo != null) 'wideAirlineLogo': wideAirlineLogo!,
};
}
class FlightClass {
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Policies for boarding and seating.
///
/// These will inform which labels will be shown to users.
BoardingAndSeatingPolicy? boardingAndSeatingPolicy;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// Destination airport.
///
/// Required.
AirportInfo? destination;
/// Identifies whether this class supports Smart Tap.
///
/// The `redemptionIssuers` and object level `smartTapRedemptionLevel` fields
/// must also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// Information about the flight carrier and number.
///
/// Required.
FlightHeader? flightHeader;
/// Status of this flight.
///
/// If unset, Google will compute status based on data from other sources,
/// such as FlightStats, etc. Note: Google-computed status will not be
/// returned in API responses.
/// Possible string values are:
/// - "FLIGHT_STATUS_UNSPECIFIED"
/// - "SCHEDULED" : Flight is on time, early, or delayed.
/// - "scheduled" : Legacy alias for `SCHEDULED`. Deprecated.
/// - "ACTIVE" : Flight is in progress (taxiing, taking off, landing,
/// airborne).
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "LANDED" : Flight landed at the original destination.
/// - "landed" : Legacy alias for `LANDED`. Deprecated.
/// - "CANCELLED" : Flight is cancelled.
/// - "cancelled" : Legacy alias for `CANCELLED`. Deprecated.
/// - "REDIRECTED" : Flight is airborne but heading to a different airport
/// than the original destination.
/// - "redirected" : Legacy alias for `REDIRECTED`. Deprecated.
/// - "DIVERTED" : Flight has already landed at a different airport than the
/// original destination.
/// - "diverted" : Legacy alias for `DIVERTED`. Deprecated.
core.String? flightStatus;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#flightClass"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// If this field is present, boarding passes served to a user's device will
/// always be in this language.
///
/// Represents the BCP 47 language tag. Example values are "en-US", "en-GB",
/// "de", or "de-AT".
core.String? languageOverride;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// The boarding time as it would be printed on the boarding pass.
///
/// This is an ISO 8601 extended format date/time without an offset. Time may
/// be specified up to millisecond precision. eg: `2027-03-05T06:30:00` This
/// should be the local date/time at the airport (not a UTC time). Google will
/// reject the request if UTC offset is provided. Time zones will be
/// calculated by Google based on departure airport.
core.String? localBoardingDateTime;
/// The estimated time the aircraft plans to reach the destination gate (not
/// the runway) or the actual time it reached the gate.
///
/// This field should be set if at least one of the below is true: - It
/// differs from the scheduled time. Google will use it to calculate the
/// delay. - The aircraft already arrived at the gate. Google will use it to
/// inform the user that the flight has arrived at the gate. This is an ISO
/// 8601 extended format date/time without an offset. Time may be specified up
/// to millisecond precision. eg: `2027-03-05T06:30:00` This should be the
/// local date/time at the airport (not a UTC time). Google will reject the
/// request if UTC offset is provided. Time zones will be calculated by Google
/// based on arrival airport.
core.String? localEstimatedOrActualArrivalDateTime;
/// The estimated time the aircraft plans to pull from the gate or the actual
/// time the aircraft already pulled from the gate.
///
/// Note: This is not the runway time. This field should be set if at least
/// one of the below is true: - It differs from the scheduled time. Google
/// will use it to calculate the delay. - The aircraft already pulled from the
/// gate. Google will use it to inform the user when the flight actually
/// departed. This is an ISO 8601 extended format date/time without an offset.
/// Time may be specified up to millisecond precision. eg:
/// `2027-03-05T06:30:00` This should be the local date/time at the airport
/// (not a UTC time). Google will reject the request if UTC offset is
/// provided. Time zones will be calculated by Google based on departure
/// airport.
core.String? localEstimatedOrActualDepartureDateTime;
/// The gate closing time as it would be printed on the boarding pass.
///
/// Do not set this field if you do not want to print it in the boarding pass.
/// This is an ISO 8601 extended format date/time without an offset. Time may
/// be specified up to millisecond precision. eg: `2027-03-05T06:30:00` This
/// should be the local date/time at the airport (not a UTC time). Google will
/// reject the request if UTC offset is provided. Time zones will be
/// calculated by Google based on departure airport.
core.String? localGateClosingDateTime;
/// The scheduled time the aircraft plans to reach the destination gate (not
/// the runway).
///
/// Note: This field should not change too close to the flight time. For
/// updates to departure times (delays, etc), please set
/// `localEstimatedOrActualArrivalDateTime`. This is an ISO 8601 extended
/// format date/time without an offset. Time may be specified up to
/// millisecond precision. eg: `2027-03-05T06:30:00` This should be the local
/// date/time at the airport (not a UTC time). Google will reject the request
/// if UTC offset is provided. Time zones will be calculated by Google based
/// on arrival airport.
core.String? localScheduledArrivalDateTime;
/// The scheduled date and time when the aircraft is expected to depart the
/// gate (not the runway) Note: This field should not change too close to the
/// departure time.
///
/// For updates to departure times (delays, etc), please set
/// `localEstimatedOrActualDepartureDateTime`. This is an ISO 8601 extended
/// format date/time without an offset. Time may be specified up to
/// millisecond precision. eg: `2027-03-05T06:30:00` This should be the local
/// date/time at the airport (not a UTC time). Google will reject the request
/// if UTC offset is provided. Time zones will be calculated by Google based
/// on departure airport.
///
/// Required.
core.String? localScheduledDepartureDateTime;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected by the validator. These locations
/// will trigger a notification when a user enters within a Google-set radius
/// of the point. This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If not specified, no notification will be triggered.
/// This setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Origin airport.
///
/// Required.
AirportInfo? origin;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or `underReview` using the insert, patch,
/// or update API calls. Once the review state is changed from `draft` it may
/// not be changed back to `draft`. You should keep this field to `draft` when
/// the class is under development. A `draft` class cannot be used to create
/// any object. You should set this field to `underReview` when you believe
/// the class is ready for use. The platform will automatically set this field
/// to `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the boarding pass.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
FlightClass({
this.allowMultipleUsersPerObject,
this.appLinkData,
this.boardingAndSeatingPolicy,
this.callbackOptions,
this.classTemplateInfo,
this.countryCode,
this.destination,
this.enableSmartTap,
this.flightHeader,
this.flightStatus,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.kind,
this.languageOverride,
this.linksModuleData,
this.localBoardingDateTime,
this.localEstimatedOrActualArrivalDateTime,
this.localEstimatedOrActualDepartureDateTime,
this.localGateClosingDateTime,
this.localScheduledArrivalDateTime,
this.localScheduledDepartureDateTime,
this.localizedIssuerName,
this.locations,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.origin,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.securityAnimation,
this.textModulesData,
this.valueAddedModuleData,
this.version,
this.viewUnlockRequirement,
this.wordMark,
});
FlightClass.fromJson(core.Map json_)
: this(
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
boardingAndSeatingPolicy:
json_.containsKey('boardingAndSeatingPolicy')
? BoardingAndSeatingPolicy.fromJson(
json_['boardingAndSeatingPolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
countryCode: json_['countryCode'] as core.String?,
destination:
json_.containsKey('destination')
? AirportInfo.fromJson(
json_['destination'] as core.Map<core.String, core.dynamic>,
)
: null,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
flightHeader:
json_.containsKey('flightHeader')
? FlightHeader.fromJson(
json_['flightHeader'] as core.Map<core.String, core.dynamic>,
)
: null,
flightStatus: json_['flightStatus'] as core.String?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
kind: json_['kind'] as core.String?,
languageOverride: json_['languageOverride'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localBoardingDateTime: json_['localBoardingDateTime'] as core.String?,
localEstimatedOrActualArrivalDateTime:
json_['localEstimatedOrActualArrivalDateTime'] as core.String?,
localEstimatedOrActualDepartureDateTime:
json_['localEstimatedOrActualDepartureDateTime'] as core.String?,
localGateClosingDateTime:
json_['localGateClosingDateTime'] as core.String?,
localScheduledArrivalDateTime:
json_['localScheduledArrivalDateTime'] as core.String?,
localScheduledDepartureDateTime:
json_['localScheduledDepartureDateTime'] as core.String?,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
origin:
json_.containsKey('origin')
? AirportInfo.fromJson(
json_['origin'] as core.Map<core.String, core.dynamic>,
)
: null,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (boardingAndSeatingPolicy != null)
'boardingAndSeatingPolicy': boardingAndSeatingPolicy!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (countryCode != null) 'countryCode': countryCode!,
if (destination != null) 'destination': destination!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (flightHeader != null) 'flightHeader': flightHeader!,
if (flightStatus != null) 'flightStatus': flightStatus!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (kind != null) 'kind': kind!,
if (languageOverride != null) 'languageOverride': languageOverride!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localBoardingDateTime != null)
'localBoardingDateTime': localBoardingDateTime!,
if (localEstimatedOrActualArrivalDateTime != null)
'localEstimatedOrActualArrivalDateTime':
localEstimatedOrActualArrivalDateTime!,
if (localEstimatedOrActualDepartureDateTime != null)
'localEstimatedOrActualDepartureDateTime':
localEstimatedOrActualDepartureDateTime!,
if (localGateClosingDateTime != null)
'localGateClosingDateTime': localGateClosingDateTime!,
if (localScheduledArrivalDateTime != null)
'localScheduledArrivalDateTime': localScheduledArrivalDateTime!,
if (localScheduledDepartureDateTime != null)
'localScheduledDepartureDateTime': localScheduledDepartureDateTime!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (origin != null) 'origin': origin!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class FlightClassAddMessageResponse {
/// The updated FlightClass resource.
FlightClass? resource;
FlightClassAddMessageResponse({this.resource});
FlightClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? FlightClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class FlightClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<FlightClass>? resources;
FlightClassListResponse({this.pagination, this.resources});
FlightClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => FlightClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class FlightHeader {
/// Information about airline carrier.
///
/// This is a required property of `flightHeader`.
FlightCarrier? carrier;
/// The flight number without IATA carrier code.
///
/// This field should contain only digits. This is a required property of
/// `flightHeader`. eg: "123"
core.String? flightNumber;
/// Override value to use for flight number.
///
/// The default value used for display purposes is carrier + flight_number. If
/// a different value needs to be shown to passengers, use this field to
/// override the default behavior. eg: "XX1234 / YY576"
core.String? flightNumberDisplayOverride;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#flightHeader"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Information about operating airline carrier.
FlightCarrier? operatingCarrier;
/// The flight number used by the operating carrier without IATA carrier code.
///
/// This field should contain only digits. eg: "234"
core.String? operatingFlightNumber;
FlightHeader({
this.carrier,
this.flightNumber,
this.flightNumberDisplayOverride,
this.kind,
this.operatingCarrier,
this.operatingFlightNumber,
});
FlightHeader.fromJson(core.Map json_)
: this(
carrier:
json_.containsKey('carrier')
? FlightCarrier.fromJson(
json_['carrier'] as core.Map<core.String, core.dynamic>,
)
: null,
flightNumber: json_['flightNumber'] as core.String?,
flightNumberDisplayOverride:
json_['flightNumberDisplayOverride'] as core.String?,
kind: json_['kind'] as core.String?,
operatingCarrier:
json_.containsKey('operatingCarrier')
? FlightCarrier.fromJson(
json_['operatingCarrier']
as core.Map<core.String, core.dynamic>,
)
: null,
operatingFlightNumber: json_['operatingFlightNumber'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (carrier != null) 'carrier': carrier!,
if (flightNumber != null) 'flightNumber': flightNumber!,
if (flightNumberDisplayOverride != null)
'flightNumberDisplayOverride': flightNumberDisplayOverride!,
if (kind != null) 'kind': kind!,
if (operatingCarrier != null) 'operatingCarrier': operatingCarrier!,
if (operatingFlightNumber != null)
'operatingFlightNumber': operatingFlightNumber!,
};
}
class FlightObject {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
Barcode? barcode;
/// Passenger specific information about boarding and seating.
BoardingAndSeatingInfo? boardingAndSeatingInfo;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
FlightClass? classReference;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for Flights.
core.bool? disableExpirationNotification;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#flightObject"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this flight object.
///
/// If a user had saved this boarding pass, then these linked_object_ids would
/// be automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// Passenger name as it would appear on the boarding pass.
///
/// eg: "Dave M Gahan" or "Gahan/Dave" or "GAHAN/DAVEM"
///
/// Required.
core.String? passengerName;
/// Information about flight reservation.
///
/// Required.
ReservationInfo? reservationInfo;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// An image for the security program that applies to the passenger.
Image? securityProgramLogo;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
FlightObject({
this.appLinkData,
this.barcode,
this.boardingAndSeatingInfo,
this.classId,
this.classReference,
this.disableExpirationNotification,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.hexBackgroundColor,
this.id,
this.imageModulesData,
this.infoModuleData,
this.kind,
this.linkedObjectIds,
this.linksModuleData,
this.locations,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.passengerName,
this.reservationInfo,
this.rotatingBarcode,
this.saveRestrictions,
this.securityProgramLogo,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
FlightObject.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
boardingAndSeatingInfo:
json_.containsKey('boardingAndSeatingInfo')
? BoardingAndSeatingInfo.fromJson(
json_['boardingAndSeatingInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? FlightClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
passengerName: json_['passengerName'] as core.String?,
reservationInfo:
json_.containsKey('reservationInfo')
? ReservationInfo.fromJson(
json_['reservationInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
securityProgramLogo:
json_.containsKey('securityProgramLogo')
? Image.fromJson(
json_['securityProgramLogo']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (boardingAndSeatingInfo != null)
'boardingAndSeatingInfo': boardingAndSeatingInfo!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (kind != null) 'kind': kind!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (passengerName != null) 'passengerName': passengerName!,
if (reservationInfo != null) 'reservationInfo': reservationInfo!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (securityProgramLogo != null)
'securityProgramLogo': securityProgramLogo!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class FlightObjectAddMessageResponse {
/// The updated FlightObject resource.
FlightObject? resource;
FlightObjectAddMessageResponse({this.resource});
FlightObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? FlightObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class FlightObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<FlightObject>? resources;
FlightObjectListResponse({this.pagination, this.resources});
FlightObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => FlightObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class FrequentFlyerInfo {
/// Frequent flyer number.
///
/// Required for each nested object of kind `walletobjects#frequentFlyerInfo`.
core.String? frequentFlyerNumber;
/// Frequent flyer program name.
///
/// eg: "Lufthansa Miles & More"
LocalizedString? frequentFlyerProgramName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#frequentFlyerInfo"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
FrequentFlyerInfo({
this.frequentFlyerNumber,
this.frequentFlyerProgramName,
this.kind,
});
FrequentFlyerInfo.fromJson(core.Map json_)
: this(
frequentFlyerNumber: json_['frequentFlyerNumber'] as core.String?,
frequentFlyerProgramName:
json_.containsKey('frequentFlyerProgramName')
? LocalizedString.fromJson(
json_['frequentFlyerProgramName']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (frequentFlyerNumber != null)
'frequentFlyerNumber': frequentFlyerNumber!,
if (frequentFlyerProgramName != null)
'frequentFlyerProgramName': frequentFlyerProgramName!,
if (kind != null) 'kind': kind!,
};
}
/// Generic Class
class GenericClass {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
core.bool? enableSmartTap;
/// The unique identifier for the class.
///
/// This ID must be unique across all from an issuer. This value needs to
/// follow the format `issuerID.identifier` where `issuerID` is issued by
/// Google and `identifier` is chosen by you. The unique identifier can only
/// include alphanumeric characters, `.`, `_`, or `-`.
///
/// Required.
core.String? id;
/// Image module data.
///
/// If `imageModulesData` is also defined on the object, both will be
/// displayed. Only one of the image from class and one from object level will
/// be rendered when both set.
core.List<ImageModuleData>? imageModulesData;
/// Links module data.
///
/// If `linksModuleData` is also defined on the object, both will be
/// displayed. The maximum number of these fields displayed is 10 from class
/// and 10 from object.
LinksModuleData? linksModuleData;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If `textModulesData` is also defined on the object, both will be
/// displayed. The maximum number of these fields displayed is 10 from class
/// and 10 from object.
core.List<TextModuleData>? textModulesData;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// View Unlock Requirement options for the generic pass.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
GenericClass({
this.appLinkData,
this.callbackOptions,
this.classTemplateInfo,
this.enableSmartTap,
this.id,
this.imageModulesData,
this.linksModuleData,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.redemptionIssuers,
this.securityAnimation,
this.textModulesData,
this.valueAddedModuleData,
this.viewUnlockRequirement,
});
GenericClass.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
};
}
/// Response to adding a new issuer message to the class.
///
/// This contains the entire updated GenericClass.
class GenericClassAddMessageResponse {
/// The updated EventTicketClass resource.
GenericClass? resource;
GenericClassAddMessageResponse({this.resource});
GenericClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? GenericClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
/// List response which contains the list of all generic classes for a given
/// issuer ID.
class GenericClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<GenericClass>? resources;
GenericClassListResponse({this.pagination, this.resources});
GenericClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => GenericClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
/// Generic Object
class GenericObject {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
///
/// If pass does not have a barcode, we can allow the issuer to set
/// Barcode.alternate_text and display just that.
Barcode? barcode;
/// The header of the pass.
///
/// This is usually the Business name such as "XXX Gym", "AAA Insurance". This
/// field is required and appears in the header row at the very top of the
/// pass.
///
/// Required.
LocalizedString? cardTitle;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format `issuerID.identifier`
/// where `issuerID` is issued by Google and `identifier` is chosen by you.
///
/// Required.
core.String? classId;
/// Specify which `GenericType` the card belongs to.
/// Possible string values are:
/// - "GENERIC_TYPE_UNSPECIFIED" : Unspecified generic type.
/// - "GENERIC_SEASON_PASS" : Season pass
/// - "GENERIC_UTILITY_BILLS" : Utility bills
/// - "GENERIC_PARKING_PASS" : Parking pass
/// - "GENERIC_VOUCHER" : Voucher
/// - "GENERIC_GYM_MEMBERSHIP" : Gym membership cards
/// - "GENERIC_LIBRARY_MEMBERSHIP" : Library membership cards
/// - "GENERIC_RESERVATIONS" : Reservations
/// - "GENERIC_AUTO_INSURANCE" : Auto-insurance cards
/// - "GENERIC_HOME_INSURANCE" : Home-insurance cards
/// - "GENERIC_ENTRY_TICKET" : Entry tickets
/// - "GENERIC_RECEIPT" : Receipts
/// - "GENERIC_LOYALTY_CARD" : Loyalty cards. Please note that it is advisable
/// to use a dedicated Loyalty card pass type instead of this generic type. A
/// dedicated loyalty card pass type offers more features and functionality
/// than a generic pass type.
/// - "GENERIC_OTHER" : Other type
core.String? genericType;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// The title of the pass, such as "50% off coupon" or "Library card" or
/// "Voucher".
///
/// This field is required and appears in the title row of the pass detail
/// view.
///
/// Required.
LocalizedString? header;
/// Banner image displayed on the front of the card if present.
///
/// The image will be displayed at 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set, the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used and if logo is not
/// set, a color would be chosen by Google.
core.String? hexBackgroundColor;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value needs
/// to follow the format `issuerID.identifier` where `issuerID` is issued by
/// Google and `identifier` is chosen by you. The unique identifier can only
/// include alphanumeric characters, `.`, `_`, or `-`.
///
/// Required.
core.String? id;
/// Image module data.
///
/// Only one of the image from class and one from object level will be
/// rendered when both set.
core.List<ImageModuleData>? imageModulesData;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this generic object.
///
/// If a user had saved this generic card, then these linked_object_ids would
/// be automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// Links module data.
///
/// If `linksModuleData` is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from class and 10 from
/// object.
LinksModuleData? linksModuleData;
/// The logo image of the pass.
///
/// This image is displayed in the card detail view in upper left, and also on
/// the list/thumbnail view. If the logo is not present, the first letter of
/// `cardTitle` would be shown as logo.
Image? logo;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// The notification settings that are enabled for this object.
Notifications? notifications;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// The rotating barcode settings/details.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section. If
/// this is not provided, the object would be considered `ACTIVE`.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// The title label of the pass, such as location where this pass can be used.
///
/// Appears right above the title in the title row in the pass detail view.
LocalizedString? subheader;
/// Text module data.
///
/// If `textModulesData` is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from class and 10 from
/// object.
core.List<TextModuleData>? textModulesData;
/// The time period this object will be considered valid or usable.
///
/// When the time period is passed, the object will be considered expired,
/// which will affect the rendering on user's devices.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// The wide logo of the pass.
///
/// When provided, this will be used in place of the logo in the top left of
/// the card view.
Image? wideLogo;
GenericObject({
this.appLinkData,
this.barcode,
this.cardTitle,
this.classId,
this.genericType,
this.groupingInfo,
this.hasUsers,
this.header,
this.heroImage,
this.hexBackgroundColor,
this.id,
this.imageModulesData,
this.linkedObjectIds,
this.linksModuleData,
this.logo,
this.merchantLocations,
this.messages,
this.notifications,
this.passConstraints,
this.rotatingBarcode,
this.saveRestrictions,
this.smartTapRedemptionValue,
this.state,
this.subheader,
this.textModulesData,
this.validTimeInterval,
this.valueAddedModuleData,
this.wideLogo,
});
GenericObject.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
cardTitle:
json_.containsKey('cardTitle')
? LocalizedString.fromJson(
json_['cardTitle'] as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
genericType: json_['genericType'] as core.String?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasUsers: json_['hasUsers'] as core.bool?,
header:
json_.containsKey('header')
? LocalizedString.fromJson(
json_['header'] as core.Map<core.String, core.dynamic>,
)
: null,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
logo:
json_.containsKey('logo')
? Image.fromJson(
json_['logo'] as core.Map<core.String, core.dynamic>,
)
: null,
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifications:
json_.containsKey('notifications')
? Notifications.fromJson(
json_['notifications'] as core.Map<core.String, core.dynamic>,
)
: null,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
subheader:
json_.containsKey('subheader')
? LocalizedString.fromJson(
json_['subheader'] as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
wideLogo:
json_.containsKey('wideLogo')
? Image.fromJson(
json_['wideLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (cardTitle != null) 'cardTitle': cardTitle!,
if (classId != null) 'classId': classId!,
if (genericType != null) 'genericType': genericType!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (header != null) 'header': header!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (logo != null) 'logo': logo!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifications != null) 'notifications': notifications!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (subheader != null) 'subheader': subheader!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (wideLogo != null) 'wideLogo': wideLogo!,
};
}
/// Response to adding a new issuer message to the object.
///
/// This contains the entire updated GenericObject.
class GenericObjectAddMessageResponse {
/// The updated GenericObject resource.
GenericObject? resource;
GenericObjectAddMessageResponse({this.resource});
GenericObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? GenericObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
/// List response which contains the list of all generic objects for a given
/// issuer ID.
class GenericObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<GenericObject>? resources;
GenericObjectListResponse({this.pagination, this.resources});
GenericObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => GenericObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class GiftCardClass {
/// Determines whether the merchant supports gift card redemption using
/// barcode.
///
/// If true, app displays a barcode for the gift card on the Gift card details
/// screen. If false, a barcode is not displayed.
core.bool? allowBarcodeRedemption;
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// The label to display for the card number, such as "Card Number".
core.String? cardNumberLabel;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// Identifies whether this class supports Smart Tap.
///
/// The `redemptionIssuers` and object level `smartTapRedemptionLevel` fields
/// must also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// The label to display for event number, such as "Target Event #".
core.String? eventNumberLabel;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#giftCardClass"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// Translated strings for the card_number_label.
LocalizedString? localizedCardNumberLabel;
/// Translated strings for the event_number_label.
LocalizedString? localizedEventNumberLabel;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Translated strings for the merchant_name.
///
/// The app may display an ellipsis after the first 20 characters to ensure
/// full string is displayed on smaller screens.
LocalizedString? localizedMerchantName;
/// Translated strings for the pin_label.
LocalizedString? localizedPinLabel;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// Merchant name, such as "Adam's Apparel".
///
/// The app may display an ellipsis after the first 20 characters to ensure
/// full string is displayed on smaller screens.
core.String? merchantName;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If not specified, no notification will be triggered.
/// This setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// The label to display for the PIN, such as "4-digit PIN".
core.String? pinLabel;
/// The logo of the gift card program or company.
///
/// This logo is displayed in both the details and list views of the app.
Image? programLogo;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or `underReview` using the insert, patch,
/// or update API calls. Once the review state is changed from `draft` it may
/// not be changed back to `draft`. You should keep this field to `draft` when
/// the class is under development. A `draft` class cannot be used to create
/// any object. You should set this field to `underReview` when you believe
/// the class is ready for use. The platform will automatically set this field
/// to `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the gift card.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// The wide logo of the gift card program or company.
///
/// When provided, this will be used in place of the program logo in the top
/// left of the card view.
Image? wideProgramLogo;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
GiftCardClass({
this.allowBarcodeRedemption,
this.allowMultipleUsersPerObject,
this.appLinkData,
this.callbackOptions,
this.cardNumberLabel,
this.classTemplateInfo,
this.countryCode,
this.enableSmartTap,
this.eventNumberLabel,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.kind,
this.linksModuleData,
this.localizedCardNumberLabel,
this.localizedEventNumberLabel,
this.localizedIssuerName,
this.localizedMerchantName,
this.localizedPinLabel,
this.locations,
this.merchantLocations,
this.merchantName,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.pinLabel,
this.programLogo,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.securityAnimation,
this.textModulesData,
this.valueAddedModuleData,
this.version,
this.viewUnlockRequirement,
this.wideProgramLogo,
this.wordMark,
});
GiftCardClass.fromJson(core.Map json_)
: this(
allowBarcodeRedemption: json_['allowBarcodeRedemption'] as core.bool?,
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
cardNumberLabel: json_['cardNumberLabel'] as core.String?,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
countryCode: json_['countryCode'] as core.String?,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
eventNumberLabel: json_['eventNumberLabel'] as core.String?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
kind: json_['kind'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedCardNumberLabel:
json_.containsKey('localizedCardNumberLabel')
? LocalizedString.fromJson(
json_['localizedCardNumberLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedEventNumberLabel:
json_.containsKey('localizedEventNumberLabel')
? LocalizedString.fromJson(
json_['localizedEventNumberLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedMerchantName:
json_.containsKey('localizedMerchantName')
? LocalizedString.fromJson(
json_['localizedMerchantName']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedPinLabel:
json_.containsKey('localizedPinLabel')
? LocalizedString.fromJson(
json_['localizedPinLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantName: json_['merchantName'] as core.String?,
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
pinLabel: json_['pinLabel'] as core.String?,
programLogo:
json_.containsKey('programLogo')
? Image.fromJson(
json_['programLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
wideProgramLogo:
json_.containsKey('wideProgramLogo')
? Image.fromJson(
json_['wideProgramLogo']
as core.Map<core.String, core.dynamic>,
)
: null,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (allowBarcodeRedemption != null)
'allowBarcodeRedemption': allowBarcodeRedemption!,
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (cardNumberLabel != null) 'cardNumberLabel': cardNumberLabel!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (countryCode != null) 'countryCode': countryCode!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (eventNumberLabel != null) 'eventNumberLabel': eventNumberLabel!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (kind != null) 'kind': kind!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localizedCardNumberLabel != null)
'localizedCardNumberLabel': localizedCardNumberLabel!,
if (localizedEventNumberLabel != null)
'localizedEventNumberLabel': localizedEventNumberLabel!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (localizedMerchantName != null)
'localizedMerchantName': localizedMerchantName!,
if (localizedPinLabel != null) 'localizedPinLabel': localizedPinLabel!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (merchantName != null) 'merchantName': merchantName!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (pinLabel != null) 'pinLabel': pinLabel!,
if (programLogo != null) 'programLogo': programLogo!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (wideProgramLogo != null) 'wideProgramLogo': wideProgramLogo!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class GiftCardClassAddMessageResponse {
/// The updated GiftCardClass resource.
GiftCardClass? resource;
GiftCardClassAddMessageResponse({this.resource});
GiftCardClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? GiftCardClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class GiftCardClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<GiftCardClass>? resources;
GiftCardClassListResponse({this.pagination, this.resources});
GiftCardClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => GiftCardClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class GiftCardObject {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The card's monetary balance.
Money? balance;
/// The date and time when the balance was last updated.
///
/// Offset is required. If balance is updated and this property is not
/// provided, system will default to the current time.
DateTime? balanceUpdateTime;
/// The barcode type and value.
Barcode? barcode;
/// The card's number.
///
/// Required.
core.String? cardNumber;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
GiftCardClass? classReference;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for offers.
core.bool? disableExpirationNotification;
/// The card's event number, an optional field used by some gift cards.
core.String? eventNumber;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#giftCardObject"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this giftcard object.
///
/// If a user had saved this gift card, then these linked_object_ids would be
/// automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// The card's PIN.
core.String? pin;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
GiftCardObject({
this.appLinkData,
this.balance,
this.balanceUpdateTime,
this.barcode,
this.cardNumber,
this.classId,
this.classReference,
this.disableExpirationNotification,
this.eventNumber,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.id,
this.imageModulesData,
this.infoModuleData,
this.kind,
this.linkedObjectIds,
this.linksModuleData,
this.locations,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.pin,
this.rotatingBarcode,
this.saveRestrictions,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
GiftCardObject.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
balance:
json_.containsKey('balance')
? Money.fromJson(
json_['balance'] as core.Map<core.String, core.dynamic>,
)
: null,
balanceUpdateTime:
json_.containsKey('balanceUpdateTime')
? DateTime.fromJson(
json_['balanceUpdateTime']
as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
cardNumber: json_['cardNumber'] as core.String?,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? GiftCardClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
eventNumber: json_['eventNumber'] as core.String?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
pin: json_['pin'] as core.String?,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (balance != null) 'balance': balance!,
if (balanceUpdateTime != null) 'balanceUpdateTime': balanceUpdateTime!,
if (barcode != null) 'barcode': barcode!,
if (cardNumber != null) 'cardNumber': cardNumber!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (eventNumber != null) 'eventNumber': eventNumber!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (kind != null) 'kind': kind!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (pin != null) 'pin': pin!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class GiftCardObjectAddMessageResponse {
/// The updated GiftCardObject resource.
GiftCardObject? resource;
GiftCardObjectAddMessageResponse({this.resource});
GiftCardObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? GiftCardObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class GiftCardObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<GiftCardObject>? resources;
GiftCardObjectListResponse({this.pagination, this.resources});
GiftCardObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => GiftCardObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class GroupingInfo {
/// Optional grouping ID for grouping the passes with the same ID visually
/// together.
///
/// Grouping with different types of passes is allowed.
core.String? groupingId;
/// Optional index for sorting the passes when they are grouped with other
/// passes.
///
/// Passes with lower sort index are shown before passes with higher sort
/// index. If unspecified, the value is assumed to be INT_MAX. For two passes
/// with the same sort index, the sorting behavior is undefined.
core.int? sortIndex;
GroupingInfo({this.groupingId, this.sortIndex});
GroupingInfo.fromJson(core.Map json_)
: this(
groupingId: json_['groupingId'] as core.String?,
sortIndex: json_['sortIndex'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (groupingId != null) 'groupingId': groupingId!,
if (sortIndex != null) 'sortIndex': sortIndex!,
};
}
/// Wrapping type for Google hosted images.
class Image {
/// Description of the image used for accessibility.
LocalizedString? contentDescription;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#image"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// An ID for an already uploaded private image.
///
/// Either this or source_uri should be set. Requests setting both or neither
/// will be rejected. Please contact support to use private images.
core.String? privateImageId;
/// A URI for the image.
///
/// Either this or private_image_id should be set. Requests setting both or
/// neither will be rejected.
ImageUri? sourceUri;
Image({
this.contentDescription,
this.kind,
this.privateImageId,
this.sourceUri,
});
Image.fromJson(core.Map json_)
: this(
contentDescription:
json_.containsKey('contentDescription')
? LocalizedString.fromJson(
json_['contentDescription']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
privateImageId: json_['privateImageId'] as core.String?,
sourceUri:
json_.containsKey('sourceUri')
? ImageUri.fromJson(
json_['sourceUri'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (contentDescription != null) 'contentDescription': contentDescription!,
if (kind != null) 'kind': kind!,
if (privateImageId != null) 'privateImageId': privateImageId!,
if (sourceUri != null) 'sourceUri': sourceUri!,
};
}
class ImageModuleData {
/// The ID associated with an image module.
///
/// This field is here to enable ease of management of image modules.
core.String? id;
/// A 100% width image.
Image? mainImage;
ImageModuleData({this.id, this.mainImage});
ImageModuleData.fromJson(core.Map json_)
: this(
id: json_['id'] as core.String?,
mainImage:
json_.containsKey('mainImage')
? Image.fromJson(
json_['mainImage'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (id != null) 'id': id!,
if (mainImage != null) 'mainImage': mainImage!,
};
}
class ImageUri {
/// Additional information about the image, which is unused and retained only
/// for backward compatibility.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? description;
/// Translated strings for the description, which are unused and retained only
/// for backward compatibility.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
LocalizedString? localizedDescription;
/// The location of the image.
///
/// URIs must have a scheme.
core.String? uri;
ImageUri({this.description, this.localizedDescription, this.uri});
ImageUri.fromJson(core.Map json_)
: this(
description: json_['description'] as core.String?,
localizedDescription:
json_.containsKey('localizedDescription')
? LocalizedString.fromJson(
json_['localizedDescription']
as core.Map<core.String, core.dynamic>,
)
: null,
uri: json_['uri'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (description != null) 'description': description!,
if (localizedDescription != null)
'localizedDescription': localizedDescription!,
if (uri != null) 'uri': uri!,
};
}
class InfoModuleData {
/// A list of collections of labels and values.
///
/// These will be displayed one after the other in a singular column.
core.List<LabelValueRow>? labelValueRows;
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? showLastUpdateTime;
InfoModuleData({this.labelValueRows, this.showLastUpdateTime});
InfoModuleData.fromJson(core.Map json_)
: this(
labelValueRows:
(json_['labelValueRows'] as core.List?)
?.map(
(value) => LabelValueRow.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
showLastUpdateTime: json_['showLastUpdateTime'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (labelValueRows != null) 'labelValueRows': labelValueRows!,
if (showLastUpdateTime != null) 'showLastUpdateTime': showLastUpdateTime!,
};
}
class Issuer {
/// Allows the issuer to provide their callback settings.
CallbackOptions? callbackOptions;
/// Issuer contact information.
IssuerContactInfo? contactInfo;
/// URL for the issuer's home page.
core.String? homepageUrl;
/// The unique identifier for an issuer account.
///
/// This is automatically generated when the issuer is inserted.
core.String? issuerId;
/// The account name of the issuer.
core.String? name;
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
SmartTapMerchantData? smartTapMerchantData;
Issuer({
this.callbackOptions,
this.contactInfo,
this.homepageUrl,
this.issuerId,
this.name,
this.smartTapMerchantData,
});
Issuer.fromJson(core.Map json_)
: this(
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
contactInfo:
json_.containsKey('contactInfo')
? IssuerContactInfo.fromJson(
json_['contactInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
homepageUrl: json_['homepageUrl'] as core.String?,
issuerId: json_['issuerId'] as core.String?,
name: json_['name'] as core.String?,
smartTapMerchantData:
json_.containsKey('smartTapMerchantData')
? SmartTapMerchantData.fromJson(
json_['smartTapMerchantData']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (contactInfo != null) 'contactInfo': contactInfo!,
if (homepageUrl != null) 'homepageUrl': homepageUrl!,
if (issuerId != null) 'issuerId': issuerId!,
if (name != null) 'name': name!,
if (smartTapMerchantData != null)
'smartTapMerchantData': smartTapMerchantData!,
};
}
class IssuerContactInfo {
/// Email addresses which will receive alerts.
core.List<core.String>? alertsEmails;
/// The primary contact email address.
core.String? email;
/// The primary contact name.
core.String? name;
/// The primary contact phone number.
core.String? phone;
IssuerContactInfo({this.alertsEmails, this.email, this.name, this.phone});
IssuerContactInfo.fromJson(core.Map json_)
: this(
alertsEmails:
(json_['alertsEmails'] as core.List?)
?.map((value) => value as core.String)
.toList(),
email: json_['email'] as core.String?,
name: json_['name'] as core.String?,
phone: json_['phone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (alertsEmails != null) 'alertsEmails': alertsEmails!,
if (email != null) 'email': email!,
if (name != null) 'name': name!,
if (phone != null) 'phone': phone!,
};
}
class IssuerListResponse {
/// Resources corresponding to the list request.
core.List<Issuer>? resources;
IssuerListResponse({this.resources});
IssuerListResponse.fromJson(core.Map json_)
: this(
resources:
(json_['resources'] as core.List?)
?.map(
(value) => Issuer.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (resources != null) 'resources': resources!,
};
}
class IssuerToUserInfo {
///
/// Possible string values are:
/// - "ACTION_UNSPECIFIED"
/// - "S2AP"
/// - "s2ap" : Legacy alias for `S2AP`. Deprecated.
/// - "SIGN_UP"
/// - "signUp" : Legacy alias for `SIGN_UP`. Deprecated.
core.String? action;
SignUpInfo? signUpInfo;
/// Currently not used, consider deprecating.
core.String? url;
/// JSON web token for action S2AP.
core.String? value;
IssuerToUserInfo({this.action, this.signUpInfo, this.url, this.value});
IssuerToUserInfo.fromJson(core.Map json_)
: this(
action: json_['action'] as core.String?,
signUpInfo:
json_.containsKey('signUpInfo')
? SignUpInfo.fromJson(
json_['signUpInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
url: json_['url'] as core.String?,
value: json_['value'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (action != null) 'action': action!,
if (signUpInfo != null) 'signUpInfo': signUpInfo!,
if (url != null) 'url': url!,
if (value != null) 'value': value!,
};
}
class JwtInsertResponse {
/// Data that corresponds to the ids of the provided classes and objects in
/// the JWT.
///
/// resources will only include the non-empty arrays (i.e. if the JWT only
/// includes eventTicketObjects, then that is the only field that will be
/// present in resources).
Resources? resources;
/// A URI that, when opened, will allow the end user to save the object(s)
/// identified in the JWT to their Google account.
core.String? saveUri;
JwtInsertResponse({this.resources, this.saveUri});
JwtInsertResponse.fromJson(core.Map json_)
: this(
resources:
json_.containsKey('resources')
? Resources.fromJson(
json_['resources'] as core.Map<core.String, core.dynamic>,
)
: null,
saveUri: json_['saveUri'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resources != null) 'resources': resources!,
if (saveUri != null) 'saveUri': saveUri!,
};
}
class JwtResource {
/// A string representing a JWT of the format described at
/// https://developers.google.com/wallet/reference/rest/v1/Jwt
core.String? jwt;
JwtResource({this.jwt});
JwtResource.fromJson(core.Map json_)
: this(jwt: json_['jwt'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (jwt != null) 'jwt': jwt!,
};
}
/// A pair of text strings to be displayed in the details view.
///
/// Note we no longer display LabelValue/LabelValueRow as a table, instead a
/// list of items.
class LabelValue {
/// The label for a specific row and column.
///
/// Recommended maximum is 15 characters for a two-column layout and 30
/// characters for a one-column layout.
core.String? label;
/// Translated strings for the label.
///
/// Recommended maximum is 15 characters for a two-column layout and 30
/// characters for a one-column layout.
LocalizedString? localizedLabel;
/// Translated strings for the value.
///
/// Recommended maximum is 15 characters for a two-column layout and 30
/// characters for a one-column layout.
LocalizedString? localizedValue;
/// The value for a specific row and column.
///
/// Recommended maximum is 15 characters for a two-column layout and 30
/// characters for a one-column layout.
core.String? value;
LabelValue({
this.label,
this.localizedLabel,
this.localizedValue,
this.value,
});
LabelValue.fromJson(core.Map json_)
: this(
label: json_['label'] as core.String?,
localizedLabel:
json_.containsKey('localizedLabel')
? LocalizedString.fromJson(
json_['localizedLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedValue:
json_.containsKey('localizedValue')
? LocalizedString.fromJson(
json_['localizedValue']
as core.Map<core.String, core.dynamic>,
)
: null,
value: json_['value'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (label != null) 'label': label!,
if (localizedLabel != null) 'localizedLabel': localizedLabel!,
if (localizedValue != null) 'localizedValue': localizedValue!,
if (value != null) 'value': value!,
};
}
class LabelValueRow {
/// A list of labels and values.
///
/// These will be displayed in a singular column, one after the other, not in
/// multiple columns, despite the field name.
core.List<LabelValue>? columns;
LabelValueRow({this.columns});
LabelValueRow.fromJson(core.Map json_)
: this(
columns:
(json_['columns'] as core.List?)
?.map(
(value) => LabelValue.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (columns != null) 'columns': columns!,
};
}
class LatLongPoint {
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#latLongPoint"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The latitude specified as any value in the range of -90.0 through +90.0,
/// both inclusive.
///
/// Values outside these bounds will be rejected.
core.double? latitude;
/// The longitude specified in the range -180.0 through +180.0, both
/// inclusive.
///
/// Values outside these bounds will be rejected.
core.double? longitude;
LatLongPoint({this.kind, this.latitude, this.longitude});
LatLongPoint.fromJson(core.Map json_)
: this(
kind: json_['kind'] as core.String?,
latitude: (json_['latitude'] as core.num?)?.toDouble(),
longitude: (json_['longitude'] as core.num?)?.toDouble(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (kind != null) 'kind': kind!,
if (latitude != null) 'latitude': latitude!,
if (longitude != null) 'longitude': longitude!,
};
}
class LinksModuleData {
/// The list of URIs.
core.List<Uri>? uris;
LinksModuleData({this.uris});
LinksModuleData.fromJson(core.Map json_)
: this(
uris:
(json_['uris'] as core.List?)
?.map(
(value) => Uri.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (uris != null) 'uris': uris!,
};
}
class ListTemplateOverride {
/// Specifies from a predefined set of options or from a reference to the
/// field what will be displayed in the first row.
///
/// To set this override, set the FirstRowOption.fieldOption to the
/// FieldSelector of your choice.
FirstRowOption? firstRowOption;
/// A reference to the field to be displayed in the second row.
///
/// This option is only displayed if there are not multiple user objects in a
/// group. If there is a group, the second row will always display a field
/// shared by all objects. To set this override, please set secondRowOption to
/// the FieldSelector of you choice.
FieldSelector? secondRowOption;
/// An unused/deprecated field.
///
/// Setting it will have no effect on what the user sees.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
FieldSelector? thirdRowOption;
ListTemplateOverride({
this.firstRowOption,
this.secondRowOption,
this.thirdRowOption,
});
ListTemplateOverride.fromJson(core.Map json_)
: this(
firstRowOption:
json_.containsKey('firstRowOption')
? FirstRowOption.fromJson(
json_['firstRowOption']
as core.Map<core.String, core.dynamic>,
)
: null,
secondRowOption:
json_.containsKey('secondRowOption')
? FieldSelector.fromJson(
json_['secondRowOption']
as core.Map<core.String, core.dynamic>,
)
: null,
thirdRowOption:
json_.containsKey('thirdRowOption')
? FieldSelector.fromJson(
json_['thirdRowOption']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (firstRowOption != null) 'firstRowOption': firstRowOption!,
if (secondRowOption != null) 'secondRowOption': secondRowOption!,
if (thirdRowOption != null) 'thirdRowOption': thirdRowOption!,
};
}
class LocalizedString {
/// Contains the string to be displayed if no appropriate translation is
/// available.
TranslatedString? defaultValue;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#localizedString"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Contains the translations for the string.
core.List<TranslatedString>? translatedValues;
LocalizedString({this.defaultValue, this.kind, this.translatedValues});
LocalizedString.fromJson(core.Map json_)
: this(
defaultValue:
json_.containsKey('defaultValue')
? TranslatedString.fromJson(
json_['defaultValue'] as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
translatedValues:
(json_['translatedValues'] as core.List?)
?.map(
(value) => TranslatedString.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (defaultValue != null) 'defaultValue': defaultValue!,
if (kind != null) 'kind': kind!,
if (translatedValues != null) 'translatedValues': translatedValues!,
};
}
class LoyaltyClass {
/// The account ID label, such as "Member ID." Recommended maximum length is
/// 15 characters to ensure full string is displayed on smaller screens.
core.String? accountIdLabel;
/// The account name label, such as "Member Name." Recommended maximum length
/// is 15 characters to ensure full string is displayed on smaller screens.
core.String? accountNameLabel;
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// Information about how the class may be discovered and instantiated from
/// within the Google Pay app.
DiscoverableProgram? discoverableProgram;
/// Identifies whether this class supports Smart Tap.
///
/// The \`redemptionIssuers\` and one of object level
/// \`smartTapRedemptionLevel\`, barcode.value\`, or \`accountId\` fields must
/// also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#loyaltyClass"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// Translated strings for the account_id_label.
///
/// Recommended maximum length is 15 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedAccountIdLabel;
/// Translated strings for the account_name_label.
///
/// Recommended maximum length is 15 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedAccountNameLabel;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Translated strings for the program_name.
///
/// The app may display an ellipsis after the first 20 characters to ensure
/// full string is displayed on smaller screens.
LocalizedString? localizedProgramName;
/// Translated strings for the rewards_tier.
///
/// Recommended maximum length is 7 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedRewardsTier;
/// Translated strings for the rewards_tier_label.
///
/// Recommended maximum length is 9 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedRewardsTierLabel;
/// Translated strings for the secondary_rewards_tier.
LocalizedString? localizedSecondaryRewardsTier;
/// Translated strings for the secondary_rewards_tier_label.
LocalizedString? localizedSecondaryRewardsTierLabel;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If not specified, no notification will be triggered.
/// This setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// The logo of the loyalty program or company.
///
/// This logo is displayed in both the details and list views of the app.
///
/// Required.
Image? programLogo;
/// The program name, such as "Adam's Apparel".
///
/// The app may display an ellipsis after the first 20 characters to ensure
/// full string is displayed on smaller screens.
///
/// Required.
core.String? programName;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The \`enableSmartTap\`
/// and one of object level \`smartTapRedemptionValue\`, barcode.value\`, or
/// \`accountId\` fields must also be set up correctly in order for a pass to
/// support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or `underReview` using the insert, patch,
/// or update API calls. Once the review state is changed from `draft` it may
/// not be changed back to `draft`. You should keep this field to `draft` when
/// the class is under development. A `draft` class cannot be used to create
/// any object. You should set this field to `underReview` when you believe
/// the class is ready for use. The platform will automatically set this field
/// to `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// The rewards tier, such as "Gold" or "Platinum." Recommended maximum length
/// is 7 characters to ensure full string is displayed on smaller screens.
core.String? rewardsTier;
/// The rewards tier label, such as "Rewards Tier." Recommended maximum length
/// is 9 characters to ensure full string is displayed on smaller screens.
core.String? rewardsTierLabel;
/// The secondary rewards tier, such as "Gold" or "Platinum."
core.String? secondaryRewardsTier;
/// The secondary rewards tier label, such as "Rewards Tier."
core.String? secondaryRewardsTierLabel;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the loyalty card.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// The wide logo of the loyalty program or company.
///
/// When provided, this will be used in place of the program logo in the top
/// left of the card view.
Image? wideProgramLogo;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
LoyaltyClass({
this.accountIdLabel,
this.accountNameLabel,
this.allowMultipleUsersPerObject,
this.appLinkData,
this.callbackOptions,
this.classTemplateInfo,
this.countryCode,
this.discoverableProgram,
this.enableSmartTap,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.kind,
this.linksModuleData,
this.localizedAccountIdLabel,
this.localizedAccountNameLabel,
this.localizedIssuerName,
this.localizedProgramName,
this.localizedRewardsTier,
this.localizedRewardsTierLabel,
this.localizedSecondaryRewardsTier,
this.localizedSecondaryRewardsTierLabel,
this.locations,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.programLogo,
this.programName,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.rewardsTier,
this.rewardsTierLabel,
this.secondaryRewardsTier,
this.secondaryRewardsTierLabel,
this.securityAnimation,
this.textModulesData,
this.valueAddedModuleData,
this.version,
this.viewUnlockRequirement,
this.wideProgramLogo,
this.wordMark,
});
LoyaltyClass.fromJson(core.Map json_)
: this(
accountIdLabel: json_['accountIdLabel'] as core.String?,
accountNameLabel: json_['accountNameLabel'] as core.String?,
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
countryCode: json_['countryCode'] as core.String?,
discoverableProgram:
json_.containsKey('discoverableProgram')
? DiscoverableProgram.fromJson(
json_['discoverableProgram']
as core.Map<core.String, core.dynamic>,
)
: null,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
kind: json_['kind'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedAccountIdLabel:
json_.containsKey('localizedAccountIdLabel')
? LocalizedString.fromJson(
json_['localizedAccountIdLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedAccountNameLabel:
json_.containsKey('localizedAccountNameLabel')
? LocalizedString.fromJson(
json_['localizedAccountNameLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedProgramName:
json_.containsKey('localizedProgramName')
? LocalizedString.fromJson(
json_['localizedProgramName']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedRewardsTier:
json_.containsKey('localizedRewardsTier')
? LocalizedString.fromJson(
json_['localizedRewardsTier']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedRewardsTierLabel:
json_.containsKey('localizedRewardsTierLabel')
? LocalizedString.fromJson(
json_['localizedRewardsTierLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedSecondaryRewardsTier:
json_.containsKey('localizedSecondaryRewardsTier')
? LocalizedString.fromJson(
json_['localizedSecondaryRewardsTier']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedSecondaryRewardsTierLabel:
json_.containsKey('localizedSecondaryRewardsTierLabel')
? LocalizedString.fromJson(
json_['localizedSecondaryRewardsTierLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
programLogo:
json_.containsKey('programLogo')
? Image.fromJson(
json_['programLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
programName: json_['programName'] as core.String?,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
rewardsTier: json_['rewardsTier'] as core.String?,
rewardsTierLabel: json_['rewardsTierLabel'] as core.String?,
secondaryRewardsTier: json_['secondaryRewardsTier'] as core.String?,
secondaryRewardsTierLabel:
json_['secondaryRewardsTierLabel'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
wideProgramLogo:
json_.containsKey('wideProgramLogo')
? Image.fromJson(
json_['wideProgramLogo']
as core.Map<core.String, core.dynamic>,
)
: null,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (accountIdLabel != null) 'accountIdLabel': accountIdLabel!,
if (accountNameLabel != null) 'accountNameLabel': accountNameLabel!,
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (countryCode != null) 'countryCode': countryCode!,
if (discoverableProgram != null)
'discoverableProgram': discoverableProgram!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (kind != null) 'kind': kind!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localizedAccountIdLabel != null)
'localizedAccountIdLabel': localizedAccountIdLabel!,
if (localizedAccountNameLabel != null)
'localizedAccountNameLabel': localizedAccountNameLabel!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (localizedProgramName != null)
'localizedProgramName': localizedProgramName!,
if (localizedRewardsTier != null)
'localizedRewardsTier': localizedRewardsTier!,
if (localizedRewardsTierLabel != null)
'localizedRewardsTierLabel': localizedRewardsTierLabel!,
if (localizedSecondaryRewardsTier != null)
'localizedSecondaryRewardsTier': localizedSecondaryRewardsTier!,
if (localizedSecondaryRewardsTierLabel != null)
'localizedSecondaryRewardsTierLabel': localizedSecondaryRewardsTierLabel!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (programLogo != null) 'programLogo': programLogo!,
if (programName != null) 'programName': programName!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (rewardsTier != null) 'rewardsTier': rewardsTier!,
if (rewardsTierLabel != null) 'rewardsTierLabel': rewardsTierLabel!,
if (secondaryRewardsTier != null)
'secondaryRewardsTier': secondaryRewardsTier!,
if (secondaryRewardsTierLabel != null)
'secondaryRewardsTierLabel': secondaryRewardsTierLabel!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (wideProgramLogo != null) 'wideProgramLogo': wideProgramLogo!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class LoyaltyClassAddMessageResponse {
/// The updated LoyaltyClass resource.
LoyaltyClass? resource;
LoyaltyClassAddMessageResponse({this.resource});
LoyaltyClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? LoyaltyClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class LoyaltyClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<LoyaltyClass>? resources;
LoyaltyClassListResponse({this.pagination, this.resources});
LoyaltyClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => LoyaltyClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class LoyaltyObject {
/// The loyalty account identifier.
///
/// Recommended maximum length is 20 characters.
core.String? accountId;
/// The loyalty account holder name, such as "John Smith." Recommended maximum
/// length is 20 characters to ensure full string is displayed on smaller
/// screens.
core.String? accountName;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
Barcode? barcode;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
LoyaltyClass? classReference;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for offers.
core.bool? disableExpirationNotification;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#loyaltyObject"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this loyalty object.
///
/// If a user had saved this loyalty card, then these linked_object_ids would
/// be automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// A list of offer objects linked to this loyalty card.
///
/// The offer objects must already exist. Offer object IDs should follow the
/// format issuer ID. identifier where the former is issued by Google and
/// latter is chosen by you.
core.List<core.String>? linkedOfferIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// The loyalty reward points label, balance, and type.
LoyaltyPoints? loyaltyPoints;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// The secondary loyalty reward points label, balance, and type.
///
/// Shown in addition to the primary loyalty points.
LoyaltyPoints? secondaryLoyaltyPoints;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported. If this value is not set but the class level
/// fields `enableSmartTap` and `redemptionIssuers` are set up correctly, the
/// `barcode.value` or the `accountId` fields are used as fallback if present.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
LoyaltyObject({
this.accountId,
this.accountName,
this.appLinkData,
this.barcode,
this.classId,
this.classReference,
this.disableExpirationNotification,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.id,
this.imageModulesData,
this.infoModuleData,
this.kind,
this.linkedObjectIds,
this.linkedOfferIds,
this.linksModuleData,
this.locations,
this.loyaltyPoints,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.rotatingBarcode,
this.saveRestrictions,
this.secondaryLoyaltyPoints,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
LoyaltyObject.fromJson(core.Map json_)
: this(
accountId: json_['accountId'] as core.String?,
accountName: json_['accountName'] as core.String?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? LoyaltyClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linkedOfferIds:
(json_['linkedOfferIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
loyaltyPoints:
json_.containsKey('loyaltyPoints')
? LoyaltyPoints.fromJson(
json_['loyaltyPoints'] as core.Map<core.String, core.dynamic>,
)
: null,
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
secondaryLoyaltyPoints:
json_.containsKey('secondaryLoyaltyPoints')
? LoyaltyPoints.fromJson(
json_['secondaryLoyaltyPoints']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (accountId != null) 'accountId': accountId!,
if (accountName != null) 'accountName': accountName!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (kind != null) 'kind': kind!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linkedOfferIds != null) 'linkedOfferIds': linkedOfferIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (loyaltyPoints != null) 'loyaltyPoints': loyaltyPoints!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (secondaryLoyaltyPoints != null)
'secondaryLoyaltyPoints': secondaryLoyaltyPoints!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class LoyaltyObjectAddMessageResponse {
/// The updated LoyaltyObject resource.
LoyaltyObject? resource;
LoyaltyObjectAddMessageResponse({this.resource});
LoyaltyObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? LoyaltyObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class LoyaltyObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<LoyaltyObject>? resources;
LoyaltyObjectListResponse({this.pagination, this.resources});
LoyaltyObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => LoyaltyObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class LoyaltyPoints {
/// The account holder's loyalty point balance, such as "500" or "$10.00".
///
/// Recommended maximum length is 7 characters. This is a required field of
/// `loyaltyPoints` and `secondaryLoyaltyPoints`.
LoyaltyPointsBalance? balance;
/// The loyalty points label, such as "Points".
///
/// Recommended maximum length is 9 characters.
core.String? label;
/// Translated strings for the label.
///
/// Recommended maximum length is 9 characters.
LocalizedString? localizedLabel;
LoyaltyPoints({this.balance, this.label, this.localizedLabel});
LoyaltyPoints.fromJson(core.Map json_)
: this(
balance:
json_.containsKey('balance')
? LoyaltyPointsBalance.fromJson(
json_['balance'] as core.Map<core.String, core.dynamic>,
)
: null,
label: json_['label'] as core.String?,
localizedLabel:
json_.containsKey('localizedLabel')
? LocalizedString.fromJson(
json_['localizedLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (balance != null) 'balance': balance!,
if (label != null) 'label': label!,
if (localizedLabel != null) 'localizedLabel': localizedLabel!,
};
}
class LoyaltyPointsBalance {
/// The double form of a balance.
///
/// Only one of these subtypes (string, int, double, money) should be
/// populated.
core.double? double;
/// The integer form of a balance.
///
/// Only one of these subtypes (string, int, double, money) should be
/// populated.
core.int? int;
/// The money form of a balance.
///
/// Only one of these subtypes (string, int, double, money) should be
/// populated.
Money? money;
/// The string form of a balance.
///
/// Only one of these subtypes (string, int, double, money) should be
/// populated.
core.String? string;
LoyaltyPointsBalance({this.double, this.int, this.money, this.string});
LoyaltyPointsBalance.fromJson(core.Map json_)
: this(
double: (json_['double'] as core.num?)?.toDouble(),
int: json_['int'] as core.int?,
money:
json_.containsKey('money')
? Money.fromJson(
json_['money'] as core.Map<core.String, core.dynamic>,
)
: null,
string: json_['string'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (double != null) 'double': double!,
if (int != null) 'int': int!,
if (money != null) 'money': money!,
if (string != null) 'string': string!,
};
}
/// A reference to data stored on the filesystem, on GFS or in blobstore.
class Media {
/// Deprecated, use one of explicit hash type fields instead.
///
/// Algorithm used for calculating the hash. As of 2011/01/21, "MD5" is the
/// only possible value for this field. New values may be added at any time.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? algorithm;
/// Use object_id instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? bigstoreObjectRef;
core.List<core.int> get bigstoreObjectRefAsBytes =>
convert.base64.decode(bigstoreObjectRef!);
set bigstoreObjectRefAsBytes(core.List<core.int> bytes_) {
bigstoreObjectRef = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should
/// be the byte representation of a blobstore.BlobRef.
///
/// Since Blobstore is deprecating v1, use blobstore2_info instead. For now,
/// any v2 blob will also be represented in this field as v1 BlobRef.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? blobRef;
core.List<core.int> get blobRefAsBytes => convert.base64.decode(blobRef!);
set blobRefAsBytes(core.List<core.int> bytes_) {
blobRef = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to
/// a v2 blob.
Blobstore2Info? blobstore2Info;
/// A composite media composed of one or more media objects, set if
/// reference_type is COMPOSITE_MEDIA.
///
/// The media length field must be set to the sum of the lengths of all
/// composite media objects. Note: All composite media must have length
/// specified.
core.List<CompositeMedia>? compositeMedia;
/// MIME type of the data
core.String? contentType;
/// Extended content type information provided for Scotty uploads.
ContentTypeInfo? contentTypeInfo;
/// A binary data reference for a media download.
///
/// Serves as a technology-agnostic binary reference in some Google
/// infrastructure. This value is a serialized storage_cosmo.BinaryReference
/// proto. Storing it as bytes is a hack to get around the fact that the cosmo
/// proto (as well as others it includes) doesn't support JavaScript. This
/// prevents us from including the actual type of this field.
core.String? cosmoBinaryReference;
core.List<core.int> get cosmoBinaryReferenceAsBytes =>
convert.base64.decode(cosmoBinaryReference!);
set cosmoBinaryReferenceAsBytes(core.List<core.int> bytes_) {
cosmoBinaryReference = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// For Scotty Uploads: Scotty-provided hashes for uploads For Scotty
/// Downloads: (WARNING: DO NOT USE WITHOUT PERMISSION FROM THE SCOTTY TEAM.)
/// A Hash provided by the agent to be used to verify the data being
/// downloaded.
///
/// Currently only supported for inline payloads. Further, only crc32c_hash is
/// currently supported.
core.int? crc32cHash;
/// Set if reference_type is DIFF_CHECKSUMS_RESPONSE.
DiffChecksumsResponse? diffChecksumsResponse;
/// Set if reference_type is DIFF_DOWNLOAD_RESPONSE.
DiffDownloadResponse? diffDownloadResponse;
/// Set if reference_type is DIFF_UPLOAD_REQUEST.
DiffUploadRequest? diffUploadRequest;
/// Set if reference_type is DIFF_UPLOAD_RESPONSE.
DiffUploadResponse? diffUploadResponse;
/// Set if reference_type is DIFF_VERSION_RESPONSE.
DiffVersionResponse? diffVersionResponse;
/// Parameters for a media download.
DownloadParameters? downloadParameters;
/// Original file name
core.String? filename;
/// Deprecated, use one of explicit hash type fields instead.
///
/// These two hash related fields will only be populated on Scotty based media
/// uploads and will contain the content of the hash group in the
/// NotificationRequest:
/// http://cs/#google3/blobstore2/api/scotty/service/proto/upload_listener.proto&q=class:Hash
/// Hex encoded hash value of the uploaded media.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? hash;
/// For Scotty uploads only.
///
/// If a user sends a hash code and the backend has requested that Scotty
/// verify the upload against the client hash, Scotty will perform the check
/// on behalf of the backend and will reject it if the hashes don't match.
/// This is set to true if Scotty performed this verification.
core.bool? hashVerified;
/// Media data, set if reference_type is INLINE
core.String? inline;
core.List<core.int> get inlineAsBytes => convert.base64.decode(inline!);
set inlineAsBytes(core.List<core.int> bytes_) {
inline = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// |is_potential_retry| is set false only when Scotty is certain that it has
/// not sent the request before.
///
/// When a client resumes an upload, this field must be set true in agent
/// calls, because Scotty cannot be certain that it has never sent the request
/// before due to potential failure in the session state persistence.
core.bool? isPotentialRetry;
/// Size of the data, in bytes
core.String? length;
/// Scotty-provided MD5 hash for an upload.
core.String? md5Hash;
core.List<core.int> get md5HashAsBytes => convert.base64.decode(md5Hash!);
set md5HashAsBytes(core.List<core.int> bytes_) {
md5Hash = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Media id to forward to the operation GetMedia.
///
/// Can be set if reference_type is GET_MEDIA.
core.String? mediaId;
core.List<core.int> get mediaIdAsBytes => convert.base64.decode(mediaId!);
set mediaIdAsBytes(core.List<core.int> bytes_) {
mediaId = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
ObjectId? objectId;
/// Path to the data, set if reference_type is PATH
core.String? path;
/// Describes what the field reference contains.
/// Possible string values are:
/// - "PATH" : Reference contains a GFS path or a local path.
/// - "BLOB_REF" : Reference points to a blobstore object. This could be
/// either a v1 blob_ref or a v2 blobstore2_info. Clients should check
/// blobstore2_info first, since v1 is being deprecated.
/// - "INLINE" : Data is included into this proto buffer
/// - "GET_MEDIA" : Data should be accessed from the current service using the
/// operation GetMedia.
/// - "COMPOSITE_MEDIA" : The content for this media object is stored across
/// multiple partial media objects under the composite_media field.
/// - "BIGSTORE_REF" : Reference points to a bigstore object
/// - "DIFF_VERSION_RESPONSE" : Indicates the data is stored in
/// diff_version_response.
/// - "DIFF_CHECKSUMS_RESPONSE" : Indicates the data is stored in
/// diff_checksums_response.
/// - "DIFF_DOWNLOAD_RESPONSE" : Indicates the data is stored in
/// diff_download_response.
/// - "DIFF_UPLOAD_REQUEST" : Indicates the data is stored in
/// diff_upload_request.
/// - "DIFF_UPLOAD_RESPONSE" : Indicates the data is stored in
/// diff_upload_response.
/// - "COSMO_BINARY_REFERENCE" : Indicates the data is stored in
/// cosmo_binary_reference.
/// - "ARBITRARY_BYTES" : Informs Scotty to generate a response payload with
/// the size specified in the length field. The contents of the payload are
/// generated by Scotty and are undefined. This is useful for testing download
/// speeds between the user and Scotty without involving a real payload
/// source. Note: range is not supported when using arbitrary_bytes.
core.String? referenceType;
/// Scotty-provided SHA1 hash for an upload.
core.String? sha1Hash;
core.List<core.int> get sha1HashAsBytes => convert.base64.decode(sha1Hash!);
set sha1HashAsBytes(core.List<core.int> bytes_) {
sha1Hash = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Scotty-provided SHA256 hash for an upload.
core.String? sha256Hash;
core.List<core.int> get sha256HashAsBytes =>
convert.base64.decode(sha256Hash!);
set sha256HashAsBytes(core.List<core.int> bytes_) {
sha256Hash = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// Time at which the media data was last updated, in milliseconds since UNIX
/// epoch
core.String? timestamp;
/// A unique fingerprint/version id for the media data
core.String? token;
Media({
this.algorithm,
this.bigstoreObjectRef,
this.blobRef,
this.blobstore2Info,
this.compositeMedia,
this.contentType,
this.contentTypeInfo,
this.cosmoBinaryReference,
this.crc32cHash,
this.diffChecksumsResponse,
this.diffDownloadResponse,
this.diffUploadRequest,
this.diffUploadResponse,
this.diffVersionResponse,
this.downloadParameters,
this.filename,
this.hash,
this.hashVerified,
this.inline,
this.isPotentialRetry,
this.length,
this.md5Hash,
this.mediaId,
this.objectId,
this.path,
this.referenceType,
this.sha1Hash,
this.sha256Hash,
this.timestamp,
this.token,
});
Media.fromJson(core.Map json_)
: this(
algorithm: json_['algorithm'] as core.String?,
bigstoreObjectRef: json_['bigstoreObjectRef'] as core.String?,
blobRef: json_['blobRef'] as core.String?,
blobstore2Info:
json_.containsKey('blobstore2Info')
? Blobstore2Info.fromJson(
json_['blobstore2Info']
as core.Map<core.String, core.dynamic>,
)
: null,
compositeMedia:
(json_['compositeMedia'] as core.List?)
?.map(
(value) => CompositeMedia.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
contentType: json_['contentType'] as core.String?,
contentTypeInfo:
json_.containsKey('contentTypeInfo')
? ContentTypeInfo.fromJson(
json_['contentTypeInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
cosmoBinaryReference: json_['cosmoBinaryReference'] as core.String?,
crc32cHash: json_['crc32cHash'] as core.int?,
diffChecksumsResponse:
json_.containsKey('diffChecksumsResponse')
? DiffChecksumsResponse.fromJson(
json_['diffChecksumsResponse']
as core.Map<core.String, core.dynamic>,
)
: null,
diffDownloadResponse:
json_.containsKey('diffDownloadResponse')
? DiffDownloadResponse.fromJson(
json_['diffDownloadResponse']
as core.Map<core.String, core.dynamic>,
)
: null,
diffUploadRequest:
json_.containsKey('diffUploadRequest')
? DiffUploadRequest.fromJson(
json_['diffUploadRequest']
as core.Map<core.String, core.dynamic>,
)
: null,
diffUploadResponse:
json_.containsKey('diffUploadResponse')
? DiffUploadResponse.fromJson(
json_['diffUploadResponse']
as core.Map<core.String, core.dynamic>,
)
: null,
diffVersionResponse:
json_.containsKey('diffVersionResponse')
? DiffVersionResponse.fromJson(
json_['diffVersionResponse']
as core.Map<core.String, core.dynamic>,
)
: null,
downloadParameters:
json_.containsKey('downloadParameters')
? DownloadParameters.fromJson(
json_['downloadParameters']
as core.Map<core.String, core.dynamic>,
)
: null,
filename: json_['filename'] as core.String?,
hash: json_['hash'] as core.String?,
hashVerified: json_['hashVerified'] as core.bool?,
inline: json_['inline'] as core.String?,
isPotentialRetry: json_['isPotentialRetry'] as core.bool?,
length: json_['length'] as core.String?,
md5Hash: json_['md5Hash'] as core.String?,
mediaId: json_['mediaId'] as core.String?,
objectId:
json_.containsKey('objectId')
? ObjectId.fromJson(
json_['objectId'] as core.Map<core.String, core.dynamic>,
)
: null,
path: json_['path'] as core.String?,
referenceType: json_['referenceType'] as core.String?,
sha1Hash: json_['sha1Hash'] as core.String?,
sha256Hash: json_['sha256Hash'] as core.String?,
timestamp: json_['timestamp'] as core.String?,
token: json_['token'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (algorithm != null) 'algorithm': algorithm!,
if (bigstoreObjectRef != null) 'bigstoreObjectRef': bigstoreObjectRef!,
if (blobRef != null) 'blobRef': blobRef!,
if (blobstore2Info != null) 'blobstore2Info': blobstore2Info!,
if (compositeMedia != null) 'compositeMedia': compositeMedia!,
if (contentType != null) 'contentType': contentType!,
if (contentTypeInfo != null) 'contentTypeInfo': contentTypeInfo!,
if (cosmoBinaryReference != null)
'cosmoBinaryReference': cosmoBinaryReference!,
if (crc32cHash != null) 'crc32cHash': crc32cHash!,
if (diffChecksumsResponse != null)
'diffChecksumsResponse': diffChecksumsResponse!,
if (diffDownloadResponse != null)
'diffDownloadResponse': diffDownloadResponse!,
if (diffUploadRequest != null) 'diffUploadRequest': diffUploadRequest!,
if (diffUploadResponse != null) 'diffUploadResponse': diffUploadResponse!,
if (diffVersionResponse != null)
'diffVersionResponse': diffVersionResponse!,
if (downloadParameters != null) 'downloadParameters': downloadParameters!,
if (filename != null) 'filename': filename!,
if (hash != null) 'hash': hash!,
if (hashVerified != null) 'hashVerified': hashVerified!,
if (inline != null) 'inline': inline!,
if (isPotentialRetry != null) 'isPotentialRetry': isPotentialRetry!,
if (length != null) 'length': length!,
if (md5Hash != null) 'md5Hash': md5Hash!,
if (mediaId != null) 'mediaId': mediaId!,
if (objectId != null) 'objectId': objectId!,
if (path != null) 'path': path!,
if (referenceType != null) 'referenceType': referenceType!,
if (sha1Hash != null) 'sha1Hash': sha1Hash!,
if (sha256Hash != null) 'sha256Hash': sha256Hash!,
if (timestamp != null) 'timestamp': timestamp!,
if (token != null) 'token': token!,
};
}
/// Extra information added to operations that support Scotty media requests.
class MediaRequestInfo {
/// The number of current bytes uploaded or downloaded.
core.String? currentBytes;
/// Data to be copied to backend requests.
///
/// Custom data is returned to Scotty in the agent_state field, which Scotty
/// will then provide in subsequent upload notifications.
core.String? customData;
/// Set if the http request info is diff encoded.
///
/// The value of this field is the version number of the base revision. This
/// is corresponding to Apiary's mediaDiffObjectVersion
/// (//depot/google3/java/com/google/api/server/media/variable/DiffObjectVersionVariable.java).
/// See go/esf-scotty-diff-upload for more information.
core.String? diffObjectVersion;
/// The existence of the final_status field indicates that this is the last
/// call to the agent for this request_id.
///
/// http://google3/uploader/agent/scotty_agent.proto?l=737&rcl=347601929
core.int? finalStatus;
/// The type of notification received from Scotty.
/// Possible string values are:
/// - "START" : Such requests signals the start of a request containing media
/// upload. Only the media field(s) in the inserted/updated resource are set.
/// The response should either return an error or succeed. On success,
/// responses don't need to contain anything.
/// - "PROGRESS" : Such requests signals that the upload has progressed and
/// that the backend might want to access the media file specified in relevant
/// fields in the resource. Only the media field(s) in the inserted/updated
/// resource are set. The response should either return an error or succeed.
/// On success, responses don't need to contain anything.
/// - "END" : Such requests signals the end of a request containing media
/// upload. END should be handled just like normal Insert/Upload requests,
/// that is, they should process the request and return a complete resource in
/// the response. Pointers to media data (a GFS path usually) appear in the
/// relevant fields in the inserted/updated resource. See gdata.Media in
/// data.proto.
/// - "RESPONSE_SENT" : Such requests occur after an END and signal that the
/// response has been sent back to the client. RESPONSE_SENT is only sent to
/// the backend if it is configured to receive them. The response does not
/// need to contain anything.
/// - "ERROR" : Such requests indicate that an error occurred while processing
/// the request. ERROR is only sent to the backend if it is configured to
/// receive them. It is not guaranteed that all errors will result in this
/// notification to the backend, even if the backend requests them. Since
/// these requests are just for informational purposes, the response does not
/// need to contain anything.
core.String? notificationType;
/// The physical headers provided by RequestReceivedParameters in Scotty
/// request.
///
/// type is uploader_service.KeyValuePairs.
core.String? physicalHeaders;
core.List<core.int> get physicalHeadersAsBytes =>
convert.base64.decode(physicalHeaders!);
set physicalHeadersAsBytes(core.List<core.int> bytes_) {
physicalHeaders = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// The Scotty request ID.
core.String? requestId;
/// The partition of the Scotty server handling this request.
///
/// type is uploader_service.RequestReceivedParamsServingInfo
/// LINT.IfChange(request_received_params_serving_info_annotations)
/// LINT.ThenChange()
core.String? requestReceivedParamsServingInfo;
core.List<core.int> get requestReceivedParamsServingInfoAsBytes =>
convert.base64.decode(requestReceivedParamsServingInfo!);
set requestReceivedParamsServingInfoAsBytes(core.List<core.int> bytes_) {
requestReceivedParamsServingInfo = convert.base64
.encode(bytes_)
.replaceAll('/', '_')
.replaceAll('+', '-');
}
/// The total size of the file.
core.String? totalBytes;
/// Whether the total bytes field contains an estimated data.
core.bool? totalBytesIsEstimated;
MediaRequestInfo({
this.currentBytes,
this.customData,
this.diffObjectVersion,
this.finalStatus,
this.notificationType,
this.physicalHeaders,
this.requestId,
this.requestReceivedParamsServingInfo,
this.totalBytes,
this.totalBytesIsEstimated,
});
MediaRequestInfo.fromJson(core.Map json_)
: this(
currentBytes: json_['currentBytes'] as core.String?,
customData: json_['customData'] as core.String?,
diffObjectVersion: json_['diffObjectVersion'] as core.String?,
finalStatus: json_['finalStatus'] as core.int?,
notificationType: json_['notificationType'] as core.String?,
physicalHeaders: json_['physicalHeaders'] as core.String?,
requestId: json_['requestId'] as core.String?,
requestReceivedParamsServingInfo:
json_['requestReceivedParamsServingInfo'] as core.String?,
totalBytes: json_['totalBytes'] as core.String?,
totalBytesIsEstimated: json_['totalBytesIsEstimated'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (currentBytes != null) 'currentBytes': currentBytes!,
if (customData != null) 'customData': customData!,
if (diffObjectVersion != null) 'diffObjectVersion': diffObjectVersion!,
if (finalStatus != null) 'finalStatus': finalStatus!,
if (notificationType != null) 'notificationType': notificationType!,
if (physicalHeaders != null) 'physicalHeaders': physicalHeaders!,
if (requestId != null) 'requestId': requestId!,
if (requestReceivedParamsServingInfo != null)
'requestReceivedParamsServingInfo': requestReceivedParamsServingInfo!,
if (totalBytes != null) 'totalBytes': totalBytes!,
if (totalBytesIsEstimated != null)
'totalBytesIsEstimated': totalBytesIsEstimated!,
};
}
/// Locations of interest for this class or object.
///
/// Currently, this location is used for geofenced notifications. When a user is
/// within a set radius of this lat/long, and dwells there, Google will trigger
/// a notification. When a user exits this radius, the notification will be
/// hidden.
class MerchantLocation {
/// The latitude specified as any value in the range of -90.0 through +90.0,
/// both inclusive.
///
/// Values outside these bounds will be rejected.
core.double? latitude;
/// The longitude specified in the range -180.0 through +180.0, both
/// inclusive.
///
/// Values outside these bounds will be rejected.
core.double? longitude;
MerchantLocation({this.latitude, this.longitude});
MerchantLocation.fromJson(core.Map json_)
: this(
latitude: (json_['latitude'] as core.num?)?.toDouble(),
longitude: (json_['longitude'] as core.num?)?.toDouble(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (latitude != null) 'latitude': latitude!,
if (longitude != null) 'longitude': longitude!,
};
}
/// A message that will be displayed with a Valuable
class Message {
/// The message body.
core.String? body;
/// The period of time that the message will be displayed to users.
///
/// You can define both a `startTime` and `endTime` for each message. A
/// message is displayed immediately after a Wallet Object is inserted unless
/// a `startTime` is set. The message will appear in a list of messages
/// indefinitely if `endTime` is not provided.
TimeInterval? displayInterval;
/// The message header.
core.String? header;
/// The ID associated with a message.
///
/// This field is here to enable ease of management of messages. Notice ID
/// values could possibly duplicate across multiple messages in the same
/// class/instance, and care must be taken to select a reasonable ID for each
/// message.
core.String? id;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#walletObjectMessage"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Translated strings for the message body.
LocalizedString? localizedBody;
/// Translated strings for the message header.
LocalizedString? localizedHeader;
/// The message type.
/// Possible string values are:
/// - "MESSAGE_TYPE_UNSPECIFIED"
/// - "TEXT" : Renders the message as text on the card details screen. This is
/// the default message type.
/// - "text" : Legacy alias for `TEXT`. Deprecated.
/// - "EXPIRATION_NOTIFICATION" : Note: This enum is currently not supported.
/// - "expirationNotification" : Legacy alias for `EXPIRATION_NOTIFICATION`.
/// Deprecated.
/// - "TEXT_AND_NOTIFY" : Renders the message as text on the card details
/// screen and as an Android notification.
core.String? messageType;
Message({
this.body,
this.displayInterval,
this.header,
this.id,
this.kind,
this.localizedBody,
this.localizedHeader,
this.messageType,
});
Message.fromJson(core.Map json_)
: this(
body: json_['body'] as core.String?,
displayInterval:
json_.containsKey('displayInterval')
? TimeInterval.fromJson(
json_['displayInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
header: json_['header'] as core.String?,
id: json_['id'] as core.String?,
kind: json_['kind'] as core.String?,
localizedBody:
json_.containsKey('localizedBody')
? LocalizedString.fromJson(
json_['localizedBody'] as core.Map<core.String, core.dynamic>,
)
: null,
localizedHeader:
json_.containsKey('localizedHeader')
? LocalizedString.fromJson(
json_['localizedHeader']
as core.Map<core.String, core.dynamic>,
)
: null,
messageType: json_['messageType'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (body != null) 'body': body!,
if (displayInterval != null) 'displayInterval': displayInterval!,
if (header != null) 'header': header!,
if (id != null) 'id': id!,
if (kind != null) 'kind': kind!,
if (localizedBody != null) 'localizedBody': localizedBody!,
if (localizedHeader != null) 'localizedHeader': localizedHeader!,
if (messageType != null) 'messageType': messageType!,
};
}
class ModifyLinkedOfferObjects {
/// The linked offer object ids to add to the object.
core.List<core.String>? addLinkedOfferObjectIds;
/// The linked offer object ids to remove from the object.
core.List<core.String>? removeLinkedOfferObjectIds;
ModifyLinkedOfferObjects({
this.addLinkedOfferObjectIds,
this.removeLinkedOfferObjectIds,
});
ModifyLinkedOfferObjects.fromJson(core.Map json_)
: this(
addLinkedOfferObjectIds:
(json_['addLinkedOfferObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
removeLinkedOfferObjectIds:
(json_['removeLinkedOfferObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (addLinkedOfferObjectIds != null)
'addLinkedOfferObjectIds': addLinkedOfferObjectIds!,
if (removeLinkedOfferObjectIds != null)
'removeLinkedOfferObjectIds': removeLinkedOfferObjectIds!,
};
}
class ModifyLinkedOfferObjectsRequest {
/// The linked offer object ids to add or remove from the object.
ModifyLinkedOfferObjects? linkedOfferObjectIds;
ModifyLinkedOfferObjectsRequest({this.linkedOfferObjectIds});
ModifyLinkedOfferObjectsRequest.fromJson(core.Map json_)
: this(
linkedOfferObjectIds:
json_.containsKey('linkedOfferObjectIds')
? ModifyLinkedOfferObjects.fromJson(
json_['linkedOfferObjectIds']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (linkedOfferObjectIds != null)
'linkedOfferObjectIds': linkedOfferObjectIds!,
};
}
/// Constraints that all must be met for the module to be shown.
class ModuleViewConstraints {
/// The period of time that the module will be displayed to users.
///
/// Can define both a `startTime` and `endTime`. The module is displayed
/// immediately after insertion unless a `startTime` is set. The module is
/// displayed indefinitely if `endTime` is not set.
TimeInterval? displayInterval;
ModuleViewConstraints({this.displayInterval});
ModuleViewConstraints.fromJson(core.Map json_)
: this(
displayInterval:
json_.containsKey('displayInterval')
? TimeInterval.fromJson(
json_['displayInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (displayInterval != null) 'displayInterval': displayInterval!,
};
}
class Money {
/// The currency code, such as "USD" or "EUR."
core.String? currencyCode;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#money"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// The unit of money amount in micros.
///
/// For example, $1 USD would be represented as 1000000 micros.
core.String? micros;
Money({this.currencyCode, this.kind, this.micros});
Money.fromJson(core.Map json_)
: this(
currencyCode: json_['currencyCode'] as core.String?,
kind: json_['kind'] as core.String?,
micros: json_['micros'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (currencyCode != null) 'currencyCode': currencyCode!,
if (kind != null) 'kind': kind!,
if (micros != null) 'micros': micros!,
};
}
/// Indicates if the object needs to have notification enabled.
///
/// We support only one of ExpiryNotification/UpcomingNotification.
/// `expiryNotification` takes precedence over `upcomingNotification`. In other
/// words if `expiryNotification` is set, we ignore the `upcomingNotification`
/// field.
class Notifications {
/// A notification would be triggered at a specific time before the card
/// expires.
ExpiryNotification? expiryNotification;
/// A notification would be triggered at a specific time before the card
/// becomes usable.
UpcomingNotification? upcomingNotification;
Notifications({this.expiryNotification, this.upcomingNotification});
Notifications.fromJson(core.Map json_)
: this(
expiryNotification:
json_.containsKey('expiryNotification')
? ExpiryNotification.fromJson(
json_['expiryNotification']
as core.Map<core.String, core.dynamic>,
)
: null,
upcomingNotification:
json_.containsKey('upcomingNotification')
? UpcomingNotification.fromJson(
json_['upcomingNotification']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (expiryNotification != null) 'expiryNotification': expiryNotification!,
if (upcomingNotification != null)
'upcomingNotification': upcomingNotification!,
};
}
/// This is a copy of the tech.blob.ObjectId proto, which could not be used
/// directly here due to transitive closure issues with JavaScript support; see
/// http://b/8801763.
typedef ObjectId = $ObjectId;
class OfferClass {
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// The details of the offer.
core.String? details;
/// Identifies whether this class supports Smart Tap.
///
/// The `redemptionIssuers` and object level `smartTapRedemptionLevel` fields
/// must also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// The fine print or terms of the offer, such as "20% off any t-shirt at
/// Adam's Apparel."
core.String? finePrint;
/// The help link for the offer, such as `http://myownpersonaldomain.com/help`
Uri? helpUri;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#offerClass"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// Translated strings for the details.
LocalizedString? localizedDetails;
/// Translated strings for the fine_print.
LocalizedString? localizedFinePrint;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Translated strings for the provider.
///
/// Recommended maximum length is 12 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedProvider;
/// Translated strings for the short title.
///
/// Recommended maximum length is 20 characters.
LocalizedString? localizedShortTitle;
/// Translated strings for the title.
///
/// Recommended maximum length is 60 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedTitle;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If not specified, no notification will be triggered.
/// This setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// The offer provider (either the aggregator name or merchant name).
///
/// Recommended maximum length is 12 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? provider;
/// The redemption channels applicable to this offer.
///
/// Required.
/// Possible string values are:
/// - "REDEMPTION_CHANNEL_UNSPECIFIED"
/// - "INSTORE"
/// - "instore" : Legacy alias for `INSTORE`. Deprecated.
/// - "ONLINE"
/// - "online" : Legacy alias for `ONLINE`. Deprecated.
/// - "BOTH"
/// - "both" : Legacy alias for `BOTH`. Deprecated.
/// - "TEMPORARY_PRICE_REDUCTION"
/// - "temporaryPriceReduction" : Legacy alias for
/// `TEMPORARY_PRICE_REDUCTION`. Deprecated.
core.String? redemptionChannel;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or The status of the class. This field
/// can be set to `draft` or `underReview` using the insert, patch, or update
/// API calls. Once the review state is changed from `draft` it may not be
/// changed back to `draft`. You should keep this field to `draft` when the
/// class is under development. A `draft` class cannot be used to create any
/// object. You should set this field to `underReview` when you believe the
/// class is ready for use. The platform will automatically set this field to
/// `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// A shortened version of the title of the offer, such as "20% off," shown to
/// users as a quick reference to the offer contents.
///
/// Recommended maximum length is 20 characters.
core.String? shortTitle;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The title of the offer, such as "20% off any t-shirt." Recommended maximum
/// length is 60 characters to ensure full string is displayed on smaller
/// screens.
///
/// Required.
core.String? title;
/// The title image of the offer.
///
/// This image is displayed in both the details and list views of the app.
Image? titleImage;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the offer.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// The wide title image of the offer.
///
/// When provided, this will be used in place of the title image in the top
/// left of the card view.
Image? wideTitleImage;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
OfferClass({
this.allowMultipleUsersPerObject,
this.appLinkData,
this.callbackOptions,
this.classTemplateInfo,
this.countryCode,
this.details,
this.enableSmartTap,
this.finePrint,
this.helpUri,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.kind,
this.linksModuleData,
this.localizedDetails,
this.localizedFinePrint,
this.localizedIssuerName,
this.localizedProvider,
this.localizedShortTitle,
this.localizedTitle,
this.locations,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.provider,
this.redemptionChannel,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.securityAnimation,
this.shortTitle,
this.textModulesData,
this.title,
this.titleImage,
this.valueAddedModuleData,
this.version,
this.viewUnlockRequirement,
this.wideTitleImage,
this.wordMark,
});
OfferClass.fromJson(core.Map json_)
: this(
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
countryCode: json_['countryCode'] as core.String?,
details: json_['details'] as core.String?,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
finePrint: json_['finePrint'] as core.String?,
helpUri:
json_.containsKey('helpUri')
? Uri.fromJson(
json_['helpUri'] as core.Map<core.String, core.dynamic>,
)
: null,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
kind: json_['kind'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedDetails:
json_.containsKey('localizedDetails')
? LocalizedString.fromJson(
json_['localizedDetails']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedFinePrint:
json_.containsKey('localizedFinePrint')
? LocalizedString.fromJson(
json_['localizedFinePrint']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedProvider:
json_.containsKey('localizedProvider')
? LocalizedString.fromJson(
json_['localizedProvider']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedShortTitle:
json_.containsKey('localizedShortTitle')
? LocalizedString.fromJson(
json_['localizedShortTitle']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedTitle:
json_.containsKey('localizedTitle')
? LocalizedString.fromJson(
json_['localizedTitle']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
provider: json_['provider'] as core.String?,
redemptionChannel: json_['redemptionChannel'] as core.String?,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
shortTitle: json_['shortTitle'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
title: json_['title'] as core.String?,
titleImage:
json_.containsKey('titleImage')
? Image.fromJson(
json_['titleImage'] as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
wideTitleImage:
json_.containsKey('wideTitleImage')
? Image.fromJson(
json_['wideTitleImage']
as core.Map<core.String, core.dynamic>,
)
: null,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (countryCode != null) 'countryCode': countryCode!,
if (details != null) 'details': details!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (finePrint != null) 'finePrint': finePrint!,
if (helpUri != null) 'helpUri': helpUri!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (kind != null) 'kind': kind!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localizedDetails != null) 'localizedDetails': localizedDetails!,
if (localizedFinePrint != null) 'localizedFinePrint': localizedFinePrint!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (localizedProvider != null) 'localizedProvider': localizedProvider!,
if (localizedShortTitle != null)
'localizedShortTitle': localizedShortTitle!,
if (localizedTitle != null) 'localizedTitle': localizedTitle!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (provider != null) 'provider': provider!,
if (redemptionChannel != null) 'redemptionChannel': redemptionChannel!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (shortTitle != null) 'shortTitle': shortTitle!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (title != null) 'title': title!,
if (titleImage != null) 'titleImage': titleImage!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (wideTitleImage != null) 'wideTitleImage': wideTitleImage!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class OfferClassAddMessageResponse {
/// The updated OfferClass resource.
OfferClass? resource;
OfferClassAddMessageResponse({this.resource});
OfferClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? OfferClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class OfferClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<OfferClass>? resources;
OfferClassListResponse({this.pagination, this.resources});
OfferClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => OfferClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class OfferObject {
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
Barcode? barcode;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
OfferClass? classReference;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for offers.
core.bool? disableExpirationNotification;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#offerObject"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this offer object.
///
/// If a user had saved this offer, then these linked_object_ids would be
/// automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID.identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
OfferObject({
this.appLinkData,
this.barcode,
this.classId,
this.classReference,
this.disableExpirationNotification,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.id,
this.imageModulesData,
this.infoModuleData,
this.kind,
this.linkedObjectIds,
this.linksModuleData,
this.locations,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.rotatingBarcode,
this.saveRestrictions,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
OfferObject.fromJson(core.Map json_)
: this(
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? OfferClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (kind != null) 'kind': kind!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class OfferObjectAddMessageResponse {
/// The updated OfferObject resource.
OfferObject? resource;
OfferObjectAddMessageResponse({this.resource});
OfferObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? OfferObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class OfferObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<OfferObject>? resources;
OfferObjectListResponse({this.pagination, this.resources});
OfferObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => OfferObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class Pagination {
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#pagination"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Page token to send to fetch the next page.
core.String? nextPageToken;
/// Number of results returned in this page.
core.int? resultsPerPage;
Pagination({this.kind, this.nextPageToken, this.resultsPerPage});
Pagination.fromJson(core.Map json_)
: this(
kind: json_['kind'] as core.String?,
nextPageToken: json_['nextPageToken'] as core.String?,
resultsPerPage: json_['resultsPerPage'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (kind != null) 'kind': kind!,
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
if (resultsPerPage != null) 'resultsPerPage': resultsPerPage!,
};
}
/// Container for any constraints that may be placed on passes.
class PassConstraints {
/// The NFC constraints for the pass.
core.List<core.String>? nfcConstraint;
/// The screenshot eligibility for the pass.
/// Possible string values are:
/// - "SCREENSHOT_ELIGIBILITY_UNSPECIFIED" : Default value, same as ELIGIBLE.
/// - "ELIGIBLE" : Default behavior for all existing Passes if
/// ScreenshotEligibility is not set. Allows screenshots to be taken on
/// Android devices.
/// - "INELIGIBLE" : Disallows screenshots to be taken on Android devices.
/// Note that older versions of Wallet may still allow screenshots to be
/// taken.
core.String? screenshotEligibility;
PassConstraints({this.nfcConstraint, this.screenshotEligibility});
PassConstraints.fromJson(core.Map json_)
: this(
nfcConstraint:
(json_['nfcConstraint'] as core.List?)
?.map((value) => value as core.String)
.toList(),
screenshotEligibility: json_['screenshotEligibility'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (nfcConstraint != null) 'nfcConstraint': nfcConstraint!,
if (screenshotEligibility != null)
'screenshotEligibility': screenshotEligibility!,
};
}
class Permission {
/// The email address of the user, group, or service account to which this
/// permission refers to.
core.String? emailAddress;
/// The role granted by this permission.
/// Possible string values are:
/// - "ROLE_UNSPECIFIED"
/// - "OWNER"
/// - "owner" : Legacy alias for `OWNER`. Deprecated.
/// - "READER"
/// - "reader" : Legacy alias for `READER`. Deprecated.
/// - "WRITER"
/// - "writer" : Legacy alias for `WRITER`. Deprecated.
core.String? role;
Permission({this.emailAddress, this.role});
Permission.fromJson(core.Map json_)
: this(
emailAddress: json_['emailAddress'] as core.String?,
role: json_['role'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (emailAddress != null) 'emailAddress': emailAddress!,
if (role != null) 'role': role!,
};
}
class Permissions {
/// ID of the issuer the list of permissions refer to.
core.String? issuerId;
/// The complete list of permissions for the issuer account.
core.List<Permission>? permissions;
Permissions({this.issuerId, this.permissions});
Permissions.fromJson(core.Map json_)
: this(
issuerId: json_['issuerId'] as core.String?,
permissions:
(json_['permissions'] as core.List?)
?.map(
(value) => Permission.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (issuerId != null) 'issuerId': issuerId!,
if (permissions != null) 'permissions': permissions!,
};
}
class PurchaseDetails {
/// ID of the account used to purchase the ticket.
core.String? accountId;
/// The confirmation code for the purchase.
///
/// This may be the same for multiple different tickets and is used to group
/// tickets together.
core.String? confirmationCode;
/// The purchase date/time of the ticket.
///
/// This is an ISO 8601 extended format date/time, with or without an offset.
/// Time may be specified up to nanosecond precision. Offsets may be specified
/// with seconds precision (even though offset seconds is not part of ISO
/// 8601). For example: `1985-04-12T23:20:50.52Z` would be 20 minutes and
/// 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. Without offset information, some rich features may not be
/// available.
core.String? purchaseDateTime;
/// Receipt number/identifier for tracking the ticket purchase via the body
/// that sold the ticket.
core.String? purchaseReceiptNumber;
/// The cost of the ticket.
TicketCost? ticketCost;
PurchaseDetails({
this.accountId,
this.confirmationCode,
this.purchaseDateTime,
this.purchaseReceiptNumber,
this.ticketCost,
});
PurchaseDetails.fromJson(core.Map json_)
: this(
accountId: json_['accountId'] as core.String?,
confirmationCode: json_['confirmationCode'] as core.String?,
purchaseDateTime: json_['purchaseDateTime'] as core.String?,
purchaseReceiptNumber: json_['purchaseReceiptNumber'] as core.String?,
ticketCost:
json_.containsKey('ticketCost')
? TicketCost.fromJson(
json_['ticketCost'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (accountId != null) 'accountId': accountId!,
if (confirmationCode != null) 'confirmationCode': confirmationCode!,
if (purchaseDateTime != null) 'purchaseDateTime': purchaseDateTime!,
if (purchaseReceiptNumber != null)
'purchaseReceiptNumber': purchaseReceiptNumber!,
if (ticketCost != null) 'ticketCost': ticketCost!,
};
}
class ReservationInfo {
/// Confirmation code needed to check into this flight.
///
/// This is the number that the passenger would enter into a kiosk at the
/// airport to look up the flight and print a boarding pass.
core.String? confirmationCode;
/// E-ticket number.
core.String? eticketNumber;
/// Frequent flyer membership information.
FrequentFlyerInfo? frequentFlyerInfo;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#reservationInfo"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
ReservationInfo({
this.confirmationCode,
this.eticketNumber,
this.frequentFlyerInfo,
this.kind,
});
ReservationInfo.fromJson(core.Map json_)
: this(
confirmationCode: json_['confirmationCode'] as core.String?,
eticketNumber: json_['eticketNumber'] as core.String?,
frequentFlyerInfo:
json_.containsKey('frequentFlyerInfo')
? FrequentFlyerInfo.fromJson(
json_['frequentFlyerInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (confirmationCode != null) 'confirmationCode': confirmationCode!,
if (eticketNumber != null) 'eticketNumber': eticketNumber!,
if (frequentFlyerInfo != null) 'frequentFlyerInfo': frequentFlyerInfo!,
if (kind != null) 'kind': kind!,
};
}
class Resources {
/// A list of event ticket classes.
core.List<EventTicketClass>? eventTicketClasses;
/// A list of event ticket objects.
core.List<EventTicketObject>? eventTicketObjects;
/// A list of flight classes.
core.List<FlightClass>? flightClasses;
/// A list of flight objects.
core.List<FlightObject>? flightObjects;
/// A list of generic classes.
core.List<GenericClass>? genericClasses;
/// A list of generic objects.
core.List<GenericObject>? genericObjects;
/// A list of gift card classes.
core.List<GiftCardClass>? giftCardClasses;
/// A list of gift card objects.
core.List<GiftCardObject>? giftCardObjects;
/// A list of loyalty classes.
core.List<LoyaltyClass>? loyaltyClasses;
/// A list of loyalty objects.
core.List<LoyaltyObject>? loyaltyObjects;
/// A list of offer classes.
core.List<OfferClass>? offerClasses;
/// A list of offer objects.
core.List<OfferObject>? offerObjects;
/// A list of transit classes.
core.List<TransitClass>? transitClasses;
/// A list of transit objects.
core.List<TransitObject>? transitObjects;
Resources({
this.eventTicketClasses,
this.eventTicketObjects,
this.flightClasses,
this.flightObjects,
this.genericClasses,
this.genericObjects,
this.giftCardClasses,
this.giftCardObjects,
this.loyaltyClasses,
this.loyaltyObjects,
this.offerClasses,
this.offerObjects,
this.transitClasses,
this.transitObjects,
});
Resources.fromJson(core.Map json_)
: this(
eventTicketClasses:
(json_['eventTicketClasses'] as core.List?)
?.map(
(value) => EventTicketClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
eventTicketObjects:
(json_['eventTicketObjects'] as core.List?)
?.map(
(value) => EventTicketObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
flightClasses:
(json_['flightClasses'] as core.List?)
?.map(
(value) => FlightClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
flightObjects:
(json_['flightObjects'] as core.List?)
?.map(
(value) => FlightObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
genericClasses:
(json_['genericClasses'] as core.List?)
?.map(
(value) => GenericClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
genericObjects:
(json_['genericObjects'] as core.List?)
?.map(
(value) => GenericObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
giftCardClasses:
(json_['giftCardClasses'] as core.List?)
?.map(
(value) => GiftCardClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
giftCardObjects:
(json_['giftCardObjects'] as core.List?)
?.map(
(value) => GiftCardObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
loyaltyClasses:
(json_['loyaltyClasses'] as core.List?)
?.map(
(value) => LoyaltyClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
loyaltyObjects:
(json_['loyaltyObjects'] as core.List?)
?.map(
(value) => LoyaltyObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
offerClasses:
(json_['offerClasses'] as core.List?)
?.map(
(value) => OfferClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
offerObjects:
(json_['offerObjects'] as core.List?)
?.map(
(value) => OfferObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
transitClasses:
(json_['transitClasses'] as core.List?)
?.map(
(value) => TransitClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
transitObjects:
(json_['transitObjects'] as core.List?)
?.map(
(value) => TransitObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (eventTicketClasses != null) 'eventTicketClasses': eventTicketClasses!,
if (eventTicketObjects != null) 'eventTicketObjects': eventTicketObjects!,
if (flightClasses != null) 'flightClasses': flightClasses!,
if (flightObjects != null) 'flightObjects': flightObjects!,
if (genericClasses != null) 'genericClasses': genericClasses!,
if (genericObjects != null) 'genericObjects': genericObjects!,
if (giftCardClasses != null) 'giftCardClasses': giftCardClasses!,
if (giftCardObjects != null) 'giftCardObjects': giftCardObjects!,
if (loyaltyClasses != null) 'loyaltyClasses': loyaltyClasses!,
if (loyaltyObjects != null) 'loyaltyObjects': loyaltyObjects!,
if (offerClasses != null) 'offerClasses': offerClasses!,
if (offerObjects != null) 'offerObjects': offerObjects!,
if (transitClasses != null) 'transitClasses': transitClasses!,
if (transitObjects != null) 'transitObjects': transitObjects!,
};
}
class Review {
core.String? comments;
Review({this.comments});
Review.fromJson(core.Map json_)
: this(comments: json_['comments'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (comments != null) 'comments': comments!,
};
}
class RotatingBarcode {
/// An optional text that will override the default text that shows under the
/// barcode.
///
/// This field is intended for a human readable equivalent of the barcode
/// value, used when the barcode cannot be scanned.
core.String? alternateText;
/// Input only.
///
/// NOTE: This feature is only available for the transit vertical. Optional
/// set of initial rotating barcode values. This allows a small subset of
/// barcodes to be included with the object. Further rotating barcode values
/// must be uploaded with the UploadRotatingBarcodeValues endpoint.
RotatingBarcodeValues? initialRotatingBarcodeValues;
/// The render encoding for the barcode.
///
/// When specified, barcode is rendered in the given encoding. Otherwise best
/// known encoding is chosen by Google.
/// Possible string values are:
/// - "RENDER_ENCODING_UNSPECIFIED"
/// - "UTF_8" : UTF_8 encoding for barcodes. This is only supported for
/// barcode type qrCode.
core.String? renderEncoding;
/// Optional text that will be shown when the barcode is hidden behind a click
/// action.
///
/// This happens in cases where a pass has Smart Tap enabled. If not
/// specified, a default is chosen by Google.
LocalizedString? showCodeText;
/// Details used to evaluate the {totp_value_n} substitutions.
RotatingBarcodeTotpDetails? totpDetails;
/// The type of this barcode.
/// Possible string values are:
/// - "BARCODE_TYPE_UNSPECIFIED"
/// - "AZTEC" : Not supported for Rotating Barcodes.
/// - "aztec" : Legacy alias for `AZTEC`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODE_39" : Not supported for Rotating Barcodes.
/// - "code39" : Legacy alias for `CODE_39`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODE_128" : Not supported for Rotating Barcodes.
/// - "code128" : Legacy alias for `CODE_128`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "CODABAR" : Not supported for Rotating Barcodes.
/// - "codabar" : Legacy alias for `CODABAR`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "DATA_MATRIX" : A 2D matrix barcode consisting of black and white. Cells
/// or modules are arranged in either a square or rectangle. Not supported for
/// Rotating Barcodes.
/// - "dataMatrix" : Legacy alias for `DATA_MATRIX`. Deprecated. Not supported
/// for Rotating Barcodes.
/// - "EAN_8" : Not supported for Rotating Barcodes.
/// - "ean8" : Legacy alias for `EAN_8`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "EAN_13" : Not supported for Rotating Barcodes.
/// - "ean13" : Legacy alias for `EAN_13`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "EAN13" : Legacy alias for `EAN_13`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "ITF_14" : 14 digit ITF code Not supported for Rotating Barcodes.
/// - "itf14" : Legacy alias for `ITF_14`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "PDF_417" : Supported for Rotating Barcodes.
/// - "pdf417" : Legacy alias for `PDF_417`. Deprecated.
/// - "PDF417" : Legacy alias for `PDF_417`. Deprecated.
/// - "QR_CODE" : Supported for Rotating Barcodes.
/// - "qrCode" : Legacy alias for `QR_CODE`. Deprecated.
/// - "qrcode" : Legacy alias for `QR_CODE`. Deprecated.
/// - "UPC_A" : 11 or 12 digit codes Not supported for Rotating Barcodes.
/// - "upcA" : Legacy alias for `UPC_A`. Deprecated. Not supported for
/// Rotating Barcodes.
/// - "TEXT_ONLY" : Renders the field as a text field. The `alternateText`
/// field may not be used with a barcode of type `textOnly`. Not supported for
/// Rotating Barcodes.
/// - "textOnly" : Legacy alias for `TEXT_ONLY`. Deprecated. Not supported for
/// Rotating Barcodes.
core.String? type;
/// String encoded barcode value.
///
/// This string supports the following substitutions: * {totp_value_n}:
/// Replaced with the TOTP value (see TotpDetails.parameters). *
/// {totp_timestamp_millis}: Replaced with the timestamp (millis since epoch)
/// at which the barcode was generated. * {totp_timestamp_seconds}: Replaced
/// with the timestamp (seconds since epoch) at which the barcode was
/// generated.
core.String? valuePattern;
RotatingBarcode({
this.alternateText,
this.initialRotatingBarcodeValues,
this.renderEncoding,
this.showCodeText,
this.totpDetails,
this.type,
this.valuePattern,
});
RotatingBarcode.fromJson(core.Map json_)
: this(
alternateText: json_['alternateText'] as core.String?,
initialRotatingBarcodeValues:
json_.containsKey('initialRotatingBarcodeValues')
? RotatingBarcodeValues.fromJson(
json_['initialRotatingBarcodeValues']
as core.Map<core.String, core.dynamic>,
)
: null,
renderEncoding: json_['renderEncoding'] as core.String?,
showCodeText:
json_.containsKey('showCodeText')
? LocalizedString.fromJson(
json_['showCodeText'] as core.Map<core.String, core.dynamic>,
)
: null,
totpDetails:
json_.containsKey('totpDetails')
? RotatingBarcodeTotpDetails.fromJson(
json_['totpDetails'] as core.Map<core.String, core.dynamic>,
)
: null,
type: json_['type'] as core.String?,
valuePattern: json_['valuePattern'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (alternateText != null) 'alternateText': alternateText!,
if (initialRotatingBarcodeValues != null)
'initialRotatingBarcodeValues': initialRotatingBarcodeValues!,
if (renderEncoding != null) 'renderEncoding': renderEncoding!,
if (showCodeText != null) 'showCodeText': showCodeText!,
if (totpDetails != null) 'totpDetails': totpDetails!,
if (type != null) 'type': type!,
if (valuePattern != null) 'valuePattern': valuePattern!,
};
}
/// Configuration for the time-based OTP substitutions.
///
/// See https://tools.ietf.org/html/rfc6238
class RotatingBarcodeTotpDetails {
/// The TOTP algorithm used to generate the OTP.
/// Possible string values are:
/// - "TOTP_ALGORITHM_UNSPECIFIED"
/// - "TOTP_SHA1" : TOTP algorithm from RFC 6238 with the SHA1 hash function
core.String? algorithm;
/// The TOTP parameters for each of the {totp_value_*} substitutions.
///
/// The TotpParameters at index n is used for the {totp_value_n} substitution.
core.List<RotatingBarcodeTotpDetailsTotpParameters>? parameters;
/// The time interval used for the TOTP value generation, in milliseconds.
core.String? periodMillis;
RotatingBarcodeTotpDetails({
this.algorithm,
this.parameters,
this.periodMillis,
});
RotatingBarcodeTotpDetails.fromJson(core.Map json_)
: this(
algorithm: json_['algorithm'] as core.String?,
parameters:
(json_['parameters'] as core.List?)
?.map(
(value) => RotatingBarcodeTotpDetailsTotpParameters.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
periodMillis: json_['periodMillis'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (algorithm != null) 'algorithm': algorithm!,
if (parameters != null) 'parameters': parameters!,
if (periodMillis != null) 'periodMillis': periodMillis!,
};
}
/// Configuration for the key and value length.
///
/// See https://www.rfc-editor.org/rfc/rfc4226#section-5.3
class RotatingBarcodeTotpDetailsTotpParameters {
/// The secret key used for the TOTP value generation, encoded as a Base16
/// string.
core.String? key;
/// The length of the TOTP value in decimal digits.
core.int? valueLength;
RotatingBarcodeTotpDetailsTotpParameters({this.key, this.valueLength});
RotatingBarcodeTotpDetailsTotpParameters.fromJson(core.Map json_)
: this(
key: json_['key'] as core.String?,
valueLength: json_['valueLength'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (key != null) 'key': key!,
if (valueLength != null) 'valueLength': valueLength!,
};
}
/// A payload containing many barcode values and start date/time.
class RotatingBarcodeValues {
/// The amount of time each barcode is valid for.
///
/// Required.
core.String? periodMillis;
/// The date/time the first barcode is valid from.
///
/// Barcodes will be rotated through using period_millis defined on the
/// object's RotatingBarcodeValueInfo. This is an ISO 8601 extended format
/// date/time, with an offset. Time may be specified up to nanosecond
/// precision. Offsets may be specified with seconds precision (even though
/// offset seconds is not part of ISO 8601). For example:
/// `1985-04-12T23:20:50.52Z` would be 20 minutes and 50.52 seconds after the
/// 23rd hour of April 12th, 1985 in UTC. `1985-04-12T19:20:50.52-04:00` would
/// be 20 minutes and 50.52 seconds after the 19th hour of April 12th, 1985, 4
/// hours before UTC (same instant in time as the above example). If the event
/// were in New York, this would be the equivalent of Eastern Daylight Time
/// (EDT). Remember that offset varies in regions that observe Daylight Saving
/// Time (or Summer Time), depending on the time of the year.
///
/// Required.
core.String? startDateTime;
/// The values to encode in the barcode.
///
/// At least one value is required.
///
/// Required.
core.List<core.String>? values;
RotatingBarcodeValues({this.periodMillis, this.startDateTime, this.values});
RotatingBarcodeValues.fromJson(core.Map json_)
: this(
periodMillis: json_['periodMillis'] as core.String?,
startDateTime: json_['startDateTime'] as core.String?,
values:
(json_['values'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (periodMillis != null) 'periodMillis': periodMillis!,
if (startDateTime != null) 'startDateTime': startDateTime!,
if (values != null) 'values': values!,
};
}
/// Defines restrictions on the object that will be verified during save.
///
/// Note: this is an advanced feature, please contact Google for implementation
/// support.
class SaveRestrictions {
/// Restrict the save of the referencing object to the given email address
/// only.
///
/// This is the hex output of SHA256 sum of the email address, all lowercase
/// and without any notations like "." or "+", except "@". For example, for
/// example@example.com, this value will be
/// 31c5543c1734d25c7206f5fd591525d0295bec6fe84ff82f946a34fe970a1e66 and for
/// Example@example.com, this value will be
/// bc34f262c93ad7122763684ccea6f07fb7f5d8a2d11e60ce15a6f43fe70ce632 If email
/// address of the logged-in user who tries to save this pass does not match
/// with the defined value here, users won't be allowed to save this pass.
/// They will instead be prompted with an error to contact the issuer. This
/// information should be gathered from the user with an explicit consent via
/// Sign in with Google integration
/// https://developers.google.com/identity/authentication. Please contact with
/// support before using Save Restrictions.
core.String? restrictToEmailSha256;
SaveRestrictions({this.restrictToEmailSha256});
SaveRestrictions.fromJson(core.Map json_)
: this(
restrictToEmailSha256: json_['restrictToEmailSha256'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (restrictToEmailSha256 != null)
'restrictToEmailSha256': restrictToEmailSha256!,
};
}
class SecurityAnimation {
/// Type of animation.
/// Possible string values are:
/// - "ANIMATION_UNSPECIFIED"
/// - "FOIL_SHIMMER" : Default Foil & Shimmer animation
/// - "foilShimmer" : Legacy alias for `FOIL_SHIMMER`. Deprecated.
core.String? animationType;
SecurityAnimation({this.animationType});
SecurityAnimation.fromJson(core.Map json_)
: this(animationType: json_['animationType'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (animationType != null) 'animationType': animationType!,
};
}
/// Request to send a private pass update notice information to Google, so that
/// devices can then fetch the notice prompting the user to update a pass.
class SetPassUpdateNoticeRequest {
/// A fully qualified identifier of the pass that the issuer wants to notify
/// the pass holder(s) about.
///
/// Formatted as .
///
/// Required.
core.String? externalPassId;
/// The issuer endpoint URI the pass holder needs to follow in order to
/// receive an updated pass JWT.
///
/// It can not contain any sensitive information. The endpoint needs to
/// authenticate the user before giving the user the updated JWT. Example
/// update URI https://someissuer.com/update/passId=someExternalPassId
///
/// Required.
core.String? updateUri;
/// The JWT signature of the updated pass that the issuer wants to notify
/// Google about.
///
/// Only devices that report a different JWT signature than this JWT signature
/// will receive the update notification.
///
/// Required.
core.String? updatedPassJwtSignature;
SetPassUpdateNoticeRequest({
this.externalPassId,
this.updateUri,
this.updatedPassJwtSignature,
});
SetPassUpdateNoticeRequest.fromJson(core.Map json_)
: this(
externalPassId: json_['externalPassId'] as core.String?,
updateUri: json_['updateUri'] as core.String?,
updatedPassJwtSignature:
json_['updatedPassJwtSignature'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (externalPassId != null) 'externalPassId': externalPassId!,
if (updateUri != null) 'updateUri': updateUri!,
if (updatedPassJwtSignature != null)
'updatedPassJwtSignature': updatedPassJwtSignature!,
};
}
/// A response to a request to notify Google of an awaiting update to a private
/// pass.
typedef SetPassUpdateNoticeResponse = $Empty;
class SignUpInfo {
/// ID of the class the user can sign up for.
core.String? classId;
SignUpInfo({this.classId});
SignUpInfo.fromJson(core.Map json_)
: this(classId: json_['classId'] as core.String?);
core.Map<core.String, core.dynamic> toJson() => {
if (classId != null) 'classId': classId!,
};
}
class SmartTap {
/// The unique identifier for a smart tap.
///
/// This value should follow the format issuer ID.identifier where the former
/// is issued by Google and latter is the Smart Tap id. The Smart Tap id is a
/// Base64 encoded string which represents the id which was generated by the
/// Google Pay app.
core.String? id;
/// Communication from merchant to user.
core.List<IssuerToUserInfo>? infos;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#smartTap"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Smart Tap merchant ID of who engaged in the Smart Tap interaction.
core.String? merchantId;
SmartTap({this.id, this.infos, this.kind, this.merchantId});
SmartTap.fromJson(core.Map json_)
: this(
id: json_['id'] as core.String?,
infos:
(json_['infos'] as core.List?)
?.map(
(value) => IssuerToUserInfo.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
kind: json_['kind'] as core.String?,
merchantId: json_['merchantId'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (id != null) 'id': id!,
if (infos != null) 'infos': infos!,
if (kind != null) 'kind': kind!,
if (merchantId != null) 'merchantId': merchantId!,
};
}
class SmartTapMerchantData {
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
core.List<AuthenticationKey>? authenticationKeys;
/// Available only to Smart Tap enabled partners.
///
/// Contact support for additional guidance.
core.String? smartTapMerchantId;
SmartTapMerchantData({this.authenticationKeys, this.smartTapMerchantId});
SmartTapMerchantData.fromJson(core.Map json_)
: this(
authenticationKeys:
(json_['authenticationKeys'] as core.List?)
?.map(
(value) => AuthenticationKey.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
smartTapMerchantId: json_['smartTapMerchantId'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (authenticationKeys != null) 'authenticationKeys': authenticationKeys!,
if (smartTapMerchantId != null) 'smartTapMerchantId': smartTapMerchantId!,
};
}
class TemplateItem {
/// A reference to a field to display.
///
/// If both `firstValue` and `secondValue` are populated, they will both
/// appear as one item with a slash between them. For example, values A and B
/// would be shown as "A / B".
FieldSelector? firstValue;
/// A predefined item to display.
///
/// Only one of `firstValue` or `predefinedItem` may be set.
/// Possible string values are:
/// - "PREDEFINED_ITEM_UNSPECIFIED"
/// - "FREQUENT_FLYER_PROGRAM_NAME_AND_NUMBER"
/// - "frequentFlyerProgramNameAndNumber" : Legacy alias for
/// `FREQUENT_FLYER_PROGRAM_NAME_AND_NUMBER`. Deprecated.
/// - "FLIGHT_NUMBER_AND_OPERATING_FLIGHT_NUMBER"
/// - "flightNumberAndOperatingFlightNumber" : Legacy alias for
/// `FLIGHT_NUMBER_AND_OPERATING_FLIGHT_NUMBER`. Deprecated.
core.String? predefinedItem;
/// A reference to a field to display.
///
/// This may only be populated if the `firstValue` field is populated.
FieldSelector? secondValue;
TemplateItem({this.firstValue, this.predefinedItem, this.secondValue});
TemplateItem.fromJson(core.Map json_)
: this(
firstValue:
json_.containsKey('firstValue')
? FieldSelector.fromJson(
json_['firstValue'] as core.Map<core.String, core.dynamic>,
)
: null,
predefinedItem: json_['predefinedItem'] as core.String?,
secondValue:
json_.containsKey('secondValue')
? FieldSelector.fromJson(
json_['secondValue'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (firstValue != null) 'firstValue': firstValue!,
if (predefinedItem != null) 'predefinedItem': predefinedItem!,
if (secondValue != null) 'secondValue': secondValue!,
};
}
/// Data for Text module.
///
/// All fields are optional. Header will be displayed if available, different
/// types of bodies will be concatenated if they are defined.
class TextModuleData {
/// The body of the Text Module, which is defined as an uninterrupted string.
///
/// Recommended maximum length is 500 characters to ensure full string is
/// displayed on smaller screens.
core.String? body;
/// The header of the Text Module.
///
/// Recommended maximum length is 35 characters to ensure full string is
/// displayed on smaller screens.
core.String? header;
/// The ID associated with a text module.
///
/// This field is here to enable ease of management of text modules and
/// referencing them in template overrides. The ID should only include
/// alphanumeric characters, '_', or '-'. It can not include dots, as dots are
/// used to separate fields within FieldReference.fieldPaths in template
/// overrides.
core.String? id;
/// Translated strings for the body.
///
/// Recommended maximum length is 500 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedBody;
/// Translated strings for the header.
///
/// Recommended maximum length is 35 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedHeader;
TextModuleData({
this.body,
this.header,
this.id,
this.localizedBody,
this.localizedHeader,
});
TextModuleData.fromJson(core.Map json_)
: this(
body: json_['body'] as core.String?,
header: json_['header'] as core.String?,
id: json_['id'] as core.String?,
localizedBody:
json_.containsKey('localizedBody')
? LocalizedString.fromJson(
json_['localizedBody'] as core.Map<core.String, core.dynamic>,
)
: null,
localizedHeader:
json_.containsKey('localizedHeader')
? LocalizedString.fromJson(
json_['localizedHeader']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (body != null) 'body': body!,
if (header != null) 'header': header!,
if (id != null) 'id': id!,
if (localizedBody != null) 'localizedBody': localizedBody!,
if (localizedHeader != null) 'localizedHeader': localizedHeader!,
};
}
class TicketCost {
/// A message describing any kind of discount that was applied.
LocalizedString? discountMessage;
/// The face value of the ticket.
Money? faceValue;
/// The actual purchase price of the ticket, after tax and/or discounts.
Money? purchasePrice;
TicketCost({this.discountMessage, this.faceValue, this.purchasePrice});
TicketCost.fromJson(core.Map json_)
: this(
discountMessage:
json_.containsKey('discountMessage')
? LocalizedString.fromJson(
json_['discountMessage']
as core.Map<core.String, core.dynamic>,
)
: null,
faceValue:
json_.containsKey('faceValue')
? Money.fromJson(
json_['faceValue'] as core.Map<core.String, core.dynamic>,
)
: null,
purchasePrice:
json_.containsKey('purchasePrice')
? Money.fromJson(
json_['purchasePrice'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (discountMessage != null) 'discountMessage': discountMessage!,
if (faceValue != null) 'faceValue': faceValue!,
if (purchasePrice != null) 'purchasePrice': purchasePrice!,
};
}
class TicketLeg {
/// The date/time of arrival.
///
/// This is an ISO 8601 extended format date/time, with or without an offset.
/// Time may be specified up to nanosecond precision. Offsets may be specified
/// with seconds precision (even though offset seconds is not part of ISO
/// 8601). For example: `1985-04-12T23:20:50.52Z` would be 20 minutes and
/// 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. The portion of the date/time without the offset is considered
/// the "local date/time". This should be the local date/time at the
/// destination station. For example, if the event occurs at the 20th hour of
/// June 5th, 2018 at the destination station, the local date/time portion
/// should be `2018-06-05T20:00:00`. If the local date/time at the destination
/// station is 4 hours before UTC, an offset of `-04:00` may be appended.
/// Without offset information, some rich features may not be available.
core.String? arrivalDateTime;
/// The train or ship name/number that the passsenger needs to board.
core.String? carriage;
/// The date/time of departure.
///
/// This is required if there is no validity time interval set on the transit
/// object. This is an ISO 8601 extended format date/time, with or without an
/// offset. Time may be specified up to nanosecond precision. Offsets may be
/// specified with seconds precision (even though offset seconds is not part
/// of ISO 8601). For example: `1985-04-12T23:20:50.52Z` would be 20 minutes
/// and 50.52 seconds after the 23rd hour of April 12th, 1985 in UTC.
/// `1985-04-12T19:20:50.52-04:00` would be 20 minutes and 50.52 seconds after
/// the 19th hour of April 12th, 1985, 4 hours before UTC (same instant in
/// time as the above example). If the event were in New York, this would be
/// the equivalent of Eastern Daylight Time (EDT). Remember that offset varies
/// in regions that observe Daylight Saving Time (or Summer Time), depending
/// on the time of the year. `1985-04-12T19:20:50.52` would be 20 minutes and
/// 50.52 seconds after the 19th hour of April 12th, 1985 with no offset
/// information. The portion of the date/time without the offset is considered
/// the "local date/time". This should be the local date/time at the origin
/// station. For example, if the departure occurs at the 20th hour of June
/// 5th, 2018 at the origin station, the local date/time portion should be
/// `2018-06-05T20:00:00`. If the local date/time at the origin station is 4
/// hours before UTC, an offset of `-04:00` may be appended. Without offset
/// information, some rich features may not be available.
core.String? departureDateTime;
/// The destination name.
LocalizedString? destinationName;
/// The destination station code.
core.String? destinationStationCode;
/// Short description/name of the fare for this leg of travel.
///
/// Eg "Anytime Single Use".
LocalizedString? fareName;
/// The name of the origin station.
///
/// This is required if `desinationName` is present or if `originStationCode`
/// is not present.
LocalizedString? originName;
/// The origin station code.
///
/// This is required if `destinationStationCode` is present or if `originName`
/// is not present.
core.String? originStationCode;
/// The platform or gate where the passenger can board the carriage.
core.String? platform;
/// The reserved seat for the passenger(s).
///
/// If more than one seat is to be specified then use the `ticketSeats` field
/// instead. Both `ticketSeat` and `ticketSeats` may not be set.
TicketSeat? ticketSeat;
/// The reserved seat for the passenger(s).
///
/// If only one seat is to be specified then use the `ticketSeat` field
/// instead. Both `ticketSeat` and `ticketSeats` may not be set.
core.List<TicketSeat>? ticketSeats;
/// The name of the transit operator that is operating this leg of a trip.
LocalizedString? transitOperatorName;
/// Terminus station or destination of the train/bus/etc.
LocalizedString? transitTerminusName;
/// The zone of boarding within the platform.
core.String? zone;
TicketLeg({
this.arrivalDateTime,
this.carriage,
this.departureDateTime,
this.destinationName,
this.destinationStationCode,
this.fareName,
this.originName,
this.originStationCode,
this.platform,
this.ticketSeat,
this.ticketSeats,
this.transitOperatorName,
this.transitTerminusName,
this.zone,
});
TicketLeg.fromJson(core.Map json_)
: this(
arrivalDateTime: json_['arrivalDateTime'] as core.String?,
carriage: json_['carriage'] as core.String?,
departureDateTime: json_['departureDateTime'] as core.String?,
destinationName:
json_.containsKey('destinationName')
? LocalizedString.fromJson(
json_['destinationName']
as core.Map<core.String, core.dynamic>,
)
: null,
destinationStationCode: json_['destinationStationCode'] as core.String?,
fareName:
json_.containsKey('fareName')
? LocalizedString.fromJson(
json_['fareName'] as core.Map<core.String, core.dynamic>,
)
: null,
originName:
json_.containsKey('originName')
? LocalizedString.fromJson(
json_['originName'] as core.Map<core.String, core.dynamic>,
)
: null,
originStationCode: json_['originStationCode'] as core.String?,
platform: json_['platform'] as core.String?,
ticketSeat:
json_.containsKey('ticketSeat')
? TicketSeat.fromJson(
json_['ticketSeat'] as core.Map<core.String, core.dynamic>,
)
: null,
ticketSeats:
(json_['ticketSeats'] as core.List?)
?.map(
(value) => TicketSeat.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
transitOperatorName:
json_.containsKey('transitOperatorName')
? LocalizedString.fromJson(
json_['transitOperatorName']
as core.Map<core.String, core.dynamic>,
)
: null,
transitTerminusName:
json_.containsKey('transitTerminusName')
? LocalizedString.fromJson(
json_['transitTerminusName']
as core.Map<core.String, core.dynamic>,
)
: null,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (arrivalDateTime != null) 'arrivalDateTime': arrivalDateTime!,
if (carriage != null) 'carriage': carriage!,
if (departureDateTime != null) 'departureDateTime': departureDateTime!,
if (destinationName != null) 'destinationName': destinationName!,
if (destinationStationCode != null)
'destinationStationCode': destinationStationCode!,
if (fareName != null) 'fareName': fareName!,
if (originName != null) 'originName': originName!,
if (originStationCode != null) 'originStationCode': originStationCode!,
if (platform != null) 'platform': platform!,
if (ticketSeat != null) 'ticketSeat': ticketSeat!,
if (ticketSeats != null) 'ticketSeats': ticketSeats!,
if (transitOperatorName != null)
'transitOperatorName': transitOperatorName!,
if (transitTerminusName != null)
'transitTerminusName': transitTerminusName!,
if (zone != null) 'zone': zone!,
};
}
class TicketRestrictions {
/// Extra restrictions that don't fall under the "route" or "time" categories.
LocalizedString? otherRestrictions;
/// Restrictions about routes that may be taken.
///
/// For example, this may be the string "Reserved CrossCountry trains only".
LocalizedString? routeRestrictions;
/// More details about the above `routeRestrictions`.
LocalizedString? routeRestrictionsDetails;
/// Restrictions about times this ticket may be used.
LocalizedString? timeRestrictions;
TicketRestrictions({
this.otherRestrictions,
this.routeRestrictions,
this.routeRestrictionsDetails,
this.timeRestrictions,
});
TicketRestrictions.fromJson(core.Map json_)
: this(
otherRestrictions:
json_.containsKey('otherRestrictions')
? LocalizedString.fromJson(
json_['otherRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
routeRestrictions:
json_.containsKey('routeRestrictions')
? LocalizedString.fromJson(
json_['routeRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
routeRestrictionsDetails:
json_.containsKey('routeRestrictionsDetails')
? LocalizedString.fromJson(
json_['routeRestrictionsDetails']
as core.Map<core.String, core.dynamic>,
)
: null,
timeRestrictions:
json_.containsKey('timeRestrictions')
? LocalizedString.fromJson(
json_['timeRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (otherRestrictions != null) 'otherRestrictions': otherRestrictions!,
if (routeRestrictions != null) 'routeRestrictions': routeRestrictions!,
if (routeRestrictionsDetails != null)
'routeRestrictionsDetails': routeRestrictionsDetails!,
if (timeRestrictions != null) 'timeRestrictions': timeRestrictions!,
};
}
class TicketSeat {
/// The identifier of the train car or coach in which the ticketed seat is
/// located.
///
/// Eg. "10"
core.String? coach;
/// A custome fare class to be used if no `fareClass` applies.
///
/// Both `fareClass` and `customFareClass` may not be set.
LocalizedString? customFareClass;
/// The fare class of the ticketed seat.
/// Possible string values are:
/// - "FARE_CLASS_UNSPECIFIED"
/// - "ECONOMY"
/// - "economy" : Legacy alias for `ECONOMY`. Deprecated.
/// - "FIRST"
/// - "first" : Legacy alias for `FIRST`. Deprecated.
/// - "BUSINESS"
/// - "business" : Legacy alias for `BUSINESS`. Deprecated.
core.String? fareClass;
/// The identifier of where the ticketed seat is located.
///
/// Eg. "42". If there is no specific identifier, use `seatAssigment` instead.
core.String? seat;
/// The passenger's seat assignment.
///
/// Eg. "no specific seat". To be used when there is no specific identifier to
/// use in `seat`.
LocalizedString? seatAssignment;
TicketSeat({
this.coach,
this.customFareClass,
this.fareClass,
this.seat,
this.seatAssignment,
});
TicketSeat.fromJson(core.Map json_)
: this(
coach: json_['coach'] as core.String?,
customFareClass:
json_.containsKey('customFareClass')
? LocalizedString.fromJson(
json_['customFareClass']
as core.Map<core.String, core.dynamic>,
)
: null,
fareClass: json_['fareClass'] as core.String?,
seat: json_['seat'] as core.String?,
seatAssignment:
json_.containsKey('seatAssignment')
? LocalizedString.fromJson(
json_['seatAssignment']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (coach != null) 'coach': coach!,
if (customFareClass != null) 'customFareClass': customFareClass!,
if (fareClass != null) 'fareClass': fareClass!,
if (seat != null) 'seat': seat!,
if (seatAssignment != null) 'seatAssignment': seatAssignment!,
};
}
class TimeInterval {
/// End time of the interval.
///
/// Offset is not required. If an offset is provided and `start` time is set,
/// `start` must also include an offset.
DateTime? end;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#timeInterval"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Start time of the interval.
///
/// Offset is not required. If an offset is provided and `end` time is set,
/// `end` must also include an offset.
DateTime? start;
TimeInterval({this.end, this.kind, this.start});
TimeInterval.fromJson(core.Map json_)
: this(
end:
json_.containsKey('end')
? DateTime.fromJson(
json_['end'] as core.Map<core.String, core.dynamic>,
)
: null,
kind: json_['kind'] as core.String?,
start:
json_.containsKey('start')
? DateTime.fromJson(
json_['start'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (end != null) 'end': end!,
if (kind != null) 'kind': kind!,
if (start != null) 'start': start!,
};
}
class TransitClass {
/// Activation options for an activatable ticket.
ActivationOptions? activationOptions;
/// Use `multipleDevicesAndHoldersAllowedStatus` instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? allowMultipleUsersPerObject;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding object that will be used
/// instead.
AppLinkData? appLinkData;
/// Callback options to be used to call the issuer back for every save/delete
/// of an object for this class by the end-user.
///
/// All objects of this class are eligible for the callback.
CallbackOptions? callbackOptions;
/// Template information about how the class should be displayed.
///
/// If unset, Google will fallback to a default set of fields to display.
ClassTemplateInfo? classTemplateInfo;
/// Country code used to display the card's country (when the user is not in
/// that country), as well as to display localized content when content is not
/// available in the user's locale.
core.String? countryCode;
/// A custom label to use for the carriage value
/// (`transitObject.ticketLeg.carriage`).
LocalizedString? customCarriageLabel;
/// A custom label to use for the coach value
/// (`transitObject.ticketLeg.ticketSeat.coach`).
LocalizedString? customCoachLabel;
/// A custom label to use for the transit concession category value
/// (`transitObject.concessionCategory`).
LocalizedString? customConcessionCategoryLabel;
/// A custom label to use for the confirmation code value
/// (`transitObject.purchaseDetails.confirmationCode`).
LocalizedString? customConfirmationCodeLabel;
/// A custom label to use for the transit discount message value
/// (`transitObject.purchaseDetails.ticketCost.discountMessage`).
LocalizedString? customDiscountMessageLabel;
/// A custom label to use for the fare class value
/// (`transitObject.ticketLeg.ticketSeat.fareClass`).
LocalizedString? customFareClassLabel;
/// A custom label to use for the transit fare name value
/// (`transitObject.ticketLeg.fareName`).
LocalizedString? customFareNameLabel;
/// A custom label to use for the other restrictions value
/// (`transitObject.ticketRestrictions.otherRestrictions`).
LocalizedString? customOtherRestrictionsLabel;
/// A custom label to use for the boarding platform value
/// (`transitObject.ticketLeg.platform`).
LocalizedString? customPlatformLabel;
/// A custom label to use for the purchase face value
/// (`transitObject.purchaseDetails.ticketCost.faceValue`).
LocalizedString? customPurchaseFaceValueLabel;
/// A custom label to use for the purchase price value
/// (`transitObject.purchaseDetails.ticketCost.purchasePrice`).
LocalizedString? customPurchasePriceLabel;
/// A custom label to use for the purchase receipt number value
/// (`transitObject.purchaseDetails.purchaseReceiptNumber`).
LocalizedString? customPurchaseReceiptNumberLabel;
/// A custom label to use for the route restrictions details value
/// (`transitObject.ticketRestrictions.routeRestrictionsDetails`).
LocalizedString? customRouteRestrictionsDetailsLabel;
/// A custom label to use for the route restrictions value
/// (`transitObject.ticketRestrictions.routeRestrictions`).
LocalizedString? customRouteRestrictionsLabel;
/// A custom label to use for the seat location value
/// (`transitObject.ticketLeg.ticketSeat.seat`).
LocalizedString? customSeatLabel;
/// A custom label to use for the ticket number value
/// (`transitObject.ticketNumber`).
LocalizedString? customTicketNumberLabel;
/// A custom label to use for the time restrictions details value
/// (`transitObject.ticketRestrictions.timeRestrictions`).
LocalizedString? customTimeRestrictionsLabel;
/// A custom label to use for the transit terminus name value
/// (`transitObject.ticketLeg.transitTerminusName`).
LocalizedString? customTransitTerminusNameLabel;
/// A custom label to use for the boarding zone value
/// (`transitObject.ticketLeg.zone`).
LocalizedString? customZoneLabel;
/// Controls the display of the single-leg itinerary for this class.
///
/// By default, an itinerary will only display for multi-leg trips.
core.bool? enableSingleLegItinerary;
/// Identifies whether this class supports Smart Tap.
///
/// The `redemptionIssuers` and object level `smartTapRedemptionLevel` fields
/// must also be set up correctly in order for a pass to support Smart Tap.
core.bool? enableSmartTap;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, nothing will be displayed. The image will display at
/// 100% width.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The URI of your application's home page.
///
/// Populating the URI in this field results in the exact same behavior as
/// populating an URI in linksModuleData (when an object is rendered, a link
/// to the homepage is shown in what would usually be thought of as the
/// linksModuleData section of the object).
Uri? homepageUri;
/// The unique identifier for a class.
///
/// This ID must be unique across all classes from an issuer. This value
/// should follow the format issuer ID. identifier where the former is issued
/// by Google and latter is chosen by you. Your unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
InfoModuleData? infoModuleData;
/// The issuer name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
///
/// Required.
core.String? issuerName;
/// If this field is present, transit tickets served to a user's device will
/// always be in this language.
///
/// Represents the BCP 47 language tag. Example values are "en-US", "en-GB",
/// "de", or "de-AT".
core.String? languageOverride;
/// Links module data.
///
/// If links module data is also defined on the object, both will be
/// displayed.
LinksModuleData? linksModuleData;
/// Translated strings for the issuer_name.
///
/// Recommended maximum length is 20 characters to ensure full string is
/// displayed on smaller screens.
LocalizedString? localizedIssuerName;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// The logo image of the ticket.
///
/// This image is displayed in the card detail view of the app.
///
/// Required.
Image? logo;
/// Merchant locations.
///
/// There is a maximum of ten on the class. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Identifies whether multiple users and devices will save the same object
/// referencing this class.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Unspecified preference.
/// - "MULTIPLE_HOLDERS" : The Pass object is shareable by a user and can be
/// saved by any number of different users, and on any number of devices.
/// Partners typically use this setup for passes that do not need to be
/// restricted to a single user or pinned to a single device.
/// - "ONE_USER_ALL_DEVICES" : An object can only be saved by one user, but
/// this user can view and use it on multiple of their devices. Once the first
/// user saves the object, no other user will be allowed to view or save it.
/// - "ONE_USER_ONE_DEVICE" : An object can only be saved by one user on a
/// single device. Intended for use by select partners in limited
/// circumstances. An example use case is a transit ticket that should be
/// "device pinned", meaning it can be saved, viewed and used only by a single
/// user on a single device. Contact support for additional information.
/// - "multipleHolders" : Legacy alias for `MULTIPLE_HOLDERS`. Deprecated.
/// - "oneUserAllDevices" : Legacy alias for `ONE_USER_ALL_DEVICES`.
/// Deprecated.
/// - "oneUserOneDevice" : Legacy alias for `ONE_USER_ONE_DEVICE`. Deprecated.
core.String? multipleDevicesAndHoldersAllowedStatus;
/// Whether or not field updates to this class should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Identifies which redemption issuers can redeem the pass over Smart Tap.
///
/// Redemption issuers are identified by their issuer ID. Redemption issuers
/// must have at least one Smart Tap key configured. The `enableSmartTap` and
/// object level `smartTapRedemptionLevel` fields must also be set up
/// correctly in order for a pass to support Smart Tap.
core.List<core.String>? redemptionIssuers;
/// The review comments set by the platform when a class is marked `approved`
/// or `rejected`.
Review? review;
/// The status of the class.
///
/// This field can be set to `draft` or `underReview` using the insert, patch,
/// or update API calls. Once the review state is changed from `draft` it may
/// not be changed back to `draft`. You should keep this field to `draft` when
/// the class is under development. A `draft` class cannot be used to create
/// any object. You should set this field to `underReview` when you believe
/// the class is ready for use. The platform will automatically set this field
/// to `approved` and it can be immediately used to create or migrate objects.
/// When updating an already `approved` class you should keep setting this
/// field to `underReview`.
///
/// Required.
/// Possible string values are:
/// - "REVIEW_STATUS_UNSPECIFIED"
/// - "UNDER_REVIEW"
/// - "underReview" : Legacy alias for `UNDER_REVIEW`. Deprecated.
/// - "APPROVED"
/// - "approved" : Legacy alias for `APPROVED`. Deprecated.
/// - "REJECTED"
/// - "rejected" : Legacy alias for `REJECTED`. Deprecated.
/// - "DRAFT"
/// - "draft" : Legacy alias for `DRAFT`. Deprecated.
core.String? reviewStatus;
/// Optional information about the security animation.
///
/// If this is set a security animation will be rendered on pass details.
SecurityAnimation? securityAnimation;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// The name of the transit operator.
LocalizedString? transitOperatorName;
/// The type of transit this class represents, such as "bus".
///
/// Required.
/// Possible string values are:
/// - "TRANSIT_TYPE_UNSPECIFIED"
/// - "BUS"
/// - "bus" : Legacy alias for `BUS`. Deprecated.
/// - "RAIL"
/// - "rail" : Legacy alias for `RAIL`. Deprecated.
/// - "TRAM"
/// - "tram" : Legacy alias for `TRAM`. Deprecated.
/// - "FERRY"
/// - "ferry" : Legacy alias for `FERRY`. Deprecated.
/// - "OTHER"
/// - "other" : Legacy alias for `OTHER`. Deprecated.
core.String? transitType;
/// Optional value added module data.
///
/// Maximum of ten on the class. For a pass only ten will be displayed,
/// prioritizing those from the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
/// View Unlock Requirement options for the transit ticket.
/// Possible string values are:
/// - "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED" : Default value, same as
/// UNLOCK_NOT_REQUIRED.
/// - "UNLOCK_NOT_REQUIRED" : Default behavior for all the existing Passes if
/// ViewUnlockRequirement is not set.
/// - "UNLOCK_REQUIRED_TO_VIEW" : Requires the user to unlock their device
/// each time the pass is viewed. If the user removes their device lock after
/// saving the pass, then they will be prompted to create a device lock before
/// the pass can be viewed.
core.String? viewUnlockRequirement;
/// Watermark image to display on the user's device.
Image? watermark;
/// The wide logo of the ticket.
///
/// When provided, this will be used in place of the logo in the top left of
/// the card view.
Image? wideLogo;
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
Image? wordMark;
TransitClass({
this.activationOptions,
this.allowMultipleUsersPerObject,
this.appLinkData,
this.callbackOptions,
this.classTemplateInfo,
this.countryCode,
this.customCarriageLabel,
this.customCoachLabel,
this.customConcessionCategoryLabel,
this.customConfirmationCodeLabel,
this.customDiscountMessageLabel,
this.customFareClassLabel,
this.customFareNameLabel,
this.customOtherRestrictionsLabel,
this.customPlatformLabel,
this.customPurchaseFaceValueLabel,
this.customPurchasePriceLabel,
this.customPurchaseReceiptNumberLabel,
this.customRouteRestrictionsDetailsLabel,
this.customRouteRestrictionsLabel,
this.customSeatLabel,
this.customTicketNumberLabel,
this.customTimeRestrictionsLabel,
this.customTransitTerminusNameLabel,
this.customZoneLabel,
this.enableSingleLegItinerary,
this.enableSmartTap,
this.heroImage,
this.hexBackgroundColor,
this.homepageUri,
this.id,
this.imageModulesData,
this.infoModuleData,
this.issuerName,
this.languageOverride,
this.linksModuleData,
this.localizedIssuerName,
this.locations,
this.logo,
this.merchantLocations,
this.messages,
this.multipleDevicesAndHoldersAllowedStatus,
this.notifyPreference,
this.redemptionIssuers,
this.review,
this.reviewStatus,
this.securityAnimation,
this.textModulesData,
this.transitOperatorName,
this.transitType,
this.valueAddedModuleData,
this.version,
this.viewUnlockRequirement,
this.watermark,
this.wideLogo,
this.wordMark,
});
TransitClass.fromJson(core.Map json_)
: this(
activationOptions:
json_.containsKey('activationOptions')
? ActivationOptions.fromJson(
json_['activationOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
allowMultipleUsersPerObject:
json_['allowMultipleUsersPerObject'] as core.bool?,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
callbackOptions:
json_.containsKey('callbackOptions')
? CallbackOptions.fromJson(
json_['callbackOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
classTemplateInfo:
json_.containsKey('classTemplateInfo')
? ClassTemplateInfo.fromJson(
json_['classTemplateInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
countryCode: json_['countryCode'] as core.String?,
customCarriageLabel:
json_.containsKey('customCarriageLabel')
? LocalizedString.fromJson(
json_['customCarriageLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customCoachLabel:
json_.containsKey('customCoachLabel')
? LocalizedString.fromJson(
json_['customCoachLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customConcessionCategoryLabel:
json_.containsKey('customConcessionCategoryLabel')
? LocalizedString.fromJson(
json_['customConcessionCategoryLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customConfirmationCodeLabel:
json_.containsKey('customConfirmationCodeLabel')
? LocalizedString.fromJson(
json_['customConfirmationCodeLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customDiscountMessageLabel:
json_.containsKey('customDiscountMessageLabel')
? LocalizedString.fromJson(
json_['customDiscountMessageLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customFareClassLabel:
json_.containsKey('customFareClassLabel')
? LocalizedString.fromJson(
json_['customFareClassLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customFareNameLabel:
json_.containsKey('customFareNameLabel')
? LocalizedString.fromJson(
json_['customFareNameLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customOtherRestrictionsLabel:
json_.containsKey('customOtherRestrictionsLabel')
? LocalizedString.fromJson(
json_['customOtherRestrictionsLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customPlatformLabel:
json_.containsKey('customPlatformLabel')
? LocalizedString.fromJson(
json_['customPlatformLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customPurchaseFaceValueLabel:
json_.containsKey('customPurchaseFaceValueLabel')
? LocalizedString.fromJson(
json_['customPurchaseFaceValueLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customPurchasePriceLabel:
json_.containsKey('customPurchasePriceLabel')
? LocalizedString.fromJson(
json_['customPurchasePriceLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customPurchaseReceiptNumberLabel:
json_.containsKey('customPurchaseReceiptNumberLabel')
? LocalizedString.fromJson(
json_['customPurchaseReceiptNumberLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customRouteRestrictionsDetailsLabel:
json_.containsKey('customRouteRestrictionsDetailsLabel')
? LocalizedString.fromJson(
json_['customRouteRestrictionsDetailsLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customRouteRestrictionsLabel:
json_.containsKey('customRouteRestrictionsLabel')
? LocalizedString.fromJson(
json_['customRouteRestrictionsLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customSeatLabel:
json_.containsKey('customSeatLabel')
? LocalizedString.fromJson(
json_['customSeatLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customTicketNumberLabel:
json_.containsKey('customTicketNumberLabel')
? LocalizedString.fromJson(
json_['customTicketNumberLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customTimeRestrictionsLabel:
json_.containsKey('customTimeRestrictionsLabel')
? LocalizedString.fromJson(
json_['customTimeRestrictionsLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customTransitTerminusNameLabel:
json_.containsKey('customTransitTerminusNameLabel')
? LocalizedString.fromJson(
json_['customTransitTerminusNameLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
customZoneLabel:
json_.containsKey('customZoneLabel')
? LocalizedString.fromJson(
json_['customZoneLabel']
as core.Map<core.String, core.dynamic>,
)
: null,
enableSingleLegItinerary:
json_['enableSingleLegItinerary'] as core.bool?,
enableSmartTap: json_['enableSmartTap'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
homepageUri:
json_.containsKey('homepageUri')
? Uri.fromJson(
json_['homepageUri'] as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
issuerName: json_['issuerName'] as core.String?,
languageOverride: json_['languageOverride'] as core.String?,
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
localizedIssuerName:
json_.containsKey('localizedIssuerName')
? LocalizedString.fromJson(
json_['localizedIssuerName']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
logo:
json_.containsKey('logo')
? Image.fromJson(
json_['logo'] as core.Map<core.String, core.dynamic>,
)
: null,
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
multipleDevicesAndHoldersAllowedStatus:
json_['multipleDevicesAndHoldersAllowedStatus'] as core.String?,
notifyPreference: json_['notifyPreference'] as core.String?,
redemptionIssuers:
(json_['redemptionIssuers'] as core.List?)
?.map((value) => value as core.String)
.toList(),
review:
json_.containsKey('review')
? Review.fromJson(
json_['review'] as core.Map<core.String, core.dynamic>,
)
: null,
reviewStatus: json_['reviewStatus'] as core.String?,
securityAnimation:
json_.containsKey('securityAnimation')
? SecurityAnimation.fromJson(
json_['securityAnimation']
as core.Map<core.String, core.dynamic>,
)
: null,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
transitOperatorName:
json_.containsKey('transitOperatorName')
? LocalizedString.fromJson(
json_['transitOperatorName']
as core.Map<core.String, core.dynamic>,
)
: null,
transitType: json_['transitType'] as core.String?,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
viewUnlockRequirement: json_['viewUnlockRequirement'] as core.String?,
watermark:
json_.containsKey('watermark')
? Image.fromJson(
json_['watermark'] as core.Map<core.String, core.dynamic>,
)
: null,
wideLogo:
json_.containsKey('wideLogo')
? Image.fromJson(
json_['wideLogo'] as core.Map<core.String, core.dynamic>,
)
: null,
wordMark:
json_.containsKey('wordMark')
? Image.fromJson(
json_['wordMark'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (activationOptions != null) 'activationOptions': activationOptions!,
if (allowMultipleUsersPerObject != null)
'allowMultipleUsersPerObject': allowMultipleUsersPerObject!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (callbackOptions != null) 'callbackOptions': callbackOptions!,
if (classTemplateInfo != null) 'classTemplateInfo': classTemplateInfo!,
if (countryCode != null) 'countryCode': countryCode!,
if (customCarriageLabel != null)
'customCarriageLabel': customCarriageLabel!,
if (customCoachLabel != null) 'customCoachLabel': customCoachLabel!,
if (customConcessionCategoryLabel != null)
'customConcessionCategoryLabel': customConcessionCategoryLabel!,
if (customConfirmationCodeLabel != null)
'customConfirmationCodeLabel': customConfirmationCodeLabel!,
if (customDiscountMessageLabel != null)
'customDiscountMessageLabel': customDiscountMessageLabel!,
if (customFareClassLabel != null)
'customFareClassLabel': customFareClassLabel!,
if (customFareNameLabel != null)
'customFareNameLabel': customFareNameLabel!,
if (customOtherRestrictionsLabel != null)
'customOtherRestrictionsLabel': customOtherRestrictionsLabel!,
if (customPlatformLabel != null)
'customPlatformLabel': customPlatformLabel!,
if (customPurchaseFaceValueLabel != null)
'customPurchaseFaceValueLabel': customPurchaseFaceValueLabel!,
if (customPurchasePriceLabel != null)
'customPurchasePriceLabel': customPurchasePriceLabel!,
if (customPurchaseReceiptNumberLabel != null)
'customPurchaseReceiptNumberLabel': customPurchaseReceiptNumberLabel!,
if (customRouteRestrictionsDetailsLabel != null)
'customRouteRestrictionsDetailsLabel':
customRouteRestrictionsDetailsLabel!,
if (customRouteRestrictionsLabel != null)
'customRouteRestrictionsLabel': customRouteRestrictionsLabel!,
if (customSeatLabel != null) 'customSeatLabel': customSeatLabel!,
if (customTicketNumberLabel != null)
'customTicketNumberLabel': customTicketNumberLabel!,
if (customTimeRestrictionsLabel != null)
'customTimeRestrictionsLabel': customTimeRestrictionsLabel!,
if (customTransitTerminusNameLabel != null)
'customTransitTerminusNameLabel': customTransitTerminusNameLabel!,
if (customZoneLabel != null) 'customZoneLabel': customZoneLabel!,
if (enableSingleLegItinerary != null)
'enableSingleLegItinerary': enableSingleLegItinerary!,
if (enableSmartTap != null) 'enableSmartTap': enableSmartTap!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (homepageUri != null) 'homepageUri': homepageUri!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (issuerName != null) 'issuerName': issuerName!,
if (languageOverride != null) 'languageOverride': languageOverride!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (localizedIssuerName != null)
'localizedIssuerName': localizedIssuerName!,
if (locations != null) 'locations': locations!,
if (logo != null) 'logo': logo!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (multipleDevicesAndHoldersAllowedStatus != null)
'multipleDevicesAndHoldersAllowedStatus':
multipleDevicesAndHoldersAllowedStatus!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (redemptionIssuers != null) 'redemptionIssuers': redemptionIssuers!,
if (review != null) 'review': review!,
if (reviewStatus != null) 'reviewStatus': reviewStatus!,
if (securityAnimation != null) 'securityAnimation': securityAnimation!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (transitOperatorName != null)
'transitOperatorName': transitOperatorName!,
if (transitType != null) 'transitType': transitType!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
if (viewUnlockRequirement != null)
'viewUnlockRequirement': viewUnlockRequirement!,
if (watermark != null) 'watermark': watermark!,
if (wideLogo != null) 'wideLogo': wideLogo!,
if (wordMark != null) 'wordMark': wordMark!,
};
}
class TransitClassAddMessageResponse {
/// The updated TransitClass resource.
TransitClass? resource;
TransitClassAddMessageResponse({this.resource});
TransitClassAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? TransitClass.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class TransitClassListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<TransitClass>? resources;
TransitClassListResponse({this.pagination, this.resources});
TransitClassListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => TransitClass.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
class TransitObject {
/// The activation status for the object.
///
/// Required if the class has `activationOptions` set.
ActivationStatus? activationStatus;
/// Optional app or website link that will be displayed as a button on the
/// front of the pass.
///
/// If AppLinkData is provided for the corresponding class only object
/// AppLinkData will be displayed.
AppLinkData? appLinkData;
/// The barcode type and value.
Barcode? barcode;
/// The class associated with this object.
///
/// The class must be of the same type as this object, must already exist, and
/// must be approved. Class IDs should follow the format issuer ID.identifier
/// where the former is issued by Google and latter is chosen by you.
///
/// Required.
core.String? classId;
/// A copy of the inherited fields of the parent class.
///
/// These fields are retrieved during a GET.
TransitClass? classReference;
/// The concession category for the ticket.
/// Possible string values are:
/// - "CONCESSION_CATEGORY_UNSPECIFIED"
/// - "ADULT"
/// - "adult" : Legacy alias for `ADULT`. Deprecated.
/// - "CHILD"
/// - "child" : Legacy alias for `CHILD`. Deprecated.
/// - "SENIOR"
/// - "senior" : Legacy alias for `SENIOR`. Deprecated.
core.String? concessionCategory;
/// A custom concession category to use when `concessionCategory` does not
/// provide the right option.
///
/// Both `concessionCategory` and `customConcessionCategory` may not be set.
LocalizedString? customConcessionCategory;
/// A custom status to use for the ticket status value when `ticketStatus`
/// does not provide the right option.
///
/// Both `ticketStatus` and `customTicketStatus` may not be set.
LocalizedString? customTicketStatus;
/// Device context associated with the object.
DeviceContext? deviceContext;
/// Indicates if notifications should explicitly be suppressed.
///
/// If this field is set to true, regardless of the `messages` field,
/// expiration notifications to the user will be suppressed. By default, this
/// field is set to false. Currently, this can only be set for offers.
core.bool? disableExpirationNotification;
/// Information that controls how passes are grouped together.
GroupingInfo? groupingInfo;
/// Whether this object is currently linked to a single device.
///
/// This field is set by the platform when a user saves the object, linking it
/// to their device. Intended for use by select partners. Contact support for
/// additional information.
core.bool? hasLinkedDevice;
/// Indicates if the object has users.
///
/// This field is set by the platform.
core.bool? hasUsers;
/// Optional banner image displayed on the front of the card.
///
/// If none is present, hero image of the class, if present, will be
/// displayed. If hero image of the class is also not present, nothing will be
/// displayed.
Image? heroImage;
/// The background color for the card.
///
/// If not set the dominant color of the hero image is used, and if no hero
/// image is set, the dominant color of the logo is used. The format is
/// #rrggbb where rrggbb is a hex RGB triplet, such as `#ffcc00`. You can also
/// use the shorthand version of the RGB triplet which is #rgb, such as
/// `#fc0`.
core.String? hexBackgroundColor;
/// The unique identifier for an object.
///
/// This ID must be unique across all objects from an issuer. This value
/// should follow the format issuer ID.identifier where the former is issued
/// by Google and latter is chosen by you. The unique identifier should only
/// include alphanumeric characters, '.', '_', or '-'.
///
/// Required.
core.String? id;
/// Image module data.
///
/// The maximum number of these fields displayed is 1 from object level and 1
/// for class object level.
core.List<ImageModuleData>? imageModulesData;
/// Use textModulesData instead.
///
/// Deprecated.
InfoModuleData? infoModuleData;
/// linked_object_ids are a list of other objects such as event ticket,
/// loyalty, offer, generic, giftcard, transit and boarding pass that should
/// be automatically attached to this transit object.
///
/// If a user had saved this transit card, then these linked_object_ids would
/// be automatically pushed to the user's wallet (unless they turned off the
/// setting to receive such linked passes). Make sure that objects present in
/// linked_object_ids are already inserted - if not, calls would fail. Once
/// linked, the linked objects cannot be unlinked. You cannot link objects
/// belonging to another issuer. There is a limit to the number of objects
/// that can be linked to a single object. After the limit is reached, new
/// linked objects in the call will be ignored silently. Object IDs should
/// follow the format issuer ID. identifier where the former is issued by
/// Google and the latter is chosen by you.
core.List<core.String>? linkedObjectIds;
/// Links module data.
///
/// If links module data is also defined on the class, both will be displayed.
LinksModuleData? linksModuleData;
/// Note: This field is currently not supported to trigger geo notifications.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<LatLongPoint>? locations;
/// Merchant locations.
///
/// There is a maximum of ten on the object. Any additional MerchantLocations
/// added beyond the 10 will be rejected. These locations will trigger a
/// notification when a user enters within a Google-set radius of the point.
/// This field replaces the deprecated LatLongPoints.
core.List<MerchantLocation>? merchantLocations;
/// An array of messages displayed in the app.
///
/// All users of this object will receive its associated messages. The maximum
/// number of these fields is 10.
core.List<Message>? messages;
/// Whether or not field updates to this object should trigger notifications.
///
/// When set to NOTIFY, we will attempt to trigger a field update notification
/// to users. These notifications will only be sent to users if the field is
/// part of an allowlist. If set to DO_NOT_NOTIFY or
/// NOTIFICATION_SETTINGS_UNSPECIFIED, no notification will be triggered. This
/// setting is ephemeral and needs to be set with each PATCH or UPDATE
/// request, otherwise a notification will not be triggered.
/// Possible string values are:
/// - "NOTIFICATION_SETTINGS_FOR_UPDATES_UNSPECIFIED" : Default behavior is no
/// notifications sent.
/// - "NOTIFY_ON_UPDATE" : This value will result in a notification being
/// sent, if the updated fields are part of an allowlist.
core.String? notifyPreference;
/// Pass constraints for the object.
///
/// Includes limiting NFC and screenshot behaviors.
PassConstraints? passConstraints;
/// The name(s) of the passengers the ticket is assigned to.
///
/// The above `passengerType` field is meant to give Google context on this
/// field.
core.String? passengerNames;
/// The number of passengers.
/// Possible string values are:
/// - "PASSENGER_TYPE_UNSPECIFIED"
/// - "SINGLE_PASSENGER"
/// - "singlePassenger" : Legacy alias for `SINGLE_PASSENGER`. Deprecated.
/// - "MULTIPLE_PASSENGERS"
/// - "multiplePassengers" : Legacy alias for `MULTIPLE_PASSENGERS`.
/// Deprecated.
core.String? passengerType;
/// Purchase details for this ticket.
PurchaseDetails? purchaseDetails;
/// The rotating barcode type and value.
RotatingBarcode? rotatingBarcode;
/// Restrictions on the object that needs to be verified before the user tries
/// to save the pass.
///
/// Note that this restrictions will only be applied during save time. If the
/// restrictions changed after a user saves the pass, the new restrictions
/// will not be applied to an already saved pass.
SaveRestrictions? saveRestrictions;
/// The value that will be transmitted to a Smart Tap certified terminal over
/// NFC for this object.
///
/// The class level fields `enableSmartTap` and `redemptionIssuers` must also
/// be set up correctly in order for the pass to support Smart Tap. Only ASCII
/// characters are supported.
core.String? smartTapRedemptionValue;
/// The state of the object.
///
/// This field is used to determine how an object is displayed in the app. For
/// example, an `inactive` object is moved to the "Expired passes" section.
///
/// Required.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : Default value.
/// - "ACTIVE" : Object is active and displayed to with other active objects.
/// - "active" : Legacy alias for `ACTIVE`. Deprecated.
/// - "COMPLETED" : Object has completed it's lifecycle.
/// - "completed" : Legacy alias for `COMPLETED`. Deprecated.
/// - "EXPIRED" : Object is no longer valid (`validTimeInterval` passed).
/// - "expired" : Legacy alias for `EXPIRED`. Deprecated.
/// - "INACTIVE" : Object is no longer valid
/// - "inactive" : Legacy alias for `INACTIVE`. Deprecated.
core.String? state;
/// Text module data.
///
/// If text module data is also defined on the class, both will be displayed.
/// The maximum number of these fields displayed is 10 from the object and 10
/// from the class.
core.List<TextModuleData>? textModulesData;
/// A single ticket leg contains departure and arrival information along with
/// boarding and seating information.
///
/// If more than one leg is to be specified then use the `ticketLegs` field
/// instead. Both `ticketLeg` and `ticketLegs` may not be set.
TicketLeg? ticketLeg;
/// Each ticket may contain one or more legs.
///
/// Each leg contains departure and arrival information along with boarding
/// and seating information. If only one leg is to be specified then use the
/// `ticketLeg` field instead. Both `ticketLeg` and `ticketLegs` may not be
/// set.
core.List<TicketLeg>? ticketLegs;
/// The number of the ticket.
///
/// This is a unique identifier for the ticket in the transit operator's
/// system.
core.String? ticketNumber;
/// Information about what kind of restrictions there are on using this
/// ticket.
///
/// For example, which days of the week it must be used, or which routes are
/// allowed to be taken.
TicketRestrictions? ticketRestrictions;
/// The status of the ticket.
///
/// For states which affect display, use the `state` field instead.
/// Possible string values are:
/// - "TICKET_STATUS_UNSPECIFIED"
/// - "USED"
/// - "used" : Legacy alias for `USED`. Deprecated.
/// - "REFUNDED"
/// - "refunded" : Legacy alias for `REFUNDED`. Deprecated.
/// - "EXCHANGED"
/// - "exchanged" : Legacy alias for `EXCHANGED`. Deprecated.
core.String? ticketStatus;
/// This id is used to group tickets together if the user has saved multiple
/// tickets for the same trip.
core.String? tripId;
/// The type of trip this transit object represents.
///
/// Used to determine the pass title and/or which symbol to use between the
/// origin and destination.
///
/// Required.
/// Possible string values are:
/// - "TRIP_TYPE_UNSPECIFIED"
/// - "ROUND_TRIP"
/// - "roundTrip" : Legacy alias for `ROUND_TRIP`. Deprecated.
/// - "ONE_WAY"
/// - "oneWay" : Legacy alias for `ONE_WAY`. Deprecated.
core.String? tripType;
/// The time period this object will be `active` and object can be used.
///
/// An object's state will be changed to `expired` when this time period has
/// passed.
TimeInterval? validTimeInterval;
/// Optional value added module data.
///
/// Maximum of ten on the object.
core.List<ValueAddedModuleData>? valueAddedModuleData;
/// Deprecated
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? version;
TransitObject({
this.activationStatus,
this.appLinkData,
this.barcode,
this.classId,
this.classReference,
this.concessionCategory,
this.customConcessionCategory,
this.customTicketStatus,
this.deviceContext,
this.disableExpirationNotification,
this.groupingInfo,
this.hasLinkedDevice,
this.hasUsers,
this.heroImage,
this.hexBackgroundColor,
this.id,
this.imageModulesData,
this.infoModuleData,
this.linkedObjectIds,
this.linksModuleData,
this.locations,
this.merchantLocations,
this.messages,
this.notifyPreference,
this.passConstraints,
this.passengerNames,
this.passengerType,
this.purchaseDetails,
this.rotatingBarcode,
this.saveRestrictions,
this.smartTapRedemptionValue,
this.state,
this.textModulesData,
this.ticketLeg,
this.ticketLegs,
this.ticketNumber,
this.ticketRestrictions,
this.ticketStatus,
this.tripId,
this.tripType,
this.validTimeInterval,
this.valueAddedModuleData,
this.version,
});
TransitObject.fromJson(core.Map json_)
: this(
activationStatus:
json_.containsKey('activationStatus')
? ActivationStatus.fromJson(
json_['activationStatus']
as core.Map<core.String, core.dynamic>,
)
: null,
appLinkData:
json_.containsKey('appLinkData')
? AppLinkData.fromJson(
json_['appLinkData'] as core.Map<core.String, core.dynamic>,
)
: null,
barcode:
json_.containsKey('barcode')
? Barcode.fromJson(
json_['barcode'] as core.Map<core.String, core.dynamic>,
)
: null,
classId: json_['classId'] as core.String?,
classReference:
json_.containsKey('classReference')
? TransitClass.fromJson(
json_['classReference']
as core.Map<core.String, core.dynamic>,
)
: null,
concessionCategory: json_['concessionCategory'] as core.String?,
customConcessionCategory:
json_.containsKey('customConcessionCategory')
? LocalizedString.fromJson(
json_['customConcessionCategory']
as core.Map<core.String, core.dynamic>,
)
: null,
customTicketStatus:
json_.containsKey('customTicketStatus')
? LocalizedString.fromJson(
json_['customTicketStatus']
as core.Map<core.String, core.dynamic>,
)
: null,
deviceContext:
json_.containsKey('deviceContext')
? DeviceContext.fromJson(
json_['deviceContext'] as core.Map<core.String, core.dynamic>,
)
: null,
disableExpirationNotification:
json_['disableExpirationNotification'] as core.bool?,
groupingInfo:
json_.containsKey('groupingInfo')
? GroupingInfo.fromJson(
json_['groupingInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
hasLinkedDevice: json_['hasLinkedDevice'] as core.bool?,
hasUsers: json_['hasUsers'] as core.bool?,
heroImage:
json_.containsKey('heroImage')
? Image.fromJson(
json_['heroImage'] as core.Map<core.String, core.dynamic>,
)
: null,
hexBackgroundColor: json_['hexBackgroundColor'] as core.String?,
id: json_['id'] as core.String?,
imageModulesData:
(json_['imageModulesData'] as core.List?)
?.map(
(value) => ImageModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
infoModuleData:
json_.containsKey('infoModuleData')
? InfoModuleData.fromJson(
json_['infoModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
linkedObjectIds:
(json_['linkedObjectIds'] as core.List?)
?.map((value) => value as core.String)
.toList(),
linksModuleData:
json_.containsKey('linksModuleData')
? LinksModuleData.fromJson(
json_['linksModuleData']
as core.Map<core.String, core.dynamic>,
)
: null,
locations:
(json_['locations'] as core.List?)
?.map(
(value) => LatLongPoint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
merchantLocations:
(json_['merchantLocations'] as core.List?)
?.map(
(value) => MerchantLocation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
messages:
(json_['messages'] as core.List?)
?.map(
(value) => Message.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notifyPreference: json_['notifyPreference'] as core.String?,
passConstraints:
json_.containsKey('passConstraints')
? PassConstraints.fromJson(
json_['passConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
passengerNames: json_['passengerNames'] as core.String?,
passengerType: json_['passengerType'] as core.String?,
purchaseDetails:
json_.containsKey('purchaseDetails')
? PurchaseDetails.fromJson(
json_['purchaseDetails']
as core.Map<core.String, core.dynamic>,
)
: null,
rotatingBarcode:
json_.containsKey('rotatingBarcode')
? RotatingBarcode.fromJson(
json_['rotatingBarcode']
as core.Map<core.String, core.dynamic>,
)
: null,
saveRestrictions:
json_.containsKey('saveRestrictions')
? SaveRestrictions.fromJson(
json_['saveRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
smartTapRedemptionValue:
json_['smartTapRedemptionValue'] as core.String?,
state: json_['state'] as core.String?,
textModulesData:
(json_['textModulesData'] as core.List?)
?.map(
(value) => TextModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
ticketLeg:
json_.containsKey('ticketLeg')
? TicketLeg.fromJson(
json_['ticketLeg'] as core.Map<core.String, core.dynamic>,
)
: null,
ticketLegs:
(json_['ticketLegs'] as core.List?)
?.map(
(value) => TicketLeg.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
ticketNumber: json_['ticketNumber'] as core.String?,
ticketRestrictions:
json_.containsKey('ticketRestrictions')
? TicketRestrictions.fromJson(
json_['ticketRestrictions']
as core.Map<core.String, core.dynamic>,
)
: null,
ticketStatus: json_['ticketStatus'] as core.String?,
tripId: json_['tripId'] as core.String?,
tripType: json_['tripType'] as core.String?,
validTimeInterval:
json_.containsKey('validTimeInterval')
? TimeInterval.fromJson(
json_['validTimeInterval']
as core.Map<core.String, core.dynamic>,
)
: null,
valueAddedModuleData:
(json_['valueAddedModuleData'] as core.List?)
?.map(
(value) => ValueAddedModuleData.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (activationStatus != null) 'activationStatus': activationStatus!,
if (appLinkData != null) 'appLinkData': appLinkData!,
if (barcode != null) 'barcode': barcode!,
if (classId != null) 'classId': classId!,
if (classReference != null) 'classReference': classReference!,
if (concessionCategory != null) 'concessionCategory': concessionCategory!,
if (customConcessionCategory != null)
'customConcessionCategory': customConcessionCategory!,
if (customTicketStatus != null) 'customTicketStatus': customTicketStatus!,
if (deviceContext != null) 'deviceContext': deviceContext!,
if (disableExpirationNotification != null)
'disableExpirationNotification': disableExpirationNotification!,
if (groupingInfo != null) 'groupingInfo': groupingInfo!,
if (hasLinkedDevice != null) 'hasLinkedDevice': hasLinkedDevice!,
if (hasUsers != null) 'hasUsers': hasUsers!,
if (heroImage != null) 'heroImage': heroImage!,
if (hexBackgroundColor != null) 'hexBackgroundColor': hexBackgroundColor!,
if (id != null) 'id': id!,
if (imageModulesData != null) 'imageModulesData': imageModulesData!,
if (infoModuleData != null) 'infoModuleData': infoModuleData!,
if (linkedObjectIds != null) 'linkedObjectIds': linkedObjectIds!,
if (linksModuleData != null) 'linksModuleData': linksModuleData!,
if (locations != null) 'locations': locations!,
if (merchantLocations != null) 'merchantLocations': merchantLocations!,
if (messages != null) 'messages': messages!,
if (notifyPreference != null) 'notifyPreference': notifyPreference!,
if (passConstraints != null) 'passConstraints': passConstraints!,
if (passengerNames != null) 'passengerNames': passengerNames!,
if (passengerType != null) 'passengerType': passengerType!,
if (purchaseDetails != null) 'purchaseDetails': purchaseDetails!,
if (rotatingBarcode != null) 'rotatingBarcode': rotatingBarcode!,
if (saveRestrictions != null) 'saveRestrictions': saveRestrictions!,
if (smartTapRedemptionValue != null)
'smartTapRedemptionValue': smartTapRedemptionValue!,
if (state != null) 'state': state!,
if (textModulesData != null) 'textModulesData': textModulesData!,
if (ticketLeg != null) 'ticketLeg': ticketLeg!,
if (ticketLegs != null) 'ticketLegs': ticketLegs!,
if (ticketNumber != null) 'ticketNumber': ticketNumber!,
if (ticketRestrictions != null) 'ticketRestrictions': ticketRestrictions!,
if (ticketStatus != null) 'ticketStatus': ticketStatus!,
if (tripId != null) 'tripId': tripId!,
if (tripType != null) 'tripType': tripType!,
if (validTimeInterval != null) 'validTimeInterval': validTimeInterval!,
if (valueAddedModuleData != null)
'valueAddedModuleData': valueAddedModuleData!,
if (version != null) 'version': version!,
};
}
class TransitObjectAddMessageResponse {
/// The updated TransitObject resource.
TransitObject? resource;
TransitObjectAddMessageResponse({this.resource});
TransitObjectAddMessageResponse.fromJson(core.Map json_)
: this(
resource:
json_.containsKey('resource')
? TransitObject.fromJson(
json_['resource'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (resource != null) 'resource': resource!,
};
}
class TransitObjectListResponse {
/// Pagination of the response.
Pagination? pagination;
/// Resources corresponding to the list request.
core.List<TransitObject>? resources;
TransitObjectListResponse({this.pagination, this.resources});
TransitObjectListResponse.fromJson(core.Map json_)
: this(
pagination:
json_.containsKey('pagination')
? Pagination.fromJson(
json_['pagination'] as core.Map<core.String, core.dynamic>,
)
: null,
resources:
(json_['resources'] as core.List?)
?.map(
(value) => TransitObject.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() => {
if (pagination != null) 'pagination': pagination!,
if (resources != null) 'resources': resources!,
};
}
/// Request to upload rotating barcode values.
class TransitObjectUploadRotatingBarcodeValuesRequest {
/// A reference to the rotating barcode values payload that was uploaded.
Media? blob;
/// Extra information about the uploaded media.
MediaRequestInfo? mediaRequestInfo;
TransitObjectUploadRotatingBarcodeValuesRequest({
this.blob,
this.mediaRequestInfo,
});
TransitObjectUploadRotatingBarcodeValuesRequest.fromJson(core.Map json_)
: this(
blob:
json_.containsKey('blob')
? Media.fromJson(
json_['blob'] as core.Map<core.String, core.dynamic>,
)
: null,
mediaRequestInfo:
json_.containsKey('mediaRequestInfo')
? MediaRequestInfo.fromJson(
json_['mediaRequestInfo']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (blob != null) 'blob': blob!,
if (mediaRequestInfo != null) 'mediaRequestInfo': mediaRequestInfo!,
};
}
/// Response for uploading rotating barcode values.
typedef TransitObjectUploadRotatingBarcodeValuesResponse = $Empty;
class TranslatedString {
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#translatedString"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Represents the BCP 47 language tag.
///
/// Example values are "en-US", "en-GB", "de", or "de-AT".
core.String? language;
/// The UTF-8 encoded translated string.
core.String? value;
TranslatedString({this.kind, this.language, this.value});
TranslatedString.fromJson(core.Map json_)
: this(
kind: json_['kind'] as core.String?,
language: json_['language'] as core.String?,
value: json_['value'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (kind != null) 'kind': kind!,
if (language != null) 'language': language!,
if (value != null) 'value': value!,
};
}
/// Indicates that the issuer would like Google Wallet to send an upcoming card
/// validity notification 1 day before card becomes valid/usable.
class UpcomingNotification {
/// Indicates if the object needs to have upcoming notification enabled.
core.bool? enableNotification;
UpcomingNotification({this.enableNotification});
UpcomingNotification.fromJson(core.Map json_)
: this(enableNotification: json_['enableNotification'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() => {
if (enableNotification != null) 'enableNotification': enableNotification!,
};
}
class Uri {
/// The URI's title appearing in the app as text.
///
/// Recommended maximum is 20 characters to ensure full string is displayed on
/// smaller screens. Note that in some contexts this text is not used, such as
/// when `description` is part of an image.
core.String? description;
/// The ID associated with a uri.
///
/// This field is here to enable ease of management of uris.
core.String? id;
/// Identifies what kind of resource this is.
///
/// Value: the fixed string `"walletobjects#uri"`.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? kind;
/// Translated strings for the description.
///
/// Recommended maximum is 20 characters to ensure full string is displayed on
/// smaller screens.
LocalizedString? localizedDescription;
/// The location of a web page, image, or other resource.
///
/// URIs in the `LinksModuleData` module can have different prefixes
/// indicating the type of URI (a link to a web page, a link to a map, a
/// telephone number, or an email address). URIs must have a scheme.
core.String? uri;
Uri({
this.description,
this.id,
this.kind,
this.localizedDescription,
this.uri,
});
Uri.fromJson(core.Map json_)
: this(
description: json_['description'] as core.String?,
id: json_['id'] as core.String?,
kind: json_['kind'] as core.String?,
localizedDescription:
json_.containsKey('localizedDescription')
? LocalizedString.fromJson(
json_['localizedDescription']
as core.Map<core.String, core.dynamic>,
)
: null,
uri: json_['uri'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() => {
if (description != null) 'description': description!,
if (id != null) 'id': id!,
if (kind != null) 'kind': kind!,
if (localizedDescription != null)
'localizedDescription': localizedDescription!,
if (uri != null) 'uri': uri!,
};
}
/// Data for Value Added module.
///
/// Required fields are header and uri.
class ValueAddedModuleData {
/// Body to be displayed on the module.
///
/// Character limit is 50 and longer strings will be truncated.
LocalizedString? body;
/// Header to be displayed on the module.
///
/// Character limit is 60 and longer strings will be truncated.
LocalizedString? header;
/// Image to be displayed on the module.
///
/// Recommended image ratio is 1:1. Images will be resized to fit this ratio.
Image? image;
/// The index for sorting the modules.
///
/// Modules with a lower sort index are shown before modules with a higher
/// sort index. If unspecified, the sort index is assumed to be INT_MAX. For
/// two modules with the same index, the sorting behavior is undefined.
core.int? sortIndex;
/// URI that the module leads to on click.
///
/// This can be a web link or a deep link as mentioned in
/// https://developer.android.com/training/app-links/deep-linking.
core.String? uri;
/// Constraints that all must be met for the module to be shown.
ModuleViewConstraints? viewConstraints;
ValueAddedModuleData({
this.body,
this.header,
this.image,
this.sortIndex,
this.uri,
this.viewConstraints,
});
ValueAddedModuleData.fromJson(core.Map json_)
: this(
body:
json_.containsKey('body')
? LocalizedString.fromJson(
json_['body'] as core.Map<core.String, core.dynamic>,
)
: null,
header:
json_.containsKey('header')
? LocalizedString.fromJson(
json_['header'] as core.Map<core.String, core.dynamic>,
)
: null,
image:
json_.containsKey('image')
? Image.fromJson(
json_['image'] as core.Map<core.String, core.dynamic>,
)
: null,
sortIndex: json_['sortIndex'] as core.int?,
uri: json_['uri'] as core.String?,
viewConstraints:
json_.containsKey('viewConstraints')
? ModuleViewConstraints.fromJson(
json_['viewConstraints']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() => {
if (body != null) 'body': body!,
if (header != null) 'header': header!,
if (image != null) 'image': image!,
if (sortIndex != null) 'sortIndex': sortIndex!,
if (uri != null) 'uri': uri!,
if (viewConstraints != null) 'viewConstraints': viewConstraints!,
};
}