<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="walletobjects_v1.html">Google Wallet API</a> . <a href="walletobjects_v1.offerclass.html">offerclass</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#addmessage">addmessage(resourceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds a message to the offer class referenced by the given class ID.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(resourceId, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the offer class with the given class ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts an offer class with the given ID and properties.</p>
<p class="toc_element">
  <code><a href="#list">list(issuerId=None, maxResults=None, token=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of all offer classes for a given issuer ID.</p>
<p class="toc_element">
  <code><a href="#patch">patch(resourceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the offer class referenced by the given class ID. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(resourceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the offer class referenced by the given class ID.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addmessage">addmessage(resourceId, body=None, x__xgafv=None)</code>
  <pre>Adds a message to the offer class referenced by the given class ID.

Args:
  resourceId: string, 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource used when the AddMessage endpoints are called.
  &quot;message&quot;: { # A message that will be displayed with a Valuable
    &quot;body&quot;: &quot;A String&quot;, # The message body.
    &quot;displayInterval&quot;: { # 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.
      &quot;end&quot;: { # 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.
        &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
      &quot;start&quot;: { # 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.
        &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
      },
    },
    &quot;header&quot;: &quot;A String&quot;, # The message header.
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
    &quot;localizedBody&quot;: { # Translated strings for the message body.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedHeader&quot;: { # Translated strings for the message header.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;resource&quot;: { # The updated OfferClass resource.
    &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
    &quot;callbackOptions&quot;: { # 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.
      &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
      &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
    },
    &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
      &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
        &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
          &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
        },
        &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
          &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
        },
        &quot;secondTopDetail&quot;: { # 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.
          &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
        },
      },
      &quot;cardTemplateOverride&quot;: { # Override for the card view.
        &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
          {
            &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
              &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
            },
            &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
              &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
              &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
              &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
            },
            &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
              &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
              &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
            },
          },
        ],
      },
      &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
        &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
          {
            &quot;item&quot;: { # The item to be displayed in the details list.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        ],
      },
      &quot;listTemplateOverride&quot;: { # Override for the passes list view.
        &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
          &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
          &quot;transitOption&quot;: &quot;A String&quot;,
        },
        &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
    &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
    &quot;enableSmartTap&quot;: True or False, # 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.
    &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
    &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
      &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
      &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # 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.
    },
    &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
      &quot;contentDescription&quot;: { # Description of the image used for accessibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
      &quot;sourceUri&quot;: { # The URI for the image.
        &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
        &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
      },
    },
    &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
    &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
      &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
      &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # 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.
    },
    &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
    &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
      {
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
        &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
          &quot;contentDescription&quot;: { # Description of the image used for accessibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
          &quot;sourceUri&quot;: { # The URI for the image.
            &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
            &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
          },
        },
      },
    ],
    &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
      &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
        {
          &quot;columns&quot;: [ # 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.
            { # 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.
              &quot;label&quot;: &quot;A String&quot;, # 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.
              &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
                &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
                &quot;translatedValues&quot;: [ # Contains the translations for the string.
                  {
                    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                    &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                    &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                  },
                ],
              },
              &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
                &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
                &quot;translatedValues&quot;: [ # Contains the translations for the string.
                  {
                    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                    &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                    &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                  },
                ],
              },
              &quot;value&quot;: &quot;A String&quot;, # 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.
            },
          ],
        },
      ],
      &quot;showLastUpdateTime&quot;: True or False,
    },
    &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
    &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
      &quot;uris&quot;: [ # The list of URIs.
        {
          &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
          &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
          &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # 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.
        },
      ],
    },
    &quot;localizedDetails&quot;: { # Translated strings for the details.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
        &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
        &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
      },
    ],
    &quot;messages&quot;: [ # 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.
      { # A message that will be displayed with a Valuable
        &quot;body&quot;: &quot;A String&quot;, # The message body.
        &quot;displayInterval&quot;: { # 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.
          &quot;end&quot;: { # 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.
            &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
          &quot;start&quot;: { # 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.
            &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
          },
        },
        &quot;header&quot;: &quot;A String&quot;, # The message header.
        &quot;id&quot;: &quot;A String&quot;, # 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.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
        &quot;localizedBody&quot;: { # Translated strings for the message body.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;localizedHeader&quot;: { # Translated strings for the message header.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
      },
    ],
    &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
    &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
    &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
    &quot;redemptionIssuers&quot;: [ # 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.
      &quot;A String&quot;,
    ],
    &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
      &quot;comments&quot;: &quot;A String&quot;,
    },
    &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
    &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
      &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
    },
    &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
    &quot;textModulesData&quot;: [ # 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.
      { # 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.
        &quot;body&quot;: &quot;A String&quot;, # 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.
        &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
        &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
      },
    ],
    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
      &quot;contentDescription&quot;: { # Description of the image used for accessibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
      &quot;sourceUri&quot;: { # The URI for the image.
        &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
        &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
      },
    },
    &quot;version&quot;: &quot;A String&quot;, # Deprecated
    &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
    &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
      &quot;contentDescription&quot;: { # Description of the image used for accessibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
      &quot;sourceUri&quot;: { # The URI for the image.
        &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
        &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
      },
    },
    &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
      &quot;contentDescription&quot;: { # Description of the image used for accessibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
      &quot;sourceUri&quot;: { # The URI for the image.
        &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
        &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(resourceId, x__xgafv=None)</code>
  <pre>Returns the offer class with the given class ID.

Args:
  resourceId: string, 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body=None, x__xgafv=None)</code>
  <pre>Inserts an offer class with the given ID and properties.

Args:
  body: object, The request body.
    The object takes the form of:

{
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(issuerId=None, maxResults=None, token=None, x__xgafv=None)</code>
  <pre>Returns a list of all offer classes for a given issuer ID.

Args:
  issuerId: string, The ID of the issuer authorized to list classes.
  maxResults: integer, Identifies the max number of results returned by a list. All results are returned if `maxResults` isn&#x27;t defined.
  token: string, 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;pagination&quot;: { # Pagination of the response.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#pagination&quot;`.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Page token to send to fetch the next page.
    &quot;resultsPerPage&quot;: 42, # Number of results returned in this page.
  },
  &quot;resources&quot;: [ # Resources corresponding to the list request.
    {
      &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
      &quot;callbackOptions&quot;: { # 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.
        &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
        &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
      },
      &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
        &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
          &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
            &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
          &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
            &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
          &quot;secondTopDetail&quot;: { # 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.
            &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
        &quot;cardTemplateOverride&quot;: { # Override for the card view.
          &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
            {
              &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
                &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
              },
              &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
                &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
                &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
                &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
              },
              &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
                &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
                &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
                  &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                  &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                  &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                    &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                      { # Reference definition to use with field overrides.
                        &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                        &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                      },
                    ],
                  },
                },
              },
            },
          ],
        },
        &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
          &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
            {
              &quot;item&quot;: { # The item to be displayed in the details list.
                &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
                &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
                &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                  &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                    { # Reference definition to use with field overrides.
                      &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                      &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                    },
                  ],
                },
              },
            },
          ],
        },
        &quot;listTemplateOverride&quot;: { # Override for the passes list view.
          &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
            &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;transitOption&quot;: &quot;A String&quot;,
          },
          &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
          &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
            &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
              { # Reference definition to use with field overrides.
                &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
              },
            ],
          },
        },
      },
      &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
      &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
      &quot;enableSmartTap&quot;: True or False, # 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.
      &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
      &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
      &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
      &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
      &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
      &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
      &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
        {
          &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
          &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
            &quot;contentDescription&quot;: { # Description of the image used for accessibility.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
            &quot;sourceUri&quot;: { # The URI for the image.
              &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
              &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
                &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
                &quot;translatedValues&quot;: [ # Contains the translations for the string.
                  {
                    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                    &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                    &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                  },
                ],
              },
              &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
            },
          },
        },
      ],
      &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
        &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
          {
            &quot;columns&quot;: [ # 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.
              { # 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.
                &quot;label&quot;: &quot;A String&quot;, # 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.
                &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
                  &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                    &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                    &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                  },
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
                  &quot;translatedValues&quot;: [ # Contains the translations for the string.
                    {
                      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                    },
                  ],
                },
                &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
                  &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                    &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                    &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                  },
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
                  &quot;translatedValues&quot;: [ # Contains the translations for the string.
                    {
                      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                    },
                  ],
                },
                &quot;value&quot;: &quot;A String&quot;, # 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.
              },
            ],
          },
        ],
        &quot;showLastUpdateTime&quot;: True or False,
      },
      &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
      &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
        &quot;uris&quot;: [ # The list of URIs.
          {
            &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
            &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
            &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;uri&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
      &quot;localizedDetails&quot;: { # Translated strings for the details.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
          &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
          &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
        },
      ],
      &quot;messages&quot;: [ # 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.
        { # A message that will be displayed with a Valuable
          &quot;body&quot;: &quot;A String&quot;, # The message body.
          &quot;displayInterval&quot;: { # 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.
            &quot;end&quot;: { # 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.
              &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
            &quot;start&quot;: { # 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.
              &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
            },
          },
          &quot;header&quot;: &quot;A String&quot;, # The message header.
          &quot;id&quot;: &quot;A String&quot;, # 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.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
          &quot;localizedBody&quot;: { # Translated strings for the message body.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;localizedHeader&quot;: { # Translated strings for the message header.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
        },
      ],
      &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
      &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
      &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
      &quot;redemptionIssuers&quot;: [ # 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.
        &quot;A String&quot;,
      ],
      &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
        &quot;comments&quot;: &quot;A String&quot;,
      },
      &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
      &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
        &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
      },
      &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
      &quot;textModulesData&quot;: [ # 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.
        { # 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.
          &quot;body&quot;: &quot;A String&quot;, # 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.
          &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
          &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
          &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
        },
      ],
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
      &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
      &quot;version&quot;: &quot;A String&quot;, # Deprecated
      &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
      &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
      &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(resourceId, body=None, x__xgafv=None)</code>
  <pre>Updates the offer class referenced by the given class ID. This method supports patch semantics.

Args:
  resourceId: string, 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(resourceId, body=None, x__xgafv=None)</code>
  <pre>Updates the offer class referenced by the given class ID.

Args:
  resourceId: string, 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;allowMultipleUsersPerObject&quot;: True or False, # Deprecated. Use `multipleDevicesAndHoldersAllowedStatus` instead.
  &quot;callbackOptions&quot;: { # 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.
    &quot;updateRequestUrl&quot;: &quot;A String&quot;, # 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:Google-Valuables. Deprecated.
    &quot;url&quot;: &quot;A String&quot;, # 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:Google-Valuables.
  },
  &quot;classTemplateInfo&quot;: { # Template information about how the class should be displayed. If unset, Google will fallback to a default set of fields to display.
    &quot;cardBarcodeSectionDetails&quot;: { # Specifies extra information to be displayed above and below the barcode.
      &quot;firstBottomDetail&quot;: { # Optional information to display below the barcode.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;firstTopDetail&quot;: { # Optional information to display above the barcode. If `secondTopDetail` is defined, this will be displayed to the start side of this detail section.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
      &quot;secondTopDetail&quot;: { # 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.
        &quot;fieldSelector&quot;: { # Custom field selector to use with field overrides. # A reference to an existing text-based or image field to display.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
      },
    },
    &quot;cardTemplateOverride&quot;: { # Override for the card view.
      &quot;cardRowTemplateInfos&quot;: [ # Template information for rows in the card view. At most three rows are allowed to be specified.
        {
          &quot;oneItem&quot;: { # Template for a row containing one item. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;item&quot;: { # The item to be displayed in the row. This item will be automatically centered.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;threeItems&quot;: { # Template for a row containing three items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;middleItem&quot;: { # The item to be displayed in the middle of the row. This item will be centered between the start and end items.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
          &quot;twoItems&quot;: { # Template for a row containing two items. Exactly one of &quot;one_item&quot;, &quot;two_items&quot;, &quot;three_items&quot; must be set.
            &quot;endItem&quot;: { # The item to be displayed at the end of the row. This item will be aligned to the right.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
            &quot;startItem&quot;: { # The item to be displayed at the start of the row. This item will be aligned to the left.
              &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
              &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
              &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
                &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                  { # Reference definition to use with field overrides.
                    &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                    &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                  },
                ],
              },
            },
          },
        },
      ],
    },
    &quot;detailsTemplateOverride&quot;: { # Override for the details view (beneath the card view).
      &quot;detailsItemInfos&quot;: [ # Information for the &quot;nth&quot; item displayed in the details list.
        {
          &quot;item&quot;: { # The item to be displayed in the details list.
            &quot;firstValue&quot;: { # Custom field selector to use with field overrides. # 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 &quot;A / B&quot;.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
            &quot;predefinedItem&quot;: &quot;A String&quot;, # A predefined item to display. Only one of `firstValue` or `predefinedItem` may be set.
            &quot;secondValue&quot;: { # Custom field selector to use with field overrides. # A reference to a field to display. This may only be populated if the `firstValue` field is populated.
              &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
                { # Reference definition to use with field overrides.
                  &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
                  &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
                },
              ],
            },
          },
        },
      ],
    },
    &quot;listTemplateOverride&quot;: { # Override for the passes list view.
      &quot;firstRowOption&quot;: { # Specifies from a predefined set of options or from a reference to the field what will be displayed in the first row.
        &quot;fieldOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the first row.
          &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
            { # Reference definition to use with field overrides.
              &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
            },
          ],
        },
        &quot;transitOption&quot;: &quot;A String&quot;,
      },
      &quot;secondRowOption&quot;: { # Custom field selector to use with field overrides. # 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.
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
      &quot;thirdRowOption&quot;: { # Custom field selector to use with field overrides. # A reference to the field to be displayed in the third row. This option is only displayed if there are not multiple user objects in a group. If there is a group, the third row will always display the number of objects in the group. Eg: &quot;3 passes&quot;
        &quot;fields&quot;: [ # If more than one reference is supplied, then the first one that references a non-empty field will be displayed.
          { # Reference definition to use with field overrides.
            &quot;dateFormat&quot;: &quot;A String&quot;, # Only valid if the `fieldPath` references a date field. Chooses how the date field will be formatted and displayed in the UI.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Path to the field being referenced, prefixed with &quot;object&quot; or &quot;class&quot; and separated with dots. For example, it may be the string &quot;object.purchaseDetails.purchasePrice&quot;.
          },
        ],
      },
    },
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # Country code used to display the card&#x27;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&#x27;s locale.
  &quot;details&quot;: &quot;A String&quot;, # The details of the offer.
  &quot;enableSmartTap&quot;: True or False, # 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.
  &quot;finePrint&quot;: &quot;A String&quot;, # The fine print or terms of the offer, such as &quot;20% off any t-shirt at Adam&#x27;s Apparel.&quot;
  &quot;helpUri&quot;: { # The help link for the offer, such as `http://myownpersonaldomain.com/help`
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;heroImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;hexBackgroundColor&quot;: &quot;A String&quot;, # 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`.
  &quot;homepageUri&quot;: { # The URI of your application&#x27;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).
    &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
    &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;uri&quot;: &quot;A String&quot;, # 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.
  },
  &quot;id&quot;: &quot;A String&quot;, # Required. 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, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;.
  &quot;imageModulesData&quot;: [ # Image module data. The maximum number of these fields displayed is 1 from object level and 1 for class object level.
    {
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with an image module. This field is here to enable ease of management of image modules.
      &quot;mainImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # A 100% width image.
        &quot;contentDescription&quot;: { # Description of the image used for accessibility.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
        &quot;sourceUri&quot;: { # The URI for the image.
          &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
          &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
            &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
            &quot;translatedValues&quot;: [ # Contains the translations for the string.
              {
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
            ],
          },
          &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
        },
      },
    },
  ],
  &quot;infoModuleData&quot;: { # Deprecated. Use textModulesData instead.
    &quot;labelValueRows&quot;: [ # A list of collections of labels and values. These will be displayed one after the other in a singular column.
      {
        &quot;columns&quot;: [ # 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.
          { # 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.
            &quot;label&quot;: &quot;A String&quot;, # 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.
            &quot;localizedLabel&quot;: { # Translated strings for the label. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;localizedValue&quot;: { # Translated strings for the value. Recommended maximum is 15 characters for a two-column layout and 30 characters for a one-column layout.
              &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
                &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
              },
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
              &quot;translatedValues&quot;: [ # Contains the translations for the string.
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
                  &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
                  &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
                },
              ],
            },
            &quot;value&quot;: &quot;A String&quot;, # 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.
          },
        ],
      },
    ],
    &quot;showLastUpdateTime&quot;: True or False,
  },
  &quot;issuerName&quot;: &quot;A String&quot;, # Required. The issuer name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#offerClass&quot;`.
  &quot;linksModuleData&quot;: { # Links module data. If links module data is also defined on the object, both will be displayed.
    &quot;uris&quot;: [ # The list of URIs.
      {
        &quot;description&quot;: &quot;A String&quot;, # The URI&#x27;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.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with a uri. This field is here to enable ease of management of uris.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#uri&quot;`.
        &quot;localizedDescription&quot;: { # Translated strings for the description. Recommended maximum is 20 characters to ensure full string is displayed on smaller screens.
          &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
          &quot;translatedValues&quot;: [ # Contains the translations for the string.
            {
              &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
              &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
              &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
            },
          ],
        },
        &quot;uri&quot;: &quot;A String&quot;, # 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.
      },
    ],
  },
  &quot;localizedDetails&quot;: { # Translated strings for the details.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedFinePrint&quot;: { # Translated strings for the fine_print.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedIssuerName&quot;: { # Translated strings for the issuer_name. Recommended maximum length is 20 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedProvider&quot;: { # Translated strings for the provider. Recommended maximum length is 12 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedShortTitle&quot;: { # Translated strings for the short title. Recommended maximum length is 20 characters.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;localizedTitle&quot;: { # Translated strings for the title. Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
    &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
      &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
      &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
    &quot;translatedValues&quot;: [ # Contains the translations for the string.
      {
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
    ],
  },
  &quot;locations&quot;: [ # Note: This field is currently not supported to trigger geo notifications.
    {
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#latLongPoint&quot;`.
      &quot;latitude&quot;: 3.14, # The latitude specified as any value in the range of -90.0 through +90.0, both inclusive. Values outside these bounds will be rejected.
      &quot;longitude&quot;: 3.14, # The longitude specified in the range -180.0 through +180.0, both inclusive. Values outside these bounds will be rejected.
    },
  ],
  &quot;messages&quot;: [ # 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.
    { # A message that will be displayed with a Valuable
      &quot;body&quot;: &quot;A String&quot;, # The message body.
      &quot;displayInterval&quot;: { # 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.
        &quot;end&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#timeInterval&quot;`.
        &quot;start&quot;: { # 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.
          &quot;date&quot;: &quot;A String&quot;, # An ISO 8601 extended format date/time. Offset may or may not be required (refer to the parent field&#x27;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&#x27;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&#x27;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.
        },
      },
      &quot;header&quot;: &quot;A String&quot;, # The message header.
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#walletObjectMessage&quot;`.
      &quot;localizedBody&quot;: { # Translated strings for the message body.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the message header.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;messageType&quot;: &quot;A String&quot;, # The type of the message. Currently, this can only be set for offers.
    },
  ],
  &quot;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &quot;provider&quot;: &quot;A String&quot;, # Required. 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.
  &quot;redemptionChannel&quot;: &quot;A String&quot;, # Required. The redemption channels applicable to this offer.
  &quot;redemptionIssuers&quot;: [ # 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.
    &quot;A String&quot;,
  ],
  &quot;review&quot;: { # The review comments set by the platform when a class is marked `approved` or `rejected`.
    &quot;comments&quot;: &quot;A String&quot;,
  },
  &quot;reviewStatus&quot;: &quot;A String&quot;, # Required. 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`.
  &quot;securityAnimation&quot;: { # Optional information about the security animation. If this is set a security animation will be rendered on pass details.
    &quot;animationType&quot;: &quot;A String&quot;, # Type of animation.
  },
  &quot;shortTitle&quot;: &quot;A String&quot;, # A shortened version of the title of the offer, such as &quot;20% off,&quot; shown to users as a quick reference to the offer contents. Recommended maximum length is 20 characters.
  &quot;textModulesData&quot;: [ # 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.
    { # 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.
      &quot;body&quot;: &quot;A String&quot;, # 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.
      &quot;header&quot;: &quot;A String&quot;, # The header of the Text Module. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
      &quot;id&quot;: &quot;A String&quot;, # The ID associated with a text module. This field is here to enable ease of management of text modules.
      &quot;localizedBody&quot;: { # Translated strings for the body. Recommended maximum length is 500 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;localizedHeader&quot;: { # Translated strings for the header. Recommended maximum length is 35 characters to ensure full string is displayed on smaller screens.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the offer, such as &quot;20% off any t-shirt.&quot; Recommended maximum length is 60 characters to ensure full string is displayed on smaller screens.
  &quot;titleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # The title image of the offer. This image is displayed in both the details and list views of the app.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Deprecated
  &quot;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the offer.
  &quot;wideTitleImage&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # 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.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
  &quot;wordMark&quot;: { # Wrapping type for Google hosted images. Next ID: 7 # Deprecated.
    &quot;contentDescription&quot;: { # Description of the image used for accessibility.
      &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
        &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
        &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
      &quot;translatedValues&quot;: [ # Contains the translations for the string.
        {
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
      ],
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#image&quot;`.
    &quot;sourceUri&quot;: { # The URI for the image.
      &quot;description&quot;: &quot;A String&quot;, # Additional information about the image, which is unused and retained only for backward compatibility.
      &quot;localizedDescription&quot;: { # Translated strings for the description, which are unused and retained only for backward compatibility.
        &quot;defaultValue&quot;: { # Contains the string to be displayed if no appropriate translation is available.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
          &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
          &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#localizedString&quot;`.
        &quot;translatedValues&quot;: [ # Contains the translations for the string.
          {
            &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;walletobjects#translatedString&quot;`.
            &quot;language&quot;: &quot;A String&quot;, # Represents the BCP 47 language tag. Example values are &quot;en-US&quot;, &quot;en-GB&quot;, &quot;de&quot;, or &quot;de-AT&quot;.
            &quot;value&quot;: &quot;A String&quot;, # The UTF-8 encoded translated string.
          },
        ],
      },
      &quot;uri&quot;: &quot;A String&quot;, # The location of the image. URIs must have a scheme.
    },
  },
}</pre>
</div>

</body></html>