<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> . <a href="jobs_v3.projects.clientEvents.html">clientEvents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Report events issued when end user interacts with customer's application</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(parent, body, x__xgafv=None)</code>
  <pre>Report events issued when end user interacts with customer's application
that uses Cloud Talent Solution. You may inspect the created events in
[self service
tools](https://console.cloud.google.com/talent-solution/overview).
[Learn
more](https://cloud.google.com/talent-solution/docs/management-tools)
about self service tools.

Args:
  parent: string, Parent project name. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The report event request.
    "clientEvent": { # An event issued when an end user interacts with the application that # Required.
        # 
        # Events issued when end user interacts with customer's application that
        # uses Cloud Talent Solution.
        # implements Cloud Talent Solution. Providing this information improves the
        # quality of search and recommendation for the API clients, enabling the
        # service to perform optimally. The number of events sent must be consistent
        # with other calls, such as job searches, issued to the service by the client.
      "eventId": "A String", # Required.
          #
          # A unique identifier, generated by the client application. This `event_id`
          # is used to establish the relationship between different events
          # (see parent_event_id).
      "parentEventId": "A String", # Optional.
          #
          # The event_id of an event that resulted in the current event. For example, a
          # Job view event usually follows a parent
          # impression event: A job seeker first does a
          # search where a list of jobs appears
          # (impression). The job seeker then selects a
          # result and views the description of a particular job (Job
          # view).
      "extraInfo": { # Optional.
          #
          # Extra information about this event. Used for storing information with no
          # matching field in event payload, for example, user application specific
          # context or details.
          #
          # At most 20 keys are supported. The maximum total size of all keys and
          # values is 2 KB.
        "a_key": "A String",
      },
      "jobEvent": { # An event issued when a job seeker interacts with the application that # A event issued when a job seeker interacts with the application that
          # implements Cloud Talent Solution.
          # implements Cloud Talent Solution.
        "type": "A String", # Required.
            #
            # The type of the event (see JobEventType).
        "jobs": [ # Required.
            #
            # The job name(s) associated with this event.
            # For example, if this is an impression event,
            # this field contains the identifiers of all jobs shown to the job seeker.
            # If this was a view event, this field contains the
            # identifier of the viewed job.
          "A String",
        ],
      },
      "requestId": "A String", # Required.
          #
          # A unique ID generated in the API responses. It can be found in
          # ResponseMetadata.request_id.
      "createTime": "A String", # Required.
          #
          # The timestamp of the event.
    },
  }

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

Returns:
  An object of the form:

    { # An event issued when an end user interacts with the application that
      # implements Cloud Talent Solution. Providing this information improves the
      # quality of search and recommendation for the API clients, enabling the
      # service to perform optimally. The number of events sent must be consistent
      # with other calls, such as job searches, issued to the service by the client.
    "eventId": "A String", # Required.
        #
        # A unique identifier, generated by the client application. This `event_id`
        # is used to establish the relationship between different events
        # (see parent_event_id).
    "parentEventId": "A String", # Optional.
        #
        # The event_id of an event that resulted in the current event. For example, a
        # Job view event usually follows a parent
        # impression event: A job seeker first does a
        # search where a list of jobs appears
        # (impression). The job seeker then selects a
        # result and views the description of a particular job (Job
        # view).
    "extraInfo": { # Optional.
        #
        # Extra information about this event. Used for storing information with no
        # matching field in event payload, for example, user application specific
        # context or details.
        #
        # At most 20 keys are supported. The maximum total size of all keys and
        # values is 2 KB.
      "a_key": "A String",
    },
    "jobEvent": { # An event issued when a job seeker interacts with the application that # A event issued when a job seeker interacts with the application that
        # implements Cloud Talent Solution.
        # implements Cloud Talent Solution.
      "type": "A String", # Required.
          #
          # The type of the event (see JobEventType).
      "jobs": [ # Required.
          #
          # The job name(s) associated with this event.
          # For example, if this is an impression event,
          # this field contains the identifiers of all jobs shown to the job seeker.
          # If this was a view event, this field contains the
          # identifier of the viewed job.
        "A String",
      ],
    },
    "requestId": "A String", # Required.
        #
        # A unique ID generated in the API responses. It can be found in
        # ResponseMetadata.request_id.
    "createTime": "A String", # Required.
        #
        # The timestamp of the event.
  }</pre>
</div>

</body></html>