<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.genericclass.html">genericclass</a></h1>
<h2>Instance Methods</h2>
<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 generic 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 a generic 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 generic 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 generic 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 Generic class referenced by the given class ID.</p>
<h3>Method Details</h3>
<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 generic 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 needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}</pre>
</div>

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

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

{ # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}

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

Returns:
  An object of the form:

    { # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}</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 generic 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:

    { # List response which contains the list of all generic classes for a given issuer ID.
  &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.
    { # Generic Class
      &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
      &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
      &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
        {
          &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
        &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
      &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
        { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(resourceId, body=None, x__xgafv=None)</code>
  <pre>Updates the generic 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 needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}

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

Returns:
  An object of the form:

    { # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(resourceId, body=None, x__xgafv=None)</code>
  <pre>Updates the Generic 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 needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}

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

Returns:
  An object of the form:

    { # Generic Class
  &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;enableSmartTap&quot;: True or False, # Available only to Smart Tap enabled partners. Contact support for additional guidance.
  &quot;id&quot;: &quot;A String&quot;, # Required. The unique identifier for the class. This ID must be unique across all from an issuer. This value needs to follow the format `issuerID.identifier` where `issuerID` is issued by Google and `identifier` is chosen by you. The unique identifier can only include alphanumeric characters, `.`, `_`, or `-`.
  &quot;imageModulesData&quot;: [ # Image module data. If `imageModulesData` is also defined on the object, both will be displayed. Only one of the image from class and one from object level will be rendered when both set.
    {
      &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;linksModuleData&quot;: { # Links module data. If `linksModuleData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    &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;multipleDevicesAndHoldersAllowedStatus&quot;: &quot;A String&quot;, # Identifies whether multiple users and devices will save the same object referencing this class.
  &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;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;textModulesData&quot;: [ # Text module data. If `textModulesData` is also defined on the object, both will be displayed. The maximum number of these fields displayed is 10 from class and 10 from object.
    { # 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;viewUnlockRequirement&quot;: &quot;A String&quot;, # View Unlock Requirement options for the generic pass.
}</pre>
</div>

</body></html>