<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_v3.html">Cloud Talent Solution API</a> . <a href="jobs_v3.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="jobs_v3.projects.clientEvents.html">clientEvents()</a></code>
</p>
<p class="firstline">Returns the clientEvents Resource.</p>

<p class="toc_element">
  <code><a href="jobs_v3.projects.companies.html">companies()</a></code>
</p>
<p class="firstline">Returns the companies Resource.</p>

<p class="toc_element">
  <code><a href="jobs_v3.projects.jobs.html">jobs()</a></code>
</p>
<p class="firstline">Returns the jobs Resource.</p>

<p class="toc_element">
  <code><a href="#complete">complete(name, languageCode=None, pageSize=None, languageCodes=None, query=None, x__xgafv=None, scope=None, type=None, companyName=None)</a></code></p>
<p class="firstline">Completes the specified prefix with keyword suggestions.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="complete">complete(name, languageCode=None, pageSize=None, languageCodes=None, query=None, x__xgafv=None, scope=None, type=None, companyName=None)</code>
  <pre>Completes the specified prefix with keyword suggestions.
Intended for use by a job search auto-complete search box.

Args:
  name: string, Required.

Resource name of project the completion is performed within.

The format is "projects/{project_id}", for example,
"projects/api-test-project". (required)
  languageCode: string, Deprecated. Use language_codes instead.

Optional.

The language of the query. This is
the BCP-47 language code, such as "en-US" or "sr-Latn".
For more information, see
[Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).

For CompletionType.JOB_TITLE type, only open jobs with the same
language_code are returned.

For CompletionType.COMPANY_NAME type,
only companies having open jobs with the same language_code are
returned.

For CompletionType.COMBINED type, only open jobs with the same
language_code or companies having open jobs with the same
language_code are returned.

The maximum number of allowed characters is 255.
  pageSize: integer, Required.

Completion result count.

The maximum allowed page size is 10.
  languageCodes: string, Optional.

The list of languages of the query. This is
the BCP-47 language code, such as "en-US" or "sr-Latn".
For more information, see
[Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).

For CompletionType.JOB_TITLE type, only open jobs with the same
language_codes are returned.

For CompletionType.COMPANY_NAME type,
only companies having open jobs with the same language_codes are
returned.

For CompletionType.COMBINED type, only open jobs with the same
language_codes or companies having open jobs with the same
language_codes are returned.

The maximum number of allowed characters is 255. (repeated)
  query: string, Required.

The query used to generate suggestions.

The maximum number of allowed characters is 255.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  scope: string, Optional.

The scope of the completion. The defaults is CompletionScope.PUBLIC.
  type: string, Optional.

The completion topic. The default is CompletionType.COMBINED.
  companyName: string, Optional.

If provided, restricts completion to specified company.

The format is "projects/{project_id}/companies/{company_id}", for example,
"projects/api-test-project/companies/foo".

Returns:
  An object of the form:

    { # Output only.
      #
      # Response of auto-complete query.
    "completionResults": [ # Results of the matching job/company candidates.
      { # Output only.
          #
          # Resource that represents completion results.
        "type": "A String", # The completion topic.
        "suggestion": "A String", # The suggestion for the query.
        "imageUri": "A String", # The URI of the company image for CompletionType.COMPANY_NAME.
      },
    ],
    "metadata": { # Output only. # Additional information for the API invocation, such as the request
        # tracking id.
        #
        # Additional information returned to client, such as debugging information.
      "requestId": "A String", # A unique id associated with this call.
          # This id is logged for tracking purposes.
    },
  }</pre>
</div>

</body></html>