<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_v3p1beta1.html">Cloud Talent Solution API</a> . <a href="jobs_v3p1beta1.projects.html">projects</a> . <a href="jobs_v3p1beta1.projects.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a list of Jobs by filter.</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, 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), and has different algorithmic adjustments that are targeted to 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="batchDelete">batchDelete(parent, body=None, x__xgafv=None)</code>
  <pre>Deletes a list of Jobs by filter.

Args:
  parent: string, Required. The resource name of the project under which the job is created. The format is &quot;projects/{project_id}&quot;, for example, &quot;projects/api-test-project&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Input only. Batch delete jobs request.
  &quot;filter&quot;: &quot;A String&quot;, # Required. The filter string specifies the jobs to be deleted. Supported operator: =, AND The fields eligible for filtering are: * `companyName` (Required) * `requisitionId` (Required) Sample Query: companyName = &quot;projects/api-test-project/companies/123&quot; AND requisitionId = &quot;req-1&quot;
}

  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="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 project under which the job is created. The format is &quot;projects/{project_id}&quot;, for example, &quot;projects/api-test-project&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Input only. Create job request.
  &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. # Required. The Job to be created.
    &quot;addresses&quot;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
      &quot;A String&quot;,
    ],
    &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
      &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
    &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
    &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
      &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
          &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
          &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
        },
      ],
    },
    &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
      &quot;A String&quot;,
    ],
    &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
    &quot;derivedInfo&quot;: { # Output only. 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.
        { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
      &quot;A String&quot;,
    ],
    &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
    &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
      &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
    },
    &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
    &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
    &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
  &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Output only. 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.
      { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
    &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
  &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Output only. 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.
      { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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 project under which the job is created. The format is &quot;projects/{project_id}&quot;, for example, &quot;projects/api-test-project&quot;. (required)
  filter: string, Required. The filter string specifies the jobs to be enumerated. Supported operator: =, AND The fields eligible for filtering are: * `companyName` * `requisitionId` * `status` Available values: OPEN, EXPIRED, ALL. Defaults to OPEN if no value is specified. At least one of `companyName` and `requisitionId` must present or an INVALID_ARGUMENT error is thrown. Sample Query: * companyName = &quot;projects/api-test-project/companies/123&quot; * companyName = &quot;projects/api-test-project/companies/123&quot; AND requisitionId = &quot;req-1&quot; * companyName = &quot;projects/api-test-project/companies/123&quot; AND status = &quot;EXPIRED&quot; * requisitionId = &quot;req-1&quot; * requisitionId = &quot;req-1&quot; AND status = &quot;EXPIRED&quot;
  jobView: string, Optional. 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_name, 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_name, Job.DerivedInfo.locations, Job.visibility, Job.language_code, Job.description.
      JOB_VIEW_FULL - All available attributes are included in the search results.
  pageSize: integer, Optional. 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, Optional. 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:

    { # Output only. 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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
        &quot;A String&quot;,
      ],
      &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
        &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
      &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
      &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
        &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
            &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
              &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
            &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
          },
        ],
      },
      &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
        &quot;A String&quot;,
      ],
      &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
      &quot;derivedInfo&quot;: { # Output only. 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.
          { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
        &quot;A String&quot;,
      ],
      &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
      &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
        &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
      },
      &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
      &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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;: { # Output only. 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, 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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:

{ # Input only. Update job request.
  &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. # Required. The Job to be updated.
    &quot;addresses&quot;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
      &quot;A String&quot;,
    ],
    &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
      &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
    &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
    &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
      &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
          &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
            &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
          &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
        },
      ],
    },
    &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
      &quot;A String&quot;,
    ],
    &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
    &quot;derivedInfo&quot;: { # Output only. 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.
        { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
      &quot;A String&quot;,
    ],
    &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
    &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
      &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
    },
    &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
    &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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;, # Optional but strongly recommended to be provided 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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
    &quot;A String&quot;,
  ],
  &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
    &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
  &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
  &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
    &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
        &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
          &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
        &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
      },
    ],
  },
  &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
    &quot;A String&quot;,
  ],
  &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
  &quot;derivedInfo&quot;: { # Output only. 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.
      { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
    &quot;A String&quot;,
  ],
  &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
  &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
    &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
  },
  &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
  &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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 project to search within. The format is &quot;projects/{project_id}&quot;, for example, &quot;projects/api-test-project&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Input only. The Request body of the `SearchJobs` call.
  &quot;customRankingInfo&quot;: { # Input only. Custom ranking information for SearchJobsRequest. # Optional. 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; 200 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, # Optional. Controls whether to disable exact keyword match on Job.job_title, Job.description, Job.company_display_name, Job.locations, 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, the query &quot;program manager,&quot; a result is returned even if the job posting has the title &quot;software developer,&quot; which does not 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 does not contain title or location specific ontology, jobs with &quot;cloud&quot; keyword matches are returned regardless of this flag&#x27;s value. Please use Company.keyword_searchable_custom_fields or Company.keyword_searchable_custom_attributes if company specific globally matched custom field/attribute string values is needed. Enabling keyword match improves recall of subsequent search requests. Defaults to false.
  &quot;diversificationLevel&quot;: &quot;A String&quot;, # Optional. 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, # Optional. 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;histogramFacets&quot;: { # Input only. Histogram facets to be specified in SearchJobsRequest. # Optional. Histogram requests for jobs matching JobQuery.
    &quot;compensationHistogramFacets&quot;: [ # Optional. Specifies compensation field-based histogram requests. Duplicate values of CompensationHistogramRequest.type are not allowed.
      { # Input only. Compensation based histogram request.
        &quot;bucketingOption&quot;: { # Input only. Use this field to specify bucketing option for the histogram search response. # Required. Numeric histogram options, like buckets, whether include min or max value.
          &quot;bucketBounds&quot;: [ # Required. Two adjacent values form a histogram bucket. Values should be in ascending order. For example, if [5, 10, 15] are provided, four buckets are created: (-inf, 5), 5, 10), [10, 15), [15, inf). At most 20 [buckets_bound is supported.
            3.14,
          ],
          &quot;requiresMinMax&quot;: True or False, # Optional. If set to true, the histogram result includes minimum/maximum value of the numeric field.
        },
        &quot;type&quot;: &quot;A String&quot;, # Required. Type of the request, representing which field the histogramming should be performed over. A single request can only specify one histogram of each `CompensationHistogramRequestType`.
      },
    ],
    &quot;customAttributeHistogramFacets&quot;: [ # Optional. Specifies the custom attributes histogram requests. Duplicate values of CustomAttributeHistogramRequest.key are not allowed.
      { # Custom attributes histogram request. An error is thrown if neither string_value_histogram or long_value_histogram_bucketing_option has been defined.
        &quot;key&quot;: &quot;A String&quot;, # Required. Specifies the custom field key to perform a histogram on. If specified without `long_value_histogram_bucketing_option`, histogram on string values of the given `key` is triggered, otherwise histogram is performed on long values.
        &quot;longValueHistogramBucketingOption&quot;: { # Input only. Use this field to specify bucketing option for the histogram search response. # Optional. Specifies buckets used to perform a range histogram on Job&#x27;s filterable long custom field values, or min/max value requirements.
          &quot;bucketBounds&quot;: [ # Required. Two adjacent values form a histogram bucket. Values should be in ascending order. For example, if [5, 10, 15] are provided, four buckets are created: (-inf, 5), 5, 10), [10, 15), [15, inf). At most 20 [buckets_bound is supported.
            3.14,
          ],
          &quot;requiresMinMax&quot;: True or False, # Optional. If set to true, the histogram result includes minimum/maximum value of the numeric field.
        },
        &quot;stringValueHistogram&quot;: True or False, # Optional. If set to true, the response includes the histogram value for each key as a string.
      },
    ],
    &quot;simpleHistogramFacets&quot;: [ # Optional. Specifies the simple type of histogram facets, for example, `COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc.
      &quot;A String&quot;,
    ],
  },
  &quot;histogramQueries&quot;: [ # Optional. Expression based histogram requests for jobs matching JobQuery.
    { # Input Only. The histogram request.
      &quot;histogramQuery&quot;: &quot;A String&quot;, # An expression specifies a histogram request against matching resources (for example, jobs) for searches. Expression syntax is a aggregation function call with histogram facets and other options. Available aggregation function calls are: * `count(string_histogram_facet)`: Count the number of matching entity, for each distinct attribute value. * `count(numeric_histogram_facet, list of buckets)`: Count the number of matching entity within each bucket. A maximum of 200 histogram buckets are supported. 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_id: histogram by [Job.distributor_company_id. * 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_day: histogram by the Job.publish_time in days. Must specify list of numeric buckets in spec. * publish_time_in_month: histogram by the Job.publish_time in months. Must specify list of numeric buckets in spec. * publish_time_in_year: histogram by the Job.publish_time in years. Must specify list of numeric buckets in spec. * degree_type: histogram by the Job.degree_type. 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 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;)])
    },
  ],
  &quot;jobQuery&quot;: { # Input only. The query required to perform a search query. # Optional. Query used to search against jobs, such as keyword, location filters, etc.
    &quot;commuteFilter&quot;: { # Input only. Parameters needed for commute search. # Optional. Allows filtering jobs by commute time with different travel methods (for example, driving or public transit). Note: This only works with COMMUTE MODE. When specified, [JobQuery.location_filters] is ignored. Currently we don&#x27;t support sorting by commute time.
      &quot;allowImpreciseAddresses&quot;: True or False, # Optional. If true, jobs without &quot;precise&quot; addresses (street level addresses or GPS coordinates) might also be returned. For city and coarser level addresses, text matching is used. If this field is set to false or is not specified, only jobs that include precise addresses are returned by Commute Search. Note: If `allow_imprecise_addresses` is set to true, Commute Search is not able to calculate accurate commute times to jobs with city level and coarser address information. Jobs with imprecise addresses will return a `travel_duration` time of 0 regardless of distance from the job seeker.
      &quot;commuteMethod&quot;: &quot;A String&quot;, # Required. The method of transportation for which to calculate the commute time.
      &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`. # Optional. 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;, # Optional. 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 object must conform to the WGS84 standard. Values must be within normalized ranges. # Required. The latitude and longitude of the location from which to calculate the commute time.
        &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;companyDisplayNames&quot;: [ # Optional. This filter specifies the company Company.display_name of the jobs to search against. The company name must match the value exactly. Alternatively, if the value being searched for is wrapped in SUBSTRING_MATCH([value]), the company name must contain a case insensitive substring match of the value. Using this function may increase latency. Sample Value: SUBSTRING_MATCH(google) 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;companyNames&quot;: [ # Optional. 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}/companies/{company_id}&quot;, for example, &quot;projects/api-test-project/companies/foo&quot;. At most 20 company filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;compensationFilter&quot;: { # Input only. Filter on job compensation type and amount. # Optional. 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, # Optional. If set to true, jobs with unspecified compensation range fields are included.
      &quot;range&quot;: { # Compensation range. # Optional. Compensation range.
        &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. 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; 10000 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, # Optional. 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;: [ # Optional. The employment type filter specifies the employment type of jobs to search against, such as EmploymentType.FULL_TIME. If a value is not 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;: [ # Optional. 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;: [ # Optional. The category filter specifies the categories of jobs to search against. See Category for more information. If a value is not 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;: [ # Optional. 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;: [ # Optional. 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.
      { # Input only. Geographic region of the search.
        &quot;address&quot;: &quot;A String&quot;, # Optional. The address name, such as &quot;Mountain View&quot; or &quot;Bay Area&quot;.
        &quot;distanceInMiles&quot;: 3.14, # Optional. The distance_in_miles is applied when the location being searched for is identified as a city or smaller. When the location being searched for is a state or larger, this field is ignored.
        &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 object must conform to the WGS84 standard. Values must be within normalized ranges. # Optional. The latitude and longitude of the geographic center from which to search. This field&#x27;s 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;, # Optional. 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 limited. 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;, # Optional. 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.
      },
    ],
    &quot;publishTimeRange&quot;: { # Message representing a period of time between two timestamps. # Optional. Jobs published within a range specified by this filter are searched against.
      &quot;endTime&quot;: &quot;A String&quot;, # End of the period.
      &quot;startTime&quot;: &quot;A String&quot;, # Begin of the period.
    },
    &quot;query&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The desired job attributes returned for jobs in the search response. Defaults to JobView.SMALL if no value is specified.
  &quot;offset&quot;: 42, # Optional. 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;, # Optional. 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.custom_ranking_info.ranking_expression with weight factor assigned by SearchJobsRequest.custom_ranking_info.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;pageSize&quot;: 42, # Optional. 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;pageToken&quot;: &quot;A String&quot;, # Optional. 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;: { # Input only. 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;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. # Optional. 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;, # Optional. Type of the device.
      &quot;id&quot;: &quot;A String&quot;, # Optional. 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. 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. If this field isn&#x27;t available for some reason, send &quot;UNKNOWN&quot;. Any improvements to the model for a particular tenant site rely on this field being set correctly to a domain. The maximum number of allowed characters is 255.
    &quot;sessionId&quot;: &quot;A String&quot;, # Required. 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. If this field is not available for some reason, send &quot;UNKNOWN&quot;. Note that any improvements to the model for a particular tenant site, rely on this field being set correctly to some unique session_id. The maximum number of allowed characters is 255.
    &quot;userId&quot;: &quot;A String&quot;, # Required. 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. If this field is not available for some reason, send &quot;UNKNOWN&quot;. 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;requirePreciseResultSize&quot;: True or False, # This field is deprecated.
  &quot;searchMode&quot;: &quot;A String&quot;, # Optional. 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:

    { # Output only. 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;estimatedTotalSize&quot;: 42, # An estimation of the number of jobs that match the specified query. This number is not guaranteed to be accurate. For accurate results, see SearchJobsResponse.total_size.
  &quot;histogramQueryResults&quot;: [ # The histogram results that match with specified SearchJobsRequest.histogram_queries.
    { # Output only. Histogram result that matches HistogramSpec 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;histogramResults&quot;: { # Output only. Histogram results that match HistogramFacets specified in SearchJobsRequest. # The histogram results that match specified SearchJobsRequest.histogram_facets.
    &quot;compensationHistogramResults&quot;: [ # Specifies compensation field-based histogram results that match HistogramFacets.compensation_histogram_requests.
      { # Output only. Compensation based histogram result.
        &quot;result&quot;: { # Output only. Custom numeric bucketing result. # Histogram result.
          &quot;counts&quot;: [ # Count within each bucket. Its size is the length of NumericBucketingOption.bucket_bounds plus 1.
            { # Represents count of jobs within one bucket.
              &quot;count&quot;: 42, # Number of jobs whose numeric field value fall into `range`.
              &quot;range&quot;: { # Represents starting and ending value of a range in double. # Bucket range on which histogram was performed for the numeric field, that is, the count represents number of jobs in this range.
                &quot;from&quot;: 3.14, # Starting value of the bucket range.
                &quot;to&quot;: 3.14, # Ending value of the bucket range.
              },
            },
          ],
          &quot;maxValue&quot;: 3.14, # Stores the maximum value of the numeric field. Is populated only if [NumericBucketingOption.requires_min_max] is set to true.
          &quot;minValue&quot;: 3.14, # Stores the minimum value of the numeric field. Will be populated only if [NumericBucketingOption.requires_min_max] is set to true.
        },
        &quot;type&quot;: &quot;A String&quot;, # Type of the request, corresponding to CompensationHistogramRequest.type.
      },
    ],
    &quot;customAttributeHistogramResults&quot;: [ # Specifies histogram results for custom attributes that match HistogramFacets.custom_attribute_histogram_facets.
      { # Output only. Custom attribute histogram result.
        &quot;key&quot;: &quot;A String&quot;, # Stores the key of custom attribute the histogram is performed on.
        &quot;longValueHistogramResult&quot;: { # Output only. Custom numeric bucketing result. # Stores bucketed histogram counting result or min/max values for custom attribute long values associated with `key`.
          &quot;counts&quot;: [ # Count within each bucket. Its size is the length of NumericBucketingOption.bucket_bounds plus 1.
            { # Represents count of jobs within one bucket.
              &quot;count&quot;: 42, # Number of jobs whose numeric field value fall into `range`.
              &quot;range&quot;: { # Represents starting and ending value of a range in double. # Bucket range on which histogram was performed for the numeric field, that is, the count represents number of jobs in this range.
                &quot;from&quot;: 3.14, # Starting value of the bucket range.
                &quot;to&quot;: 3.14, # Ending value of the bucket range.
              },
            },
          ],
          &quot;maxValue&quot;: 3.14, # Stores the maximum value of the numeric field. Is populated only if [NumericBucketingOption.requires_min_max] is set to true.
          &quot;minValue&quot;: 3.14, # Stores the minimum value of the numeric field. Will be populated only if [NumericBucketingOption.requires_min_max] is set to true.
        },
        &quot;stringValueHistogramResult&quot;: { # Stores a map from the values of string custom field associated with `key` to the number of jobs with that value in this histogram result.
          &quot;a_key&quot;: 42,
        },
      },
    ],
    &quot;simpleHistogramResults&quot;: [ # Specifies histogram results that matches HistogramFacets.simple_histogram_facets.
      { # Output only. Result of a histogram call. The response contains the histogram map for the search type specified by HistogramResult.field. The response is a map of each filter value to the corresponding count of jobs for that filter.
        &quot;searchType&quot;: &quot;A String&quot;, # The Histogram search filters.
        &quot;values&quot;: { # A map from the values of field to the number of jobs with that value in this search result. Key: search type (filter names, such as the companyName). Values: the count of jobs that match the filter for this search.
          &quot;a_key&quot;: 42,
        },
      },
    ],
  },
  &quot;locationFilters&quot;: [ # The location filters that the service applied to the specified query. If any filters are lat-lng based, the JobLocation.location_type is JobLocation.LocationType#LOCATION_TYPE_UNSPECIFIED.
    { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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.
    { # Output only. Job entry with metadata inside SearchJobsResponse.
      &quot;commuteInfo&quot;: { # Output only. Commute details related to this job. # Commute information which is generated based on specified CommuteFilter.
        &quot;jobLocation&quot;: { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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 is not 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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
          &quot;A String&quot;,
        ],
        &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
          &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
        &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
        &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
          &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
              &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
                &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
              &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
            },
          ],
        },
        &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
          &quot;A String&quot;,
        ],
        &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
        &quot;derivedInfo&quot;: { # Output only. 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.
            { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
          &quot;A String&quot;,
        ],
        &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
        &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
          &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
        },
        &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
        &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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.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;: { # Output only. 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;: { # Output only. 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;correctedText&quot;: &quot;A String&quot;, # Correction output consisting of the corrected keyword string.
  },
  &quot;totalSize&quot;: 42, # The precise result count with limit 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), and has different algorithmic adjustments that are targeted to 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 project to search within. The format is &quot;projects/{project_id}&quot;, for example, &quot;projects/api-test-project&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Input only. The Request body of the `SearchJobs` call.
  &quot;customRankingInfo&quot;: { # Input only. Custom ranking information for SearchJobsRequest. # Optional. 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; 200 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, # Optional. Controls whether to disable exact keyword match on Job.job_title, Job.description, Job.company_display_name, Job.locations, 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, the query &quot;program manager,&quot; a result is returned even if the job posting has the title &quot;software developer,&quot; which does not 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 does not contain title or location specific ontology, jobs with &quot;cloud&quot; keyword matches are returned regardless of this flag&#x27;s value. Please use Company.keyword_searchable_custom_fields or Company.keyword_searchable_custom_attributes if company specific globally matched custom field/attribute string values is needed. Enabling keyword match improves recall of subsequent search requests. Defaults to false.
  &quot;diversificationLevel&quot;: &quot;A String&quot;, # Optional. 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, # Optional. 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;histogramFacets&quot;: { # Input only. Histogram facets to be specified in SearchJobsRequest. # Optional. Histogram requests for jobs matching JobQuery.
    &quot;compensationHistogramFacets&quot;: [ # Optional. Specifies compensation field-based histogram requests. Duplicate values of CompensationHistogramRequest.type are not allowed.
      { # Input only. Compensation based histogram request.
        &quot;bucketingOption&quot;: { # Input only. Use this field to specify bucketing option for the histogram search response. # Required. Numeric histogram options, like buckets, whether include min or max value.
          &quot;bucketBounds&quot;: [ # Required. Two adjacent values form a histogram bucket. Values should be in ascending order. For example, if [5, 10, 15] are provided, four buckets are created: (-inf, 5), 5, 10), [10, 15), [15, inf). At most 20 [buckets_bound is supported.
            3.14,
          ],
          &quot;requiresMinMax&quot;: True or False, # Optional. If set to true, the histogram result includes minimum/maximum value of the numeric field.
        },
        &quot;type&quot;: &quot;A String&quot;, # Required. Type of the request, representing which field the histogramming should be performed over. A single request can only specify one histogram of each `CompensationHistogramRequestType`.
      },
    ],
    &quot;customAttributeHistogramFacets&quot;: [ # Optional. Specifies the custom attributes histogram requests. Duplicate values of CustomAttributeHistogramRequest.key are not allowed.
      { # Custom attributes histogram request. An error is thrown if neither string_value_histogram or long_value_histogram_bucketing_option has been defined.
        &quot;key&quot;: &quot;A String&quot;, # Required. Specifies the custom field key to perform a histogram on. If specified without `long_value_histogram_bucketing_option`, histogram on string values of the given `key` is triggered, otherwise histogram is performed on long values.
        &quot;longValueHistogramBucketingOption&quot;: { # Input only. Use this field to specify bucketing option for the histogram search response. # Optional. Specifies buckets used to perform a range histogram on Job&#x27;s filterable long custom field values, or min/max value requirements.
          &quot;bucketBounds&quot;: [ # Required. Two adjacent values form a histogram bucket. Values should be in ascending order. For example, if [5, 10, 15] are provided, four buckets are created: (-inf, 5), 5, 10), [10, 15), [15, inf). At most 20 [buckets_bound is supported.
            3.14,
          ],
          &quot;requiresMinMax&quot;: True or False, # Optional. If set to true, the histogram result includes minimum/maximum value of the numeric field.
        },
        &quot;stringValueHistogram&quot;: True or False, # Optional. If set to true, the response includes the histogram value for each key as a string.
      },
    ],
    &quot;simpleHistogramFacets&quot;: [ # Optional. Specifies the simple type of histogram facets, for example, `COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc.
      &quot;A String&quot;,
    ],
  },
  &quot;histogramQueries&quot;: [ # Optional. Expression based histogram requests for jobs matching JobQuery.
    { # Input Only. The histogram request.
      &quot;histogramQuery&quot;: &quot;A String&quot;, # An expression specifies a histogram request against matching resources (for example, jobs) for searches. Expression syntax is a aggregation function call with histogram facets and other options. Available aggregation function calls are: * `count(string_histogram_facet)`: Count the number of matching entity, for each distinct attribute value. * `count(numeric_histogram_facet, list of buckets)`: Count the number of matching entity within each bucket. A maximum of 200 histogram buckets are supported. 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_id: histogram by [Job.distributor_company_id. * 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_day: histogram by the Job.publish_time in days. Must specify list of numeric buckets in spec. * publish_time_in_month: histogram by the Job.publish_time in months. Must specify list of numeric buckets in spec. * publish_time_in_year: histogram by the Job.publish_time in years. Must specify list of numeric buckets in spec. * degree_type: histogram by the Job.degree_type. 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 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;)])
    },
  ],
  &quot;jobQuery&quot;: { # Input only. The query required to perform a search query. # Optional. Query used to search against jobs, such as keyword, location filters, etc.
    &quot;commuteFilter&quot;: { # Input only. Parameters needed for commute search. # Optional. Allows filtering jobs by commute time with different travel methods (for example, driving or public transit). Note: This only works with COMMUTE MODE. When specified, [JobQuery.location_filters] is ignored. Currently we don&#x27;t support sorting by commute time.
      &quot;allowImpreciseAddresses&quot;: True or False, # Optional. If true, jobs without &quot;precise&quot; addresses (street level addresses or GPS coordinates) might also be returned. For city and coarser level addresses, text matching is used. If this field is set to false or is not specified, only jobs that include precise addresses are returned by Commute Search. Note: If `allow_imprecise_addresses` is set to true, Commute Search is not able to calculate accurate commute times to jobs with city level and coarser address information. Jobs with imprecise addresses will return a `travel_duration` time of 0 regardless of distance from the job seeker.
      &quot;commuteMethod&quot;: &quot;A String&quot;, # Required. The method of transportation for which to calculate the commute time.
      &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`. # Optional. 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;, # Optional. 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 object must conform to the WGS84 standard. Values must be within normalized ranges. # Required. The latitude and longitude of the location from which to calculate the commute time.
        &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;companyDisplayNames&quot;: [ # Optional. This filter specifies the company Company.display_name of the jobs to search against. The company name must match the value exactly. Alternatively, if the value being searched for is wrapped in SUBSTRING_MATCH([value]), the company name must contain a case insensitive substring match of the value. Using this function may increase latency. Sample Value: SUBSTRING_MATCH(google) 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;companyNames&quot;: [ # Optional. 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}/companies/{company_id}&quot;, for example, &quot;projects/api-test-project/companies/foo&quot;. At most 20 company filters are allowed.
      &quot;A String&quot;,
    ],
    &quot;compensationFilter&quot;: { # Input only. Filter on job compensation type and amount. # Optional. 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, # Optional. If set to true, jobs with unspecified compensation range fields are included.
      &quot;range&quot;: { # Compensation range. # Optional. Compensation range.
        &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. 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; 10000 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, # Optional. 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;: [ # Optional. The employment type filter specifies the employment type of jobs to search against, such as EmploymentType.FULL_TIME. If a value is not 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;: [ # Optional. 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;: [ # Optional. The category filter specifies the categories of jobs to search against. See Category for more information. If a value is not 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;: [ # Optional. 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;: [ # Optional. 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.
      { # Input only. Geographic region of the search.
        &quot;address&quot;: &quot;A String&quot;, # Optional. The address name, such as &quot;Mountain View&quot; or &quot;Bay Area&quot;.
        &quot;distanceInMiles&quot;: 3.14, # Optional. The distance_in_miles is applied when the location being searched for is identified as a city or smaller. When the location being searched for is a state or larger, this field is ignored.
        &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 object must conform to the WGS84 standard. Values must be within normalized ranges. # Optional. The latitude and longitude of the geographic center from which to search. This field&#x27;s 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;, # Optional. 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 limited. 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;, # Optional. 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.
      },
    ],
    &quot;publishTimeRange&quot;: { # Message representing a period of time between two timestamps. # Optional. Jobs published within a range specified by this filter are searched against.
      &quot;endTime&quot;: &quot;A String&quot;, # End of the period.
      &quot;startTime&quot;: &quot;A String&quot;, # Begin of the period.
    },
    &quot;query&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The desired job attributes returned for jobs in the search response. Defaults to JobView.SMALL if no value is specified.
  &quot;offset&quot;: 42, # Optional. 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;, # Optional. 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.custom_ranking_info.ranking_expression with weight factor assigned by SearchJobsRequest.custom_ranking_info.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;pageSize&quot;: 42, # Optional. 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;pageToken&quot;: &quot;A String&quot;, # Optional. 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;: { # Input only. 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;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. # Optional. 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;, # Optional. Type of the device.
      &quot;id&quot;: &quot;A String&quot;, # Optional. 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. 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. If this field isn&#x27;t available for some reason, send &quot;UNKNOWN&quot;. Any improvements to the model for a particular tenant site rely on this field being set correctly to a domain. The maximum number of allowed characters is 255.
    &quot;sessionId&quot;: &quot;A String&quot;, # Required. 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. If this field is not available for some reason, send &quot;UNKNOWN&quot;. Note that any improvements to the model for a particular tenant site, rely on this field being set correctly to some unique session_id. The maximum number of allowed characters is 255.
    &quot;userId&quot;: &quot;A String&quot;, # Required. 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. If this field is not available for some reason, send &quot;UNKNOWN&quot;. 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;requirePreciseResultSize&quot;: True or False, # This field is deprecated.
  &quot;searchMode&quot;: &quot;A String&quot;, # Optional. 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:

    { # Output only. 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;estimatedTotalSize&quot;: 42, # An estimation of the number of jobs that match the specified query. This number is not guaranteed to be accurate. For accurate results, see SearchJobsResponse.total_size.
  &quot;histogramQueryResults&quot;: [ # The histogram results that match with specified SearchJobsRequest.histogram_queries.
    { # Output only. Histogram result that matches HistogramSpec 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;histogramResults&quot;: { # Output only. Histogram results that match HistogramFacets specified in SearchJobsRequest. # The histogram results that match specified SearchJobsRequest.histogram_facets.
    &quot;compensationHistogramResults&quot;: [ # Specifies compensation field-based histogram results that match HistogramFacets.compensation_histogram_requests.
      { # Output only. Compensation based histogram result.
        &quot;result&quot;: { # Output only. Custom numeric bucketing result. # Histogram result.
          &quot;counts&quot;: [ # Count within each bucket. Its size is the length of NumericBucketingOption.bucket_bounds plus 1.
            { # Represents count of jobs within one bucket.
              &quot;count&quot;: 42, # Number of jobs whose numeric field value fall into `range`.
              &quot;range&quot;: { # Represents starting and ending value of a range in double. # Bucket range on which histogram was performed for the numeric field, that is, the count represents number of jobs in this range.
                &quot;from&quot;: 3.14, # Starting value of the bucket range.
                &quot;to&quot;: 3.14, # Ending value of the bucket range.
              },
            },
          ],
          &quot;maxValue&quot;: 3.14, # Stores the maximum value of the numeric field. Is populated only if [NumericBucketingOption.requires_min_max] is set to true.
          &quot;minValue&quot;: 3.14, # Stores the minimum value of the numeric field. Will be populated only if [NumericBucketingOption.requires_min_max] is set to true.
        },
        &quot;type&quot;: &quot;A String&quot;, # Type of the request, corresponding to CompensationHistogramRequest.type.
      },
    ],
    &quot;customAttributeHistogramResults&quot;: [ # Specifies histogram results for custom attributes that match HistogramFacets.custom_attribute_histogram_facets.
      { # Output only. Custom attribute histogram result.
        &quot;key&quot;: &quot;A String&quot;, # Stores the key of custom attribute the histogram is performed on.
        &quot;longValueHistogramResult&quot;: { # Output only. Custom numeric bucketing result. # Stores bucketed histogram counting result or min/max values for custom attribute long values associated with `key`.
          &quot;counts&quot;: [ # Count within each bucket. Its size is the length of NumericBucketingOption.bucket_bounds plus 1.
            { # Represents count of jobs within one bucket.
              &quot;count&quot;: 42, # Number of jobs whose numeric field value fall into `range`.
              &quot;range&quot;: { # Represents starting and ending value of a range in double. # Bucket range on which histogram was performed for the numeric field, that is, the count represents number of jobs in this range.
                &quot;from&quot;: 3.14, # Starting value of the bucket range.
                &quot;to&quot;: 3.14, # Ending value of the bucket range.
              },
            },
          ],
          &quot;maxValue&quot;: 3.14, # Stores the maximum value of the numeric field. Is populated only if [NumericBucketingOption.requires_min_max] is set to true.
          &quot;minValue&quot;: 3.14, # Stores the minimum value of the numeric field. Will be populated only if [NumericBucketingOption.requires_min_max] is set to true.
        },
        &quot;stringValueHistogramResult&quot;: { # Stores a map from the values of string custom field associated with `key` to the number of jobs with that value in this histogram result.
          &quot;a_key&quot;: 42,
        },
      },
    ],
    &quot;simpleHistogramResults&quot;: [ # Specifies histogram results that matches HistogramFacets.simple_histogram_facets.
      { # Output only. Result of a histogram call. The response contains the histogram map for the search type specified by HistogramResult.field. The response is a map of each filter value to the corresponding count of jobs for that filter.
        &quot;searchType&quot;: &quot;A String&quot;, # The Histogram search filters.
        &quot;values&quot;: { # A map from the values of field to the number of jobs with that value in this search result. Key: search type (filter names, such as the companyName). Values: the count of jobs that match the filter for this search.
          &quot;a_key&quot;: 42,
        },
      },
    ],
  },
  &quot;locationFilters&quot;: [ # The location filters that the service applied to the specified query. If any filters are lat-lng based, the JobLocation.location_type is JobLocation.LocationType#LOCATION_TYPE_UNSPECIFIED.
    { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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.
    { # Output only. Job entry with metadata inside SearchJobsResponse.
      &quot;commuteInfo&quot;: { # Output only. Commute details related to this job. # Commute information which is generated based on specified CommuteFilter.
        &quot;jobLocation&quot;: { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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 is not 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;: [ # Optional but 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;, etc.) as multiple jobs with the same company_name, 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. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses &quot;1600 Amphitheatre Parkway, Mountain View, CA, USA&quot; and &quot;London, UK&quot; may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.
          &quot;A String&quot;,
        ],
        &quot;applicationInfo&quot;: { # Application related details of a job posting. # Required. At least one field within ApplicationInfo must be specified. Job application information.
          &quot;emails&quot;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;, # Optional but at least one of uris, emails or instruction must be specified. 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;: [ # Optional but at least one of uris, emails or instruction must be specified. 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;companyDisplayName&quot;: &quot;A String&quot;, # Output only. Display name of the company listing the job.
        &quot;companyName&quot;: &quot;A String&quot;, # Required. The resource name of the company listing the job, such as &quot;projects/api-test-project/companies/foo&quot;.
        &quot;compensationInfo&quot;: { # Job compensation details. # Optional. Job compensation information.
          &quot;annualizedBaseCompensationRange&quot;: { # Compensation range. # Output only. Annualized base compensation range. Computed as base compensation entry&#x27;s CompensationEntry.compensation 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. # Optional. 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. # Optional. 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.compensation 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. # Optional. 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. # Optional. 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;: [ # Optional. 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. # Optional. 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;, # Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus.
              &quot;expectedUnitsPerYear&quot;: 3.14, # Optional. 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. # Optional. Compensation range.
                &quot;maxCompensation&quot;: { # Represents an amount of money with its currency type. # Optional. 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. # Optional. 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;, # Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.
              &quot;unit&quot;: &quot;A String&quot;, # Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
            },
          ],
        },
        &quot;customAttributes&quot;: { # Optional. 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, # Optional. 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;longValues&quot;: [ # Optional but 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;: [ # Optional but 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 is not allowed.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;degreeTypes&quot;: [ # Optional. The desired education degrees for the job, such as Bachelors, Masters.
          &quot;A String&quot;,
        ],
        &quot;department&quot;: &quot;A String&quot;, # Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.
        &quot;derivedInfo&quot;: { # Output only. 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.
            { # Output only. 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 object 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 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 https://cldr.unicode.org/ and https://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;radiusInMiles&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 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;: [ # Optional. 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;, # Optional. 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;: [ # Optional. The benefits included with the job.
          &quot;A String&quot;,
        ],
        &quot;jobEndTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. The experience level associated with the job, such as &quot;Entry Level&quot;.
        &quot;jobStartTime&quot;: &quot;A String&quot;, # Optional. 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;, # Optional. 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}/jobs/{job_id}&quot;, for example, &quot;projects/api-test-project/jobs/1234&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;, # Optional but 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 deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob 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_name, 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 of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not 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 is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_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;, # Optional. 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;, # Optional. 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;: { # Input only. Options for job processing. # Optional. Options for job processing.
          &quot;disableStreetAddressResolution&quot;: True or False, # Optional. 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;, # Optional. 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 is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.
        },
        &quot;promotionValue&quot;: 42, # Optional. 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;, # Optional. 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, 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 is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.
        &quot;responsibilities&quot;: &quot;A String&quot;, # Optional. 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.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;: { # Output only. 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;: { # Output only. 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;correctedText&quot;: &quot;A String&quot;, # Correction output consisting of the corrected keyword string.
  },
  &quot;totalSize&quot;: 42, # The precise result count with limit 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>