<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="jobs_v4.html">Cloud Talent Solution API</a> . <a href="jobs_v4.projects.html">projects</a> . <a href="jobs_v4.projects.tenants.html">tenants</a> . <a href="jobs_v4.projects.tenants.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchCreate">batchCreate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Begins executing a batch create jobs operation.</p>
<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Begins executing a batch delete jobs operation.</p>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Begins executing a batch update jobs operation.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new job. Typically, the job becomes searchable within 10 seconds, but it may take up to 5 minutes.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified job. Typically, the job becomes unsearchable within 10 seconds, but it may take up to 5 minutes.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified job, whose status is OPEN or recently EXPIRED within the last 90 days.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, jobView=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists jobs by filter.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates specified job. Typically, updated contents become visible in search results within 10 seconds, but it may take up to 5 minutes.</p>
<p class="toc_element">
  <code><a href="#search">search(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Searches for jobs using the provided SearchJobsRequest. This call constrains the visibility of jobs present in the database, and only returns jobs that the caller has permission to search against.</p>
<p class="toc_element">
  <code><a href="#searchForAlert">searchForAlert(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Searches for jobs using the provided SearchJobsRequest. This API call is intended for the use case of targeting passive job seekers (for example, job seekers who have signed up to receive email alerts about potential job opportunities), it has different algorithmic adjustments that are designed to specifically target passive job seekers. This call constrains the visibility of jobs present in the database, and only returns jobs the caller has permission to search against.</p>
<p class="toc_element">
  <code><a href="#searchForAlert_next">searchForAlert_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#search_next">search_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchCreate">batchCreate(parent, body=None, x__xgafv=None)</code>
  <pre>Begins executing a batch create jobs operation.

Args:
  parent: string, Required. The resource name of the tenant under which the job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to create a batch of jobs.
  &quot;jobs&quot;: [ # Required. The jobs to be created. A maximum of 200 jobs can be created in a batch.
    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
      &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
        &quot;A String&quot;,
      ],
      &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
        &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
          &quot;A String&quot;,
        ],
        &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
        &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
          &quot;A String&quot;,
        ],
      },
      &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
      &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
      &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
        &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
          { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
            &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
            &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
            &quot;range&quot;: { # Compensation range. # Compensation range.
              &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
            },
            &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
            &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
          },
        ],
      },
      &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
        &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
          &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
          &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
          &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
            &quot;A String&quot;,
          ],
          &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
        &quot;A String&quot;,
      ],
      &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
      &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
        &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
          &quot;A String&quot;,
        ],
        &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
          { # A resource that represents a location with full geographic information.
            &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
            &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
              &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
                &quot;A String&quot;,
              ],
              &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
              &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
              &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
              &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
              &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
              &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
                &quot;A String&quot;,
              ],
              &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
              &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
              &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
              &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
            },
            &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
      &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
        &quot;A String&quot;,
      ],
      &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
      &quot;jobBenefits&quot;: [ # The benefits included with the job.
        &quot;A String&quot;,
      ],
      &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
      &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
      &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
      &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
      &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
      &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
      &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
      &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
      &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
        &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
        &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
      },
      &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
      &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
      &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
      &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
    },
  ],
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="batchDelete">batchDelete(parent, body=None, x__xgafv=None)</code>
  <pre>Begins executing a batch delete jobs operation.

Args:
  parent: string, Required. The resource name of the tenant under which the job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. The parent of all of the jobs specified in `names` must match this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to delete a batch of jobs.
  &quot;names&quot;: [ # The names of the jobs to delete. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. A maximum of 200 jobs can be deleted in a batch.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(parent, body=None, x__xgafv=None)</code>
  <pre>Begins executing a batch update jobs operation.

Args:
  parent: string, Required. The resource name of the tenant under which the job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to update a batch of jobs.
  &quot;jobs&quot;: [ # Required. The jobs to be updated. A maximum of 200 jobs can be updated in a batch.
    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
      &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
        &quot;A String&quot;,
      ],
      &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
        &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
          &quot;A String&quot;,
        ],
        &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
        &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
          &quot;A String&quot;,
        ],
      },
      &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
      &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
      &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
        &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
          { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
            &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
            &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
            &quot;range&quot;: { # Compensation range. # Compensation range.
              &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
            },
            &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
            &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
          },
        ],
      },
      &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
        &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
          &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
          &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
          &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
            &quot;A String&quot;,
          ],
          &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
        &quot;A String&quot;,
      ],
      &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
      &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
        &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
          &quot;A String&quot;,
        ],
        &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
          { # A resource that represents a location with full geographic information.
            &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
            &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
              &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
                &quot;A String&quot;,
              ],
              &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
              &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
              &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
              &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
              &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
              &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
                &quot;A String&quot;,
              ],
              &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
              &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
              &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
              &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
            },
            &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
      &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
        &quot;A String&quot;,
      ],
      &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
      &quot;jobBenefits&quot;: [ # The benefits included with the job.
        &quot;A String&quot;,
      ],
      &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
      &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
      &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
      &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
      &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
      &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
      &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
      &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
      &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
        &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
        &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
      },
      &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
      &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
      &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
      &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
    },
  ],
  &quot;updateMask&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. Be aware that it will also increase latency when checking the status of a batch operation. If update_mask is provided, only the specified fields in Job are updated. Otherwise all the fields are updated. A field mask to restrict the fields that are updated. Only top level fields of Job are supported. If update_mask is provided, The Job inside JobResult will only contains fields that is updated, plus the Id of the Job. Otherwise, Job will include all fields, which can yield a very large response.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

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

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new job. Typically, the job becomes searchable within 10 seconds, but it may take up to 5 minutes.

Args:
  parent: string, Required. The resource name of the tenant under which the job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
  &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
    &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
      &quot;A String&quot;,
    ],
    &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
    &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
      &quot;A String&quot;,
    ],
  },
  &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
  &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
      { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
        &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
        &quot;range&quot;: { # Compensation range. # Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
    &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
      &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
      &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
      &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
        &quot;A String&quot;,
      ],
      &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
    &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
      { # A resource that represents a location with full geographic information.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
        &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
          &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
            &quot;A String&quot;,
          ],
          &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
          &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
          &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
          &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
            &quot;A String&quot;,
          ],
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
          &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
          &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
          &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
        },
        &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
  &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
    &quot;A String&quot;,
  ],
  &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
  &quot;jobBenefits&quot;: [ # The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
  &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
  &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
  &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
  &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
  &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
  &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
  &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
    &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
  &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
  &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
}

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

Returns:
  An object of the form:

    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
  &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
    &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
      &quot;A String&quot;,
    ],
    &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
    &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
      &quot;A String&quot;,
    ],
  },
  &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
  &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
      { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
        &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
        &quot;range&quot;: { # Compensation range. # Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
    &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
      &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
      &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
      &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
        &quot;A String&quot;,
      ],
      &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
    &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
      { # A resource that represents a location with full geographic information.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
        &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
          &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
            &quot;A String&quot;,
          ],
          &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
          &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
          &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
          &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
            &quot;A String&quot;,
          ],
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
          &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
          &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
          &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
        },
        &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
  &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
    &quot;A String&quot;,
  ],
  &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
  &quot;jobBenefits&quot;: [ # The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
  &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
  &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
  &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
  &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
  &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
  &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
  &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
    &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
  &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
  &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified job. Typically, the job becomes unsearchable within 10 seconds, but it may take up to 5 minutes.

Args:
  name: string, Required. The resource name of the job to be deleted. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves the specified job, whose status is OPEN or recently EXPIRED within the last 90 days.

Args:
  name: string, Required. The resource name of the job to retrieve. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
  &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
    &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
      &quot;A String&quot;,
    ],
    &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
    &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
      &quot;A String&quot;,
    ],
  },
  &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
  &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
      { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
        &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
        &quot;range&quot;: { # Compensation range. # Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
    &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
      &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
      &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
      &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
        &quot;A String&quot;,
      ],
      &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
    &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
      { # A resource that represents a location with full geographic information.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
        &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
          &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
            &quot;A String&quot;,
          ],
          &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
          &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
          &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
          &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
            &quot;A String&quot;,
          ],
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
          &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
          &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
          &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
        },
        &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
  &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
    &quot;A String&quot;,
  ],
  &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
  &quot;jobBenefits&quot;: [ # The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
  &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
  &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
  &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
  &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
  &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
  &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
  &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
    &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
  &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
  &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, jobView=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists jobs by filter.

Args:
  parent: string, Required. The resource name of the tenant under which the job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  filter: string, Required. The filter string specifies the jobs to be enumerated. Supported operator: =, AND The fields eligible for filtering are: * `companyName` (Required) * `requisitionId` * `status` Available values: OPEN, EXPIRED, ALL. Defaults to OPEN if no value is specified. Sample Query: * companyName = &quot;projects/foo/tenants/bar/companies/baz&quot; * companyName = &quot;projects/foo/tenants/bar/companies/baz&quot; AND requisitionId = &quot;req-1&quot; * companyName = &quot;projects/foo/tenants/bar/companies/baz&quot; AND status = &quot;EXPIRED&quot;
  jobView: string, The desired job attributes returned for jobs in the search response. Defaults to JobView.JOB_VIEW_FULL if no value is specified.
    Allowed values
      JOB_VIEW_UNSPECIFIED - Default value.
      JOB_VIEW_ID_ONLY - A ID only view of job, with following attributes: Job.name, Job.requisition_id, Job.language_code.
      JOB_VIEW_MINIMAL - A minimal view of the job, with the following attributes: Job.name, Job.requisition_id, Job.title, Job.company, Job.DerivedInfo.locations, Job.language_code.
      JOB_VIEW_SMALL - A small view of the job, with the following attributes in the search results: Job.name, Job.requisition_id, Job.title, Job.company, Job.DerivedInfo.locations, Job.visibility, Job.language_code, Job.description.
      JOB_VIEW_FULL - All available attributes are included in the search results.
  pageSize: integer, The maximum number of jobs to be returned per page of results. If job_view is set to JobView.JOB_VIEW_ID_ONLY, the maximum allowed page size is 1000. Otherwise, the maximum allowed page size is 100. Default is 100 if empty or a number &lt; 1 is specified.
  pageToken: string, The starting point of a query result.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List jobs response.
  &quot;jobs&quot;: [ # The Jobs for a given company. The maximum number of items returned is based on the limit field provided in the request.
    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
      &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
        &quot;A String&quot;,
      ],
      &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
        &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
          &quot;A String&quot;,
        ],
        &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
        &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
          &quot;A String&quot;,
        ],
      },
      &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
      &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
      &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
        &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
          { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
            &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
            &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
            &quot;range&quot;: { # Compensation range. # Compensation range.
              &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
            },
            &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
            &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
          },
        ],
      },
      &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
        &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
          &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
          &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
          &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
            &quot;A String&quot;,
          ],
          &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
        &quot;A String&quot;,
      ],
      &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
      &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
        &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
          &quot;A String&quot;,
        ],
        &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
          { # A resource that represents a location with full geographic information.
            &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
            &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
              &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
                &quot;A String&quot;,
              ],
              &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
              &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
              &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
              &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
              &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
              &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
                &quot;A String&quot;,
              ],
              &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
              &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
              &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
              &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
            },
            &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
      &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
        &quot;A String&quot;,
      ],
      &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
      &quot;jobBenefits&quot;: [ # The benefits included with the job.
        &quot;A String&quot;,
      ],
      &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
      &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
      &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
      &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
      &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
      &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
      &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
      &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
      &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
      &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
        &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
        &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
      },
      &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
      &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
      &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
      &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
    },
  ],
  &quot;metadata&quot;: { # Additional information returned to client, such as debugging information. # Additional information for the API invocation, such as the request tracking id.
    &quot;requestId&quot;: &quot;A String&quot;, # A unique id associated with this call. This id is logged for tracking purposes.
  },
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates specified job. Typically, updated contents become visible in search results within 10 seconds, but it may take up to 5 minutes.

Args:
  name: string, Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
  &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
    &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
      &quot;A String&quot;,
    ],
    &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
    &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
      &quot;A String&quot;,
    ],
  },
  &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
  &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
      { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
        &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
        &quot;range&quot;: { # Compensation range. # Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
    &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
      &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
      &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
      &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
        &quot;A String&quot;,
      ],
      &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
    &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
      { # A resource that represents a location with full geographic information.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
        &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
          &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
            &quot;A String&quot;,
          ],
          &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
          &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
          &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
          &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
            &quot;A String&quot;,
          ],
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
          &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
          &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
          &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
        },
        &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
  &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
    &quot;A String&quot;,
  ],
  &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
  &quot;jobBenefits&quot;: [ # The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
  &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
  &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
  &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
  &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
  &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
  &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
  &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
    &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
  &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
  &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
}

  updateMask: string, Strongly recommended for the best service experience. If update_mask is provided, only the specified fields in job are updated. Otherwise all the fields are updated. A field mask to restrict the fields that are updated. Only top level fields of Job are supported.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job.
  &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
    &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
      &quot;A String&quot;,
    ],
    &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
    &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
      &quot;A String&quot;,
    ],
  },
  &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
  &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
      &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
      &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
      },
    },
    &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
      { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
        &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
        &quot;range&quot;: { # Compensation range. # Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
    &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
      &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
      &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
      &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
        &quot;A String&quot;,
      ],
      &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
    &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
      &quot;A String&quot;,
    ],
    &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
      { # A resource that represents a location with full geographic information.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
        &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
          &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
            &quot;A String&quot;,
          ],
          &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
          &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
          &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
          &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
            &quot;A String&quot;,
          ],
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
          &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
          &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
          &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
        },
        &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
  &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
    &quot;A String&quot;,
  ],
  &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
  &quot;jobBenefits&quot;: [ # The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
  &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
  &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
  &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
  &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
  &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
  &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
  &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
    &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
  &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
  &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
}</pre>
</div>

<div class="method">
    <code class="details" id="search">search(parent, body=None, x__xgafv=None)</code>
  <pre>Searches for jobs using the provided SearchJobsRequest. This call constrains the visibility of jobs present in the database, and only returns jobs that the caller has permission to search against.

Args:
  parent: string, Required. The resource name of the tenant to search within. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # The Request body of the `SearchJobs` call.
  &quot;customRankingInfo&quot;: { # Custom ranking information for SearchJobsRequest. # Controls over how job documents get ranked on top of existing relevance score (determined by API algorithm).
    &quot;importanceLevel&quot;: &quot;A String&quot;, # Required. Controls over how important the score of CustomRankingInfo.ranking_expression gets applied to job&#x27;s final ranking position. An error is thrown if not specified.
    &quot;rankingExpression&quot;: &quot;A String&quot;, # Required. Controls over how job documents get ranked on top of existing relevance score (determined by API algorithm). A combination of the ranking expression and relevance score is used to determine job&#x27;s final ranking position. The syntax for this expression is a subset of Google SQL syntax. Supported operators are: +, -, *, /, where the left and right side of the operator is either a numeric Job.custom_attributes key, integer/double value or an expression that can be evaluated to a number. Parenthesis are supported to adjust calculation precedence. The expression must be &lt; 100 characters in length. The expression is considered invalid for a job if the expression references custom attributes that are not populated on the job or if the expression results in a divide by zero. If an expression is invalid for a job, that job is demoted to the end of the results. Sample ranking expression (year + 25) * 0.25 - (freshness / 0.5)
  },
  &quot;disableKeywordMatch&quot;: True or False, # Controls whether to disable exact keyword match on Job.title, Job.description, Job.company_display_name, Job.addresses, Job.qualifications. When disable keyword match is turned off, a keyword match returns jobs that do not match given category filters when there are matching keywords. For example, for the query &quot;program manager,&quot; a result is returned even if the job posting has the title &quot;software developer,&quot; which doesn&#x27;t fall into &quot;program manager&quot; ontology, but does have &quot;program manager&quot; appearing in its description. For queries like &quot;cloud&quot; that don&#x27;t contain title or location specific ontology, jobs with &quot;cloud&quot; keyword matches are returned regardless of this flag&#x27;s value. Use Company.keyword_searchable_job_custom_attributes if company-specific globally matched custom field/attribute string values are needed. Enabling keyword match improves recall of subsequent search requests. Defaults to false.
  &quot;diversificationLevel&quot;: &quot;A String&quot;, # Controls whether highly similar jobs are returned next to each other in the search results. Jobs are identified as highly similar based on their titles, job categories, and locations. Highly similar results are clustered so that only one representative job of the cluster is displayed to the job seeker higher up in the results, with the other jobs being displayed lower down in the results. Defaults to DiversificationLevel.SIMPLE if no value is specified.
  &quot;enableBroadening&quot;: True or False, # Controls whether to broaden the search when it produces sparse results. Broadened queries append results to the end of the matching results list. Defaults to false.
  &quot;histogramQueries&quot;: [ # An expression specifies a histogram request against matching jobs. Expression syntax is an aggregation function call with histogram facets and other options. Available aggregation function calls are: * `count(string_histogram_facet)`: Count the number of matching entities, for each distinct attribute value. * `count(numeric_histogram_facet, list of buckets)`: Count the number of matching entities within each bucket. Data types: * Histogram facet: facet names with format a-zA-Z+. * String: string like &quot;any string with backslash escape for quote(\&quot;).&quot; * Number: whole number and floating point number like 10, -1 and -0.01. * List: list of elements with comma(,) separator surrounded by square brackets, for example, [1, 2, 3] and [&quot;one&quot;, &quot;two&quot;, &quot;three&quot;]. Built-in constants: * MIN (minimum number similar to java Double.MIN_VALUE) * MAX (maximum number similar to java Double.MAX_VALUE) Built-in functions: * bucket(start, end[, label]): bucket built-in function creates a bucket with range of start, end). Note that the end is exclusive, for example, bucket(1, MAX, &quot;positive number&quot;) or bucket(1, 10). Job histogram facets: * company_display_name: histogram by [Job.company_display_name. * employment_type: histogram by Job.employment_types, for example, &quot;FULL_TIME&quot;, &quot;PART_TIME&quot;. * company_size: histogram by CompanySize, for example, &quot;SMALL&quot;, &quot;MEDIUM&quot;, &quot;BIG&quot;. * publish_time_in_month: histogram by the Job.posting_publish_time in months. Must specify list of numeric buckets in spec. * publish_time_in_year: histogram by the Job.posting_publish_time in years. Must specify list of numeric buckets in spec. * degree_types: histogram by the Job.degree_types, for example, &quot;Bachelors&quot;, &quot;Masters&quot;. * job_level: histogram by the Job.job_level, for example, &quot;Entry Level&quot;. * country: histogram by the country code of jobs, for example, &quot;US&quot;, &quot;FR&quot;. * admin1: histogram by the admin1 code of jobs, which is a global placeholder referring to the state, province, or the particular term a country uses to define the geographic structure below the country level, for example, &quot;CA&quot;, &quot;IL&quot;. * city: histogram by a combination of the &quot;city name, admin1 code&quot;. For example, &quot;Mountain View, CA&quot;, &quot;New York, NY&quot;. * admin1_country: histogram by a combination of the &quot;admin1 code, country&quot;, for example, &quot;CA, US&quot;, &quot;IL, US&quot;. * city_coordinate: histogram by the city center&#x27;s GPS coordinates (latitude and longitude), for example, 37.4038522,-122.0987765. Since the coordinates of a city center can change, customers may need to refresh them periodically. * locale: histogram by the Job.language_code, for example, &quot;en-US&quot;, &quot;fr-FR&quot;. * language: histogram by the language subtag of the Job.language_code, for example, &quot;en&quot;, &quot;fr&quot;. * category: histogram by the JobCategory, for example, &quot;COMPUTER_AND_IT&quot;, &quot;HEALTHCARE&quot;. * base_compensation_unit: histogram by the CompensationInfo.CompensationUnit of base salary, for example, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;. * base_compensation: histogram by the base salary. Must specify list of numeric buckets to group results by. * annualized_base_compensation: histogram by the base annualized salary. Must specify list of numeric buckets to group results by. * annualized_total_compensation: histogram by the total annualized salary. Must specify list of numeric buckets to group results by. * string_custom_attribute: histogram by string Job.custom_attributes. Values can be accessed via square bracket notations like string_custom_attribute[&quot;key1&quot;]. * numeric_custom_attribute: histogram by numeric Job.custom_attributes. Values can be accessed via square bracket notations like numeric_custom_attribute[&quot;key1&quot;]. Must specify list of numeric buckets to group results by. Example expressions: * `count(admin1)` * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), bucket(100000, MAX)])` * `count(string_custom_attribute[&quot;some-string-custom-attribute&quot;])` * `count(numeric_custom_attribute[&quot;some-numeric-custom-attribute&quot;], [bucket(MIN, 0, &quot;negative&quot;), bucket(0, MAX, &quot;non-negative&quot;])`
    { # The histogram request.
      &quot;histogramQuery&quot;: &quot;A String&quot;, # An expression specifies a histogram request against matching jobs for searches. See SearchJobsRequest.histogram_queries for details about syntax.
    },
  ],
  &quot;jobQuery&quot;: { # The query required to perform a search query. # Query used to search against jobs, such as keyword, location filters, etc.
    &quot;commuteFilter&quot;: { # Parameters needed for commute search. # Allows filtering jobs by commute time with different travel methods (for example, driving or public transit). Note: This only works when you specify a CommuteMethod. In this case, location_filters is ignored. Currently we don&#x27;t support sorting by commute time.
      &quot;allowImpreciseAddresses&quot;: True or False, # If `true`, jobs without street level addresses may also be returned. For city level addresses, the city center is used. For state and coarser level addresses, text matching is used. If this field is set to `false` or isn&#x27;t specified, only jobs that include street level addresses will be returned by commute search.
      &quot;commuteMethod&quot;: &quot;A String&quot;, # Required. The method of transportation to calculate the commute time for.
      &quot;departureTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The departure time used to calculate traffic impact, represented as google.type.TimeOfDay in local time zone. Currently traffic model is restricted to hour level resolution.
        &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
        &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
        &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
        &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
      },
      &quot;roadTraffic&quot;: &quot;A String&quot;, # Specifies the traffic density to use when calculating commute time.
      &quot;startCoordinates&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Required. The latitude and longitude of the location to calculate the commute time from.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;travelDuration&quot;: &quot;A String&quot;, # Required. The maximum travel time in seconds. The maximum allowed value is `3600s` (one hour). Format is `123s`.
    },
    &quot;companies&quot;: [ # This filter specifies the company entities to search against. If a value isn&#x27;t specified, jobs are searched for against all companies. If multiple values are specified, jobs are searched against the companies specified. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;. At most 20 company filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;companyDisplayNames&quot;: [ # This filter specifies the exact company Company.display_name of the jobs to search against. If a value isn&#x27;t specified, jobs within the search results are associated with any company. If multiple values are specified, jobs within the search results may be associated with any of the specified companies. At most 20 company display name filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;compensationFilter&quot;: { # Filter on job compensation type and amount. # This search filter is applied only to Job.compensation_info. For example, if the filter is specified as &quot;Hourly job with per-hour compensation &gt; $15&quot;, only jobs meeting these criteria are searched. If a filter isn&#x27;t defined, all open jobs are searched.
      &quot;includeJobsWithUnspecifiedCompensationRange&quot;: True or False, # If set to true, jobs with unspecified compensation range fields are included.
      &quot;range&quot;: { # Compensation range. # Compensation range.
        &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. Type of filter.
      &quot;units&quot;: [ # Required. Specify desired `base compensation entry&#x27;s` CompensationInfo.CompensationUnit.
        &quot;A String&quot;,
      ],
    },
    &quot;customAttributeFilter&quot;: &quot;A String&quot;, # This filter specifies a structured syntax to match against the Job.custom_attributes marked as `filterable`. The syntax for this expression is a subset of SQL syntax. Supported operators are: `=`, `!=`, `&lt;`, `&lt;=`, `&gt;`, and `&gt;=` where the left of the operator is a custom field key and the right of the operator is a number or a quoted string. You must escape backslash (\\) and quote (\&quot;) characters. Supported functions are `LOWER([field_name])` to perform a case insensitive match and `EMPTY([field_name])` to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, &quot;((A AND B AND C) OR NOT D) AND E&quot;), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be &lt; 6000 bytes in length. Sample Query: `(LOWER(driving_license)=&quot;class \&quot;a\&quot;&quot; OR EMPTY(driving_license)) AND driving_years &gt; 10`
    &quot;disableSpellCheck&quot;: True or False, # This flag controls the spell-check feature. If false, the service attempts to correct a misspelled query, for example, &quot;enginee&quot; is corrected to &quot;engineer&quot;. Defaults to false: a spell check is performed.
    &quot;employmentTypes&quot;: [ # The employment type filter specifies the employment type of jobs to search against, such as EmploymentType.FULL_TIME. If a value isn&#x27;t specified, jobs in the search results includes any employment type. If multiple values are specified, jobs in the search results include any of the specified employment types.
      &quot;A String&quot;,
    ],
    &quot;excludedJobs&quot;: [ # This filter specifies a list of job names to be excluded during search. At most 400 excluded job names are allowed.
      &quot;A String&quot;,
    ],
    &quot;jobCategories&quot;: [ # The category filter specifies the categories of jobs to search against. See JobCategory for more information. If a value isn&#x27;t specified, jobs from any category are searched against. If multiple values are specified, jobs from any of the specified categories are searched against.
      &quot;A String&quot;,
    ],
    &quot;languageCodes&quot;: [ # This filter specifies the locale of jobs to search against, for example, &quot;en-US&quot;. If a value isn&#x27;t specified, the search results can contain jobs in any locale. Language codes should be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). At most 10 language code filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;locationFilters&quot;: [ # The location filter specifies geo-regions containing the jobs to search against. See LocationFilter for more information. If a location value isn&#x27;t specified, jobs fitting the other search criteria are retrieved regardless of where they&#x27;re located. If multiple values are specified, jobs are retrieved from any of the specified locations. If different values are specified for the LocationFilter.distance_in_miles parameter, the maximum provided distance is used for all locations. At most 5 location filters are allowed.
      { # Geographic region of the search.
        &quot;address&quot;: &quot;A String&quot;, # The address name, such as &quot;Mountain View&quot; or &quot;Bay Area&quot;.
        &quot;distanceInMiles&quot;: 3.14, # The distance_in_miles is applied when the location being searched for is identified as a city or smaller. This field is ignored if the location being searched for is a state or larger.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # The latitude and longitude of the geographic center to search from. This field is ignored if `address` is provided.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;regionCode&quot;: &quot;A String&quot;, # CLDR region code of the country/region. This field may be used in two ways: 1) If telecommute preference is not set, this field is used address ambiguity of the user-input address. For example, &quot;Liverpool&quot; may refer to &quot;Liverpool, NY, US&quot; or &quot;Liverpool, UK&quot;. This region code biases the address resolution toward a specific country or territory. If this field is not set, address resolution is biased toward the United States by default. 2) If telecommute preference is set to TELECOMMUTE_ALLOWED, the telecommute location filter will be limited to the region specified in this field. If this field is not set, the telecommute job locations will not be See https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
        &quot;telecommutePreference&quot;: &quot;A String&quot;, # Allows the client to return jobs without a set location, specifically, telecommuting jobs (telecommuting is considered by the service as a special location. Job.posting_region indicates if a job permits telecommuting. If this field is set to TelecommutePreference.TELECOMMUTE_ALLOWED, telecommuting jobs are searched, and address and lat_lng are ignored. If not set or set to TelecommutePreference.TELECOMMUTE_EXCLUDED, telecommute job are not searched. This filter can be used by itself to search exclusively for telecommuting jobs, or it can be combined with another location filter to search for a combination of job locations, such as &quot;Mountain View&quot; or &quot;telecommuting&quot; jobs. However, when used in combination with other location filters, telecommuting jobs can be treated as less relevant than other jobs in the search response. This field is only used for job search requests.
      },
    ],
    &quot;publishTimeRange&quot;: { # Message representing a period of time between two timestamps. # Jobs published within a range specified by this filter are searched against.
      &quot;endTime&quot;: &quot;A String&quot;, # End of the period (exclusive).
      &quot;startTime&quot;: &quot;A String&quot;, # Begin of the period (inclusive).
    },
    &quot;query&quot;: &quot;A String&quot;, # The query string that matches against the job title, description, and location fields. The maximum number of allowed characters is 255.
    &quot;queryLanguageCode&quot;: &quot;A String&quot;, # The language code of query. For example, &quot;en-US&quot;. This field helps to better interpret the query. If a value isn&#x27;t specified, the query language code is automatically detected, which may not be accurate. Language code should be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).
  },
  &quot;jobView&quot;: &quot;A String&quot;, # The desired job attributes returned for jobs in the search response. Defaults to JobView.JOB_VIEW_SMALL if no value is specified.
  &quot;maxPageSize&quot;: 42, # A limit on the number of jobs returned in the search results. Increasing this value above the default value of 10 can increase search response time. The value can be between 1 and 100.
  &quot;offset&quot;: 42, # An integer that specifies the current offset (that is, starting result location, amongst the jobs deemed by the API as relevant) in search results. This field is only considered if page_token is unset. The maximum allowed value is 5000. Otherwise an error is thrown. For example, 0 means to return results starting from the first matching job, and 10 means to return from the 11th job. This can be used for pagination, (for example, pageSize = 10 and offset = 10 means to return from the second page).
  &quot;orderBy&quot;: &quot;A String&quot;, # The criteria determining how search results are sorted. Default is `&quot;relevance desc&quot;`. Supported options are: * `&quot;relevance desc&quot;`: By relevance descending, as determined by the API algorithms. Relevance thresholding of query results is only available with this ordering. * `&quot;posting_publish_time desc&quot;`: By Job.posting_publish_time descending. * `&quot;posting_update_time desc&quot;`: By Job.posting_update_time descending. * `&quot;title&quot;`: By Job.title ascending. * `&quot;title desc&quot;`: By Job.title descending. * `&quot;annualized_base_compensation&quot;`: By job&#x27;s CompensationInfo.annualized_base_compensation_range ascending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_base_compensation desc&quot;`: By job&#x27;s CompensationInfo.annualized_base_compensation_range descending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_total_compensation&quot;`: By job&#x27;s CompensationInfo.annualized_total_compensation_range ascending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_total_compensation desc&quot;`: By job&#x27;s CompensationInfo.annualized_total_compensation_range descending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;custom_ranking desc&quot;`: By the relevance score adjusted to the SearchJobsRequest.CustomRankingInfo.ranking_expression with weight factor assigned by SearchJobsRequest.CustomRankingInfo.importance_level in descending order. * Location sorting: Use the special syntax to order jobs by distance: `&quot;distance_from(&#x27;Hawaii&#x27;)&quot;`: Order by distance from Hawaii. `&quot;distance_from(19.89, 155.5)&quot;`: Order by distance from a coordinate. `&quot;distance_from(&#x27;Hawaii&#x27;), distance_from(&#x27;Puerto Rico&#x27;)&quot;`: Order by multiple locations. See details below. `&quot;distance_from(&#x27;Hawaii&#x27;), distance_from(19.89, 155.5)&quot;`: Order by multiple locations. See details below. The string can have a maximum of 256 characters. When multiple distance centers are provided, a job that is close to any of the distance centers would have a high rank. When a job has multiple locations, the job location closest to one of the distance centers will be used. Jobs that don&#x27;t have locations will be ranked at the bottom. Distance is calculated with a precision of 11.3 meters (37.4 feet). Diversification strategy is still applied unless explicitly disabled in diversification_level.
  &quot;pageToken&quot;: &quot;A String&quot;, # The token specifying the current offset within search results. See SearchJobsResponse.next_page_token for an explanation of how to obtain the next set of query results.
  &quot;requestMetadata&quot;: { # Meta information related to the job searcher or entity conducting the job search. This information is used to improve the performance of the service. # Required. The meta information collected about the job searcher, used to improve the search quality of the service. The identifiers (such as `user_id`) are provided by users, and must be unique and consistent.
    &quot;allowMissingIds&quot;: True or False, # Only set when any of domain, session_id and user_id isn&#x27;t available for some reason. It is highly recommended not to set this field and provide accurate domain, session_id and user_id for the best service experience.
    &quot;deviceInfo&quot;: { # Device information collected from the job seeker, candidate, or other entity conducting the job search. Providing this information improves the quality of the search results across devices. # The type of device used by the job seeker at the time of the call to the service.
      &quot;deviceType&quot;: &quot;A String&quot;, # Type of the device.
      &quot;id&quot;: &quot;A String&quot;, # A device-specific ID. The ID must be a unique identifier that distinguishes the device from other devices.
    },
    &quot;domain&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. The client-defined scope or source of the service call, which typically is the domain on which the service has been implemented and is currently being run. For example, if the service is being run by client *Foo, Inc.*, on job board www.foo.com and career site www.bar.com, then this field is set to &quot;foo.com&quot; for use on the job board, and &quot;bar.com&quot; for use on the career site. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique domain. The maximum number of allowed characters is 255.
    &quot;sessionId&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. A unique session identification string. A session is defined as the duration of an end user&#x27;s interaction with the service over a certain period. Obfuscate this field for privacy concerns before providing it to the service. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique session ID. The maximum number of allowed characters is 255.
    &quot;userId&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. A unique user identification string, as determined by the client. To have the strongest positive impact on search quality make sure the client-level is unique. Obfuscate this field for privacy concerns before providing it to the service. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique user ID. The maximum number of allowed characters is 255.
  },
  &quot;searchMode&quot;: &quot;A String&quot;, # Mode of a search. Defaults to SearchMode.JOB_SEARCH.
}

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

Returns:
  An object of the form:

    { # Response for SearchJob method.
  &quot;broadenedQueryJobsCount&quot;: 42, # If query broadening is enabled, we may append additional results from the broadened query. This number indicates how many of the jobs returned in the jobs field are from the broadened query. These results are always at the end of the jobs list. In particular, a value of 0, or if the field isn&#x27;t set, all the jobs in the jobs list are from the original (without broadening) query. If this field is non-zero, subsequent requests with offset after this result set should contain all broadened results.
  &quot;histogramQueryResults&quot;: [ # The histogram results that match with specified SearchJobsRequest.histogram_queries.
    { # Histogram result that matches HistogramQuery specified in searches.
      &quot;histogram&quot;: { # A map from the values of the facet associated with distinct values to the number of matching entries with corresponding value. The key format is: * (for string histogram) string values stored in the field. * (for named numeric bucket) name specified in `bucket()` function, like for `bucket(0, MAX, &quot;non-negative&quot;)`, the key will be `non-negative`. * (for anonymous numeric bucket) range formatted as `-`, for example, `0-1000`, `MIN-0`, and `0-MAX`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;histogramQuery&quot;: &quot;A String&quot;, # Requested histogram expression.
    },
  ],
  &quot;locationFilters&quot;: [ # The location filters that the service applied to the specified query. If any filters are lat-lng based, the Location.location_type is Location.LocationType.LOCATION_TYPE_UNSPECIFIED.
    { # A resource that represents a location with full geographic information.
      &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
      &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
        &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
          &quot;A String&quot;,
        ],
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
        &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
        &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
        &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
        &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
        &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
          &quot;A String&quot;,
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
        &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
        &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
        &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
      },
      &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
    },
  ],
  &quot;matchingJobs&quot;: [ # The Job entities that match the specified SearchJobsRequest.
    { # Job entry with metadata inside SearchJobsResponse.
      &quot;commuteInfo&quot;: { # Commute details related to this job. # Commute information which is generated based on specified CommuteFilter.
        &quot;jobLocation&quot;: { # A resource that represents a location with full geographic information. # Location used as the destination in the commute calculation.
          &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
          &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
            &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
              &quot;A String&quot;,
            ],
            &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
            &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
            &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
            &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
            &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
            &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
              &quot;A String&quot;,
            ],
            &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
            &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
            &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
            &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
          },
          &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
        },
        &quot;travelDuration&quot;: &quot;A String&quot;, # The number of seconds required to travel to the job location from the query location. A duration of 0 seconds indicates that the job isn&#x27;t reachable within the requested duration, but was returned as part of an expanded query.
      },
      &quot;job&quot;: { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job. # Job resource that matches the specified SearchJobsRequest.
        &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
          &quot;A String&quot;,
        ],
        &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
          &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
            &quot;A String&quot;,
          ],
          &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
          &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
            &quot;A String&quot;,
          ],
        },
        &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
        &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
        &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
          &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
          },
          &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
          },
          &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
            { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
              &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
              &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
              &quot;range&quot;: { # Compensation range. # Compensation range.
                &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
                  &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                  &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                  &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                },
                &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
                  &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                  &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                  &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                },
              },
              &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
              &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
            },
          ],
        },
        &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
          &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
            &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
            &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
            &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
              &quot;A String&quot;,
            ],
            &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
          &quot;A String&quot;,
        ],
        &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
        &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
          &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
            &quot;A String&quot;,
          ],
          &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
            { # A resource that represents a location with full geographic information.
              &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
              &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
                &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
                  &quot;A String&quot;,
                ],
                &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
                &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
                &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
                &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
                &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
                &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
                  &quot;A String&quot;,
                ],
                &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
                &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
                &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
                &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
              },
              &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
        &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
          &quot;A String&quot;,
        ],
        &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
        &quot;jobBenefits&quot;: [ # The benefits included with the job.
          &quot;A String&quot;,
        ],
        &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
        &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
        &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
        &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
        &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
        &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
        &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
        &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
        &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
        &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
        &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
          &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
          &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
        },
        &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
        &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
        &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
        &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
        &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
        &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
      },
      &quot;jobSummary&quot;: &quot;A String&quot;, # A summary of the job with core information that&#x27;s displayed on the search results listing page.
      &quot;jobTitleSnippet&quot;: &quot;A String&quot;, # Contains snippets of text from the Job.title field most closely matching a search query&#x27;s keywords, if available. The matching query keywords are enclosed in HTML bold tags.
      &quot;searchTextSnippet&quot;: &quot;A String&quot;, # Contains snippets of text from the Job.description and similar fields that most closely match a search query&#x27;s keywords, if available. All HTML tags in the original fields are stripped when returned in this field, and matching query keywords are enclosed in HTML bold tags.
    },
  ],
  &quot;metadata&quot;: { # Additional information returned to client, such as debugging information. # Additional information for the API invocation, such as the request tracking id.
    &quot;requestId&quot;: &quot;A String&quot;, # A unique id associated with this call. This id is logged for tracking purposes.
  },
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that specifies the starting position of the next page of results. This field is empty if there are no more results.
  &quot;spellCorrection&quot;: { # Spell check result. # The spell checking result, and correction.
    &quot;corrected&quot;: True or False, # Indicates if the query was corrected by the spell checker.
    &quot;correctedHtml&quot;: &quot;A String&quot;, # Corrected output with html tags to highlight the corrected words. Corrected words are called out with the &quot;*...*&quot; html tags. For example, the user input query is &quot;software enginear&quot;, where the second word, &quot;enginear,&quot; is incorrect. It should be &quot;engineer&quot;. When spelling correction is enabled, this value is &quot;software *engineer*&quot;.
    &quot;correctedText&quot;: &quot;A String&quot;, # Correction output consisting of the corrected keyword string.
  },
  &quot;totalSize&quot;: 42, # Number of jobs that match the specified query. Note: This size is precise only if the total is less than 100,000.
}</pre>
</div>

<div class="method">
    <code class="details" id="searchForAlert">searchForAlert(parent, body=None, x__xgafv=None)</code>
  <pre>Searches for jobs using the provided SearchJobsRequest. This API call is intended for the use case of targeting passive job seekers (for example, job seekers who have signed up to receive email alerts about potential job opportunities), it has different algorithmic adjustments that are designed to specifically target passive job seekers. This call constrains the visibility of jobs present in the database, and only returns jobs the caller has permission to search against.

Args:
  parent: string, Required. The resource name of the tenant to search within. The format is &quot;projects/{project_id}/tenants/{tenant_id}&quot;. For example, &quot;projects/foo/tenants/bar&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # The Request body of the `SearchJobs` call.
  &quot;customRankingInfo&quot;: { # Custom ranking information for SearchJobsRequest. # Controls over how job documents get ranked on top of existing relevance score (determined by API algorithm).
    &quot;importanceLevel&quot;: &quot;A String&quot;, # Required. Controls over how important the score of CustomRankingInfo.ranking_expression gets applied to job&#x27;s final ranking position. An error is thrown if not specified.
    &quot;rankingExpression&quot;: &quot;A String&quot;, # Required. Controls over how job documents get ranked on top of existing relevance score (determined by API algorithm). A combination of the ranking expression and relevance score is used to determine job&#x27;s final ranking position. The syntax for this expression is a subset of Google SQL syntax. Supported operators are: +, -, *, /, where the left and right side of the operator is either a numeric Job.custom_attributes key, integer/double value or an expression that can be evaluated to a number. Parenthesis are supported to adjust calculation precedence. The expression must be &lt; 100 characters in length. The expression is considered invalid for a job if the expression references custom attributes that are not populated on the job or if the expression results in a divide by zero. If an expression is invalid for a job, that job is demoted to the end of the results. Sample ranking expression (year + 25) * 0.25 - (freshness / 0.5)
  },
  &quot;disableKeywordMatch&quot;: True or False, # Controls whether to disable exact keyword match on Job.title, Job.description, Job.company_display_name, Job.addresses, Job.qualifications. When disable keyword match is turned off, a keyword match returns jobs that do not match given category filters when there are matching keywords. For example, for the query &quot;program manager,&quot; a result is returned even if the job posting has the title &quot;software developer,&quot; which doesn&#x27;t fall into &quot;program manager&quot; ontology, but does have &quot;program manager&quot; appearing in its description. For queries like &quot;cloud&quot; that don&#x27;t contain title or location specific ontology, jobs with &quot;cloud&quot; keyword matches are returned regardless of this flag&#x27;s value. Use Company.keyword_searchable_job_custom_attributes if company-specific globally matched custom field/attribute string values are needed. Enabling keyword match improves recall of subsequent search requests. Defaults to false.
  &quot;diversificationLevel&quot;: &quot;A String&quot;, # Controls whether highly similar jobs are returned next to each other in the search results. Jobs are identified as highly similar based on their titles, job categories, and locations. Highly similar results are clustered so that only one representative job of the cluster is displayed to the job seeker higher up in the results, with the other jobs being displayed lower down in the results. Defaults to DiversificationLevel.SIMPLE if no value is specified.
  &quot;enableBroadening&quot;: True or False, # Controls whether to broaden the search when it produces sparse results. Broadened queries append results to the end of the matching results list. Defaults to false.
  &quot;histogramQueries&quot;: [ # An expression specifies a histogram request against matching jobs. Expression syntax is an aggregation function call with histogram facets and other options. Available aggregation function calls are: * `count(string_histogram_facet)`: Count the number of matching entities, for each distinct attribute value. * `count(numeric_histogram_facet, list of buckets)`: Count the number of matching entities within each bucket. Data types: * Histogram facet: facet names with format a-zA-Z+. * String: string like &quot;any string with backslash escape for quote(\&quot;).&quot; * Number: whole number and floating point number like 10, -1 and -0.01. * List: list of elements with comma(,) separator surrounded by square brackets, for example, [1, 2, 3] and [&quot;one&quot;, &quot;two&quot;, &quot;three&quot;]. Built-in constants: * MIN (minimum number similar to java Double.MIN_VALUE) * MAX (maximum number similar to java Double.MAX_VALUE) Built-in functions: * bucket(start, end[, label]): bucket built-in function creates a bucket with range of start, end). Note that the end is exclusive, for example, bucket(1, MAX, &quot;positive number&quot;) or bucket(1, 10). Job histogram facets: * company_display_name: histogram by [Job.company_display_name. * employment_type: histogram by Job.employment_types, for example, &quot;FULL_TIME&quot;, &quot;PART_TIME&quot;. * company_size: histogram by CompanySize, for example, &quot;SMALL&quot;, &quot;MEDIUM&quot;, &quot;BIG&quot;. * publish_time_in_month: histogram by the Job.posting_publish_time in months. Must specify list of numeric buckets in spec. * publish_time_in_year: histogram by the Job.posting_publish_time in years. Must specify list of numeric buckets in spec. * degree_types: histogram by the Job.degree_types, for example, &quot;Bachelors&quot;, &quot;Masters&quot;. * job_level: histogram by the Job.job_level, for example, &quot;Entry Level&quot;. * country: histogram by the country code of jobs, for example, &quot;US&quot;, &quot;FR&quot;. * admin1: histogram by the admin1 code of jobs, which is a global placeholder referring to the state, province, or the particular term a country uses to define the geographic structure below the country level, for example, &quot;CA&quot;, &quot;IL&quot;. * city: histogram by a combination of the &quot;city name, admin1 code&quot;. For example, &quot;Mountain View, CA&quot;, &quot;New York, NY&quot;. * admin1_country: histogram by a combination of the &quot;admin1 code, country&quot;, for example, &quot;CA, US&quot;, &quot;IL, US&quot;. * city_coordinate: histogram by the city center&#x27;s GPS coordinates (latitude and longitude), for example, 37.4038522,-122.0987765. Since the coordinates of a city center can change, customers may need to refresh them periodically. * locale: histogram by the Job.language_code, for example, &quot;en-US&quot;, &quot;fr-FR&quot;. * language: histogram by the language subtag of the Job.language_code, for example, &quot;en&quot;, &quot;fr&quot;. * category: histogram by the JobCategory, for example, &quot;COMPUTER_AND_IT&quot;, &quot;HEALTHCARE&quot;. * base_compensation_unit: histogram by the CompensationInfo.CompensationUnit of base salary, for example, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;. * base_compensation: histogram by the base salary. Must specify list of numeric buckets to group results by. * annualized_base_compensation: histogram by the base annualized salary. Must specify list of numeric buckets to group results by. * annualized_total_compensation: histogram by the total annualized salary. Must specify list of numeric buckets to group results by. * string_custom_attribute: histogram by string Job.custom_attributes. Values can be accessed via square bracket notations like string_custom_attribute[&quot;key1&quot;]. * numeric_custom_attribute: histogram by numeric Job.custom_attributes. Values can be accessed via square bracket notations like numeric_custom_attribute[&quot;key1&quot;]. Must specify list of numeric buckets to group results by. Example expressions: * `count(admin1)` * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), bucket(100000, MAX)])` * `count(string_custom_attribute[&quot;some-string-custom-attribute&quot;])` * `count(numeric_custom_attribute[&quot;some-numeric-custom-attribute&quot;], [bucket(MIN, 0, &quot;negative&quot;), bucket(0, MAX, &quot;non-negative&quot;])`
    { # The histogram request.
      &quot;histogramQuery&quot;: &quot;A String&quot;, # An expression specifies a histogram request against matching jobs for searches. See SearchJobsRequest.histogram_queries for details about syntax.
    },
  ],
  &quot;jobQuery&quot;: { # The query required to perform a search query. # Query used to search against jobs, such as keyword, location filters, etc.
    &quot;commuteFilter&quot;: { # Parameters needed for commute search. # Allows filtering jobs by commute time with different travel methods (for example, driving or public transit). Note: This only works when you specify a CommuteMethod. In this case, location_filters is ignored. Currently we don&#x27;t support sorting by commute time.
      &quot;allowImpreciseAddresses&quot;: True or False, # If `true`, jobs without street level addresses may also be returned. For city level addresses, the city center is used. For state and coarser level addresses, text matching is used. If this field is set to `false` or isn&#x27;t specified, only jobs that include street level addresses will be returned by commute search.
      &quot;commuteMethod&quot;: &quot;A String&quot;, # Required. The method of transportation to calculate the commute time for.
      &quot;departureTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The departure time used to calculate traffic impact, represented as google.type.TimeOfDay in local time zone. Currently traffic model is restricted to hour level resolution.
        &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
        &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
        &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
        &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
      },
      &quot;roadTraffic&quot;: &quot;A String&quot;, # Specifies the traffic density to use when calculating commute time.
      &quot;startCoordinates&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Required. The latitude and longitude of the location to calculate the commute time from.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;travelDuration&quot;: &quot;A String&quot;, # Required. The maximum travel time in seconds. The maximum allowed value is `3600s` (one hour). Format is `123s`.
    },
    &quot;companies&quot;: [ # This filter specifies the company entities to search against. If a value isn&#x27;t specified, jobs are searched for against all companies. If multiple values are specified, jobs are searched against the companies specified. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;. At most 20 company filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;companyDisplayNames&quot;: [ # This filter specifies the exact company Company.display_name of the jobs to search against. If a value isn&#x27;t specified, jobs within the search results are associated with any company. If multiple values are specified, jobs within the search results may be associated with any of the specified companies. At most 20 company display name filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;compensationFilter&quot;: { # Filter on job compensation type and amount. # This search filter is applied only to Job.compensation_info. For example, if the filter is specified as &quot;Hourly job with per-hour compensation &gt; $15&quot;, only jobs meeting these criteria are searched. If a filter isn&#x27;t defined, all open jobs are searched.
      &quot;includeJobsWithUnspecifiedCompensationRange&quot;: True or False, # If set to true, jobs with unspecified compensation range fields are included.
      &quot;range&quot;: { # Compensation range. # Compensation range.
        &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. Type of filter.
      &quot;units&quot;: [ # Required. Specify desired `base compensation entry&#x27;s` CompensationInfo.CompensationUnit.
        &quot;A String&quot;,
      ],
    },
    &quot;customAttributeFilter&quot;: &quot;A String&quot;, # This filter specifies a structured syntax to match against the Job.custom_attributes marked as `filterable`. The syntax for this expression is a subset of SQL syntax. Supported operators are: `=`, `!=`, `&lt;`, `&lt;=`, `&gt;`, and `&gt;=` where the left of the operator is a custom field key and the right of the operator is a number or a quoted string. You must escape backslash (\\) and quote (\&quot;) characters. Supported functions are `LOWER([field_name])` to perform a case insensitive match and `EMPTY([field_name])` to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, &quot;((A AND B AND C) OR NOT D) AND E&quot;), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be &lt; 6000 bytes in length. Sample Query: `(LOWER(driving_license)=&quot;class \&quot;a\&quot;&quot; OR EMPTY(driving_license)) AND driving_years &gt; 10`
    &quot;disableSpellCheck&quot;: True or False, # This flag controls the spell-check feature. If false, the service attempts to correct a misspelled query, for example, &quot;enginee&quot; is corrected to &quot;engineer&quot;. Defaults to false: a spell check is performed.
    &quot;employmentTypes&quot;: [ # The employment type filter specifies the employment type of jobs to search against, such as EmploymentType.FULL_TIME. If a value isn&#x27;t specified, jobs in the search results includes any employment type. If multiple values are specified, jobs in the search results include any of the specified employment types.
      &quot;A String&quot;,
    ],
    &quot;excludedJobs&quot;: [ # This filter specifies a list of job names to be excluded during search. At most 400 excluded job names are allowed.
      &quot;A String&quot;,
    ],
    &quot;jobCategories&quot;: [ # The category filter specifies the categories of jobs to search against. See JobCategory for more information. If a value isn&#x27;t specified, jobs from any category are searched against. If multiple values are specified, jobs from any of the specified categories are searched against.
      &quot;A String&quot;,
    ],
    &quot;languageCodes&quot;: [ # This filter specifies the locale of jobs to search against, for example, &quot;en-US&quot;. If a value isn&#x27;t specified, the search results can contain jobs in any locale. Language codes should be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). At most 10 language code filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;locationFilters&quot;: [ # The location filter specifies geo-regions containing the jobs to search against. See LocationFilter for more information. If a location value isn&#x27;t specified, jobs fitting the other search criteria are retrieved regardless of where they&#x27;re located. If multiple values are specified, jobs are retrieved from any of the specified locations. If different values are specified for the LocationFilter.distance_in_miles parameter, the maximum provided distance is used for all locations. At most 5 location filters are allowed.
      { # Geographic region of the search.
        &quot;address&quot;: &quot;A String&quot;, # The address name, such as &quot;Mountain View&quot; or &quot;Bay Area&quot;.
        &quot;distanceInMiles&quot;: 3.14, # The distance_in_miles is applied when the location being searched for is identified as a city or smaller. This field is ignored if the location being searched for is a state or larger.
        &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # The latitude and longitude of the geographic center to search from. This field is ignored if `address` is provided.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;regionCode&quot;: &quot;A String&quot;, # CLDR region code of the country/region. This field may be used in two ways: 1) If telecommute preference is not set, this field is used address ambiguity of the user-input address. For example, &quot;Liverpool&quot; may refer to &quot;Liverpool, NY, US&quot; or &quot;Liverpool, UK&quot;. This region code biases the address resolution toward a specific country or territory. If this field is not set, address resolution is biased toward the United States by default. 2) If telecommute preference is set to TELECOMMUTE_ALLOWED, the telecommute location filter will be limited to the region specified in this field. If this field is not set, the telecommute job locations will not be See https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
        &quot;telecommutePreference&quot;: &quot;A String&quot;, # Allows the client to return jobs without a set location, specifically, telecommuting jobs (telecommuting is considered by the service as a special location. Job.posting_region indicates if a job permits telecommuting. If this field is set to TelecommutePreference.TELECOMMUTE_ALLOWED, telecommuting jobs are searched, and address and lat_lng are ignored. If not set or set to TelecommutePreference.TELECOMMUTE_EXCLUDED, telecommute job are not searched. This filter can be used by itself to search exclusively for telecommuting jobs, or it can be combined with another location filter to search for a combination of job locations, such as &quot;Mountain View&quot; or &quot;telecommuting&quot; jobs. However, when used in combination with other location filters, telecommuting jobs can be treated as less relevant than other jobs in the search response. This field is only used for job search requests.
      },
    ],
    &quot;publishTimeRange&quot;: { # Message representing a period of time between two timestamps. # Jobs published within a range specified by this filter are searched against.
      &quot;endTime&quot;: &quot;A String&quot;, # End of the period (exclusive).
      &quot;startTime&quot;: &quot;A String&quot;, # Begin of the period (inclusive).
    },
    &quot;query&quot;: &quot;A String&quot;, # The query string that matches against the job title, description, and location fields. The maximum number of allowed characters is 255.
    &quot;queryLanguageCode&quot;: &quot;A String&quot;, # The language code of query. For example, &quot;en-US&quot;. This field helps to better interpret the query. If a value isn&#x27;t specified, the query language code is automatically detected, which may not be accurate. Language code should be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).
  },
  &quot;jobView&quot;: &quot;A String&quot;, # The desired job attributes returned for jobs in the search response. Defaults to JobView.JOB_VIEW_SMALL if no value is specified.
  &quot;maxPageSize&quot;: 42, # A limit on the number of jobs returned in the search results. Increasing this value above the default value of 10 can increase search response time. The value can be between 1 and 100.
  &quot;offset&quot;: 42, # An integer that specifies the current offset (that is, starting result location, amongst the jobs deemed by the API as relevant) in search results. This field is only considered if page_token is unset. The maximum allowed value is 5000. Otherwise an error is thrown. For example, 0 means to return results starting from the first matching job, and 10 means to return from the 11th job. This can be used for pagination, (for example, pageSize = 10 and offset = 10 means to return from the second page).
  &quot;orderBy&quot;: &quot;A String&quot;, # The criteria determining how search results are sorted. Default is `&quot;relevance desc&quot;`. Supported options are: * `&quot;relevance desc&quot;`: By relevance descending, as determined by the API algorithms. Relevance thresholding of query results is only available with this ordering. * `&quot;posting_publish_time desc&quot;`: By Job.posting_publish_time descending. * `&quot;posting_update_time desc&quot;`: By Job.posting_update_time descending. * `&quot;title&quot;`: By Job.title ascending. * `&quot;title desc&quot;`: By Job.title descending. * `&quot;annualized_base_compensation&quot;`: By job&#x27;s CompensationInfo.annualized_base_compensation_range ascending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_base_compensation desc&quot;`: By job&#x27;s CompensationInfo.annualized_base_compensation_range descending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_total_compensation&quot;`: By job&#x27;s CompensationInfo.annualized_total_compensation_range ascending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;annualized_total_compensation desc&quot;`: By job&#x27;s CompensationInfo.annualized_total_compensation_range descending. Jobs whose annualized base compensation is unspecified are put at the end of search results. * `&quot;custom_ranking desc&quot;`: By the relevance score adjusted to the SearchJobsRequest.CustomRankingInfo.ranking_expression with weight factor assigned by SearchJobsRequest.CustomRankingInfo.importance_level in descending order. * Location sorting: Use the special syntax to order jobs by distance: `&quot;distance_from(&#x27;Hawaii&#x27;)&quot;`: Order by distance from Hawaii. `&quot;distance_from(19.89, 155.5)&quot;`: Order by distance from a coordinate. `&quot;distance_from(&#x27;Hawaii&#x27;), distance_from(&#x27;Puerto Rico&#x27;)&quot;`: Order by multiple locations. See details below. `&quot;distance_from(&#x27;Hawaii&#x27;), distance_from(19.89, 155.5)&quot;`: Order by multiple locations. See details below. The string can have a maximum of 256 characters. When multiple distance centers are provided, a job that is close to any of the distance centers would have a high rank. When a job has multiple locations, the job location closest to one of the distance centers will be used. Jobs that don&#x27;t have locations will be ranked at the bottom. Distance is calculated with a precision of 11.3 meters (37.4 feet). Diversification strategy is still applied unless explicitly disabled in diversification_level.
  &quot;pageToken&quot;: &quot;A String&quot;, # The token specifying the current offset within search results. See SearchJobsResponse.next_page_token for an explanation of how to obtain the next set of query results.
  &quot;requestMetadata&quot;: { # Meta information related to the job searcher or entity conducting the job search. This information is used to improve the performance of the service. # Required. The meta information collected about the job searcher, used to improve the search quality of the service. The identifiers (such as `user_id`) are provided by users, and must be unique and consistent.
    &quot;allowMissingIds&quot;: True or False, # Only set when any of domain, session_id and user_id isn&#x27;t available for some reason. It is highly recommended not to set this field and provide accurate domain, session_id and user_id for the best service experience.
    &quot;deviceInfo&quot;: { # Device information collected from the job seeker, candidate, or other entity conducting the job search. Providing this information improves the quality of the search results across devices. # The type of device used by the job seeker at the time of the call to the service.
      &quot;deviceType&quot;: &quot;A String&quot;, # Type of the device.
      &quot;id&quot;: &quot;A String&quot;, # A device-specific ID. The ID must be a unique identifier that distinguishes the device from other devices.
    },
    &quot;domain&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. The client-defined scope or source of the service call, which typically is the domain on which the service has been implemented and is currently being run. For example, if the service is being run by client *Foo, Inc.*, on job board www.foo.com and career site www.bar.com, then this field is set to &quot;foo.com&quot; for use on the job board, and &quot;bar.com&quot; for use on the career site. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique domain. The maximum number of allowed characters is 255.
    &quot;sessionId&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. A unique session identification string. A session is defined as the duration of an end user&#x27;s interaction with the service over a certain period. Obfuscate this field for privacy concerns before providing it to the service. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique session ID. The maximum number of allowed characters is 255.
    &quot;userId&quot;: &quot;A String&quot;, # Required if allow_missing_ids is unset or `false`. A unique user identification string, as determined by the client. To have the strongest positive impact on search quality make sure the client-level is unique. Obfuscate this field for privacy concerns before providing it to the service. Note that any improvements to the model for a particular tenant site rely on this field being set correctly to a unique user ID. The maximum number of allowed characters is 255.
  },
  &quot;searchMode&quot;: &quot;A String&quot;, # Mode of a search. Defaults to SearchMode.JOB_SEARCH.
}

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

Returns:
  An object of the form:

    { # Response for SearchJob method.
  &quot;broadenedQueryJobsCount&quot;: 42, # If query broadening is enabled, we may append additional results from the broadened query. This number indicates how many of the jobs returned in the jobs field are from the broadened query. These results are always at the end of the jobs list. In particular, a value of 0, or if the field isn&#x27;t set, all the jobs in the jobs list are from the original (without broadening) query. If this field is non-zero, subsequent requests with offset after this result set should contain all broadened results.
  &quot;histogramQueryResults&quot;: [ # The histogram results that match with specified SearchJobsRequest.histogram_queries.
    { # Histogram result that matches HistogramQuery specified in searches.
      &quot;histogram&quot;: { # A map from the values of the facet associated with distinct values to the number of matching entries with corresponding value. The key format is: * (for string histogram) string values stored in the field. * (for named numeric bucket) name specified in `bucket()` function, like for `bucket(0, MAX, &quot;non-negative&quot;)`, the key will be `non-negative`. * (for anonymous numeric bucket) range formatted as `-`, for example, `0-1000`, `MIN-0`, and `0-MAX`.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;histogramQuery&quot;: &quot;A String&quot;, # Requested histogram expression.
    },
  ],
  &quot;locationFilters&quot;: [ # The location filters that the service applied to the specified query. If any filters are lat-lng based, the Location.location_type is Location.LocationType.LOCATION_TYPE_UNSPECIFIED.
    { # A resource that represents a location with full geographic information.
      &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
      &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
        &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
          &quot;A String&quot;,
        ],
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
        &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
        &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
        &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
        &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
        &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
          &quot;A String&quot;,
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
        &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
        &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
        &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
      },
      &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
    },
  ],
  &quot;matchingJobs&quot;: [ # The Job entities that match the specified SearchJobsRequest.
    { # Job entry with metadata inside SearchJobsResponse.
      &quot;commuteInfo&quot;: { # Commute details related to this job. # Commute information which is generated based on specified CommuteFilter.
        &quot;jobLocation&quot;: { # A resource that represents a location with full geographic information. # Location used as the destination in the commute calculation.
          &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
          &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
            &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
              &quot;A String&quot;,
            ],
            &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
            &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
            &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
            &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
            &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
            &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
              &quot;A String&quot;,
            ],
            &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
            &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
            &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
            &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
          },
          &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
        },
        &quot;travelDuration&quot;: &quot;A String&quot;, # The number of seconds required to travel to the job location from the query location. A duration of 0 seconds indicates that the job isn&#x27;t reachable within the requested duration, but was returned as part of an expanded query.
      },
      &quot;job&quot;: { # A Job resource represents a job posting (also referred to as a &quot;job listing&quot; or &quot;job requisition&quot;). A job belongs to a Company, which is the hiring entity responsible for the job. # Job resource that matches the specified SearchJobsRequest.
        &quot;addresses&quot;: [ # Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. &#x27;ReqA&#x27; becomes &#x27;ReqA-1&#x27;, &#x27;ReqA-2&#x27;, and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. The maximum number of allowed characters is 500.
          &quot;A String&quot;,
        ],
        &quot;applicationInfo&quot;: { # Application related details of a job posting. # Job application information.
          &quot;emails&quot;: [ # Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255.
            &quot;A String&quot;,
          ],
          &quot;instruction&quot;: &quot;A String&quot;, # Use this field to provide instructions, such as &quot;Mail your application to ...&quot;, that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000.
          &quot;uris&quot;: [ # Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000.
            &quot;A String&quot;,
          ],
        },
        &quot;company&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job. The format is &quot;projects/{project_id}/tenants/{tenant_id}/companies/{company_id}&quot;. For example, &quot;projects/foo/tenants/bar/companies/baz&quot;.
        &quot;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
        &quot;compensationInfo&quot;: { # Job compensation details. # Job compensation information (a.k.a. &quot;pay rate&quot;) i.e., the compensation that will paid to the employee.
          &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
          },
          &quot;annualizedTotalCompensationRange&quot;: { # Compensation range. # Output only. Annualized total compensation range. Computed as all compensation entries&#x27; CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
          },
          &quot;entries&quot;: [ # Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job.
            { # A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.
              &quot;amount&quot;: { # Represents an amount of money with its currency type. # Compensation amount.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;description&quot;: &quot;A String&quot;, # Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
              &quot;expectedUnitsPerYear&quot;: 3.14, # Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
              &quot;range&quot;: { # Compensation range. # Compensation range.
                &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation.
                  &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                  &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                  &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                },
                &quot;minCompensation&quot;: { # Represents an amount of money with its currency type. # The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation.
                  &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                  &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                  &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                },
              },
              &quot;type&quot;: &quot;A String&quot;, # Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
              &quot;unit&quot;: &quot;A String&quot;, # Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
            },
          ],
        },
        &quot;customAttributes&quot;: { # A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.
          &quot;a_key&quot;: { # Custom attribute values that are either filterable or non-filterable.
            &quot;filterable&quot;: True or False, # If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
            &quot;keywordSearchable&quot;: True or False, # If the `keyword_searchable` flag is true, the keywords in custom fields are searchable by keyword match. If false, the values are not searchable by keyword match. Default is false.
            &quot;longValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
              &quot;A String&quot;,
            ],
            &quot;stringValues&quot;: [ # Exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string isn&#x27;t allowed.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;degreeTypes&quot;: [ # The desired education degrees for the job, such as Bachelors, Masters.
          &quot;A String&quot;,
        ],
        &quot;department&quot;: &quot;A String&quot;, # The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
        &quot;derivedInfo&quot;: { # Derived details about the job posting. # Output only. Derived details about the job posting.
          &quot;jobCategories&quot;: [ # Job categories derived from Job.title and Job.description.
            &quot;A String&quot;,
          ],
          &quot;locations&quot;: [ # Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order.
            { # A resource that represents a location with full geographic information.
              &quot;latLng&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # An object representing a latitude/longitude pair.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;locationType&quot;: &quot;A String&quot;, # The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, &quot;Downtown, Atlanta, GA, USA&quot; has a type of LocationType.NEIGHBORHOOD, and &quot;Kansas City, KS, USA&quot; has a type of LocationType.LOCALITY.
              &quot;postalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location.
                &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
                  &quot;A String&quot;,
                ],
                &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
                &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
                &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
                &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
                &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
                &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
                  &quot;A String&quot;,
                ],
                &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
                &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
                &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
                &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
              },
              &quot;radiusMiles&quot;: 3.14, # Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, &quot;Mountain View, CA, USA&quot; has a radius of 6.17 miles.
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Required. The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.
        &quot;employmentTypes&quot;: [ # The employment type(s) of a job, for example, full time or part time.
          &quot;A String&quot;,
        ],
        &quot;incentives&quot;: &quot;A String&quot;, # A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.
        &quot;jobBenefits&quot;: [ # The benefits included with the job.
          &quot;A String&quot;,
        ],
        &quot;jobEndTime&quot;: &quot;A String&quot;, # The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
        &quot;jobLevel&quot;: &quot;A String&quot;, # The experience level associated with the job, such as &quot;Entry Level&quot;.
        &quot;jobStartTime&quot;: &quot;A String&quot;, # The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.
        &quot;languageCode&quot;: &quot;A String&quot;, # The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=&quot;external&quot; target=&quot;_blank&quot; }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to &#x27;en_US&#x27;.
        &quot;name&quot;: &quot;A String&quot;, # Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is &quot;projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}&quot;. For example, &quot;projects/foo/tenants/bar/jobs/baz&quot;. Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.
        &quot;postingCreateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was created.
        &quot;postingExpireTime&quot;: &quot;A String&quot;, # Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can&#x27;t be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn&#x27;t exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn&#x27;t provided at the time of job creation or is invalid, the job posting expires after 30 days from the job&#x27;s creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn&#x27;t provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job&#x27;s last update time. Otherwise the expiration date isn&#x27;t updated.
        &quot;postingPublishTime&quot;: &quot;A String&quot;, # The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.
        &quot;postingRegion&quot;: &quot;A String&quot;, # The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn&#x27;t specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.
        &quot;postingUpdateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when this job posting was last updated.
        &quot;processingOptions&quot;: { # Options for job processing. # Options for job processing.
          &quot;disableStreetAddressResolution&quot;: True or False, # If set to `true`, the service does not attempt to resolve a more precise address for the job.
          &quot;htmlSanitization&quot;: &quot;A String&quot;, # Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn&#x27;t disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
        },
        &quot;promotionValue&quot;: 42, # A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue &gt;0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.
        &quot;qualifications&quot;: &quot;A String&quot;, # A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
        &quot;requisitionId&quot;: &quot;A String&quot;, # Required. The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn&#x27;t allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.
        &quot;responsibilities&quot;: &quot;A String&quot;, # A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.
        &quot;title&quot;: &quot;A String&quot;, # Required. The title of the job, such as &quot;Software Engineer&quot; The maximum number of allowed characters is 500.
        &quot;visibility&quot;: &quot;A String&quot;, # Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
      },
      &quot;jobSummary&quot;: &quot;A String&quot;, # A summary of the job with core information that&#x27;s displayed on the search results listing page.
      &quot;jobTitleSnippet&quot;: &quot;A String&quot;, # Contains snippets of text from the Job.title field most closely matching a search query&#x27;s keywords, if available. The matching query keywords are enclosed in HTML bold tags.
      &quot;searchTextSnippet&quot;: &quot;A String&quot;, # Contains snippets of text from the Job.description and similar fields that most closely match a search query&#x27;s keywords, if available. All HTML tags in the original fields are stripped when returned in this field, and matching query keywords are enclosed in HTML bold tags.
    },
  ],
  &quot;metadata&quot;: { # Additional information returned to client, such as debugging information. # Additional information for the API invocation, such as the request tracking id.
    &quot;requestId&quot;: &quot;A String&quot;, # A unique id associated with this call. This id is logged for tracking purposes.
  },
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that specifies the starting position of the next page of results. This field is empty if there are no more results.
  &quot;spellCorrection&quot;: { # Spell check result. # The spell checking result, and correction.
    &quot;corrected&quot;: True or False, # Indicates if the query was corrected by the spell checker.
    &quot;correctedHtml&quot;: &quot;A String&quot;, # Corrected output with html tags to highlight the corrected words. Corrected words are called out with the &quot;*...*&quot; html tags. For example, the user input query is &quot;software enginear&quot;, where the second word, &quot;enginear,&quot; is incorrect. It should be &quot;engineer&quot;. When spelling correction is enabled, this value is &quot;software *engineer*&quot;.
    &quot;correctedText&quot;: &quot;A String&quot;, # Correction output consisting of the corrected keyword string.
  },
  &quot;totalSize&quot;: 42, # Number of jobs that match the specified query. Note: This size is precise only if the total is less than 100,000.
}</pre>
</div>

<div class="method">
    <code class="details" id="searchForAlert_next">searchForAlert_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>