<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="analyticsreporting_v4.html">Analytics Reporting API</a> . <a href="analyticsreporting_v4.userActivity.html">userActivity</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#search">search(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns User Activity data.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body=None, x__xgafv=None)</code>
  <pre>Returns User Activity data.

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

{ # The request to fetch User Report from Reporting API `userActivity:get` call.
    &quot;user&quot;: { # Contains information to identify a particular user uniquely. # Required. Unique user Id to query for. Every [SearchUserActivityRequest](#SearchUserActivityRequest) must contain this field.
      &quot;type&quot;: &quot;A String&quot;, # Type of the user in the request. The field `userId` is associated with this type.
      &quot;userId&quot;: &quot;A String&quot;, # Unique Id of the user for which the data is being requested.
    },
    &quot;viewId&quot;: &quot;A String&quot;, # Required. The Analytics [view ID](https://support.google.com/analytics/answer/1009618) from which to retrieve data. Every [SearchUserActivityRequest](#SearchUserActivityRequest) must contain the `viewId`.
    &quot;pageSize&quot;: 42, # Page size is for paging and specifies the maximum number of returned rows. Page size should be &gt; 0. If the value is 0 or if the field isn&#x27;t specified, the request returns the default of 1000 rows per page.
    &quot;pageToken&quot;: &quot;A String&quot;, # A continuation token to get the next page of the results. Adding this to the request will return the rows after the pageToken. The pageToken should be the value returned in the nextPageToken parameter in the response to the [SearchUserActivityRequest](#SearchUserActivityRequest) request.
    &quot;activityTypes&quot;: [ # Set of all activity types being requested. Only acvities matching these types will be returned in the response. If empty, all activies will be returned.
      &quot;A String&quot;,
    ],
    &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1 day, ..., endDate. The start and end dates are specified in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`. # Date range for which to retrieve the user activity. If a date range is not provided, the default date range is (startDate: current date - 7 days, endDate: current date - 1 day).
      &quot;startDate&quot;: &quot;A String&quot;, # The start date for the query in the format `YYYY-MM-DD`.
      &quot;endDate&quot;: &quot;A String&quot;, # The end date for the query in the format `YYYY-MM-DD`.
    },
  }

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

Returns:
  An object of the form:

    { # The response from `userActivity:get` call.
    &quot;sampleRate&quot;: 3.14, # This field represents the [sampling rate](https://support.google.com/analytics/answer/2637192) for the given request and is a number between 0.0 to 1.0. See [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling) for details.
    &quot;totalRows&quot;: 42, # Total rows returned by this query (across different pages).
    &quot;sessions&quot;: [ # Each record represents a session (device details, duration, etc).
      { # This represents a user session performed on a specific device at a certain time over a period of time.
        &quot;sessionDate&quot;: &quot;A String&quot;, # Date of this session in ISO-8601 format.
        &quot;sessionId&quot;: &quot;A String&quot;, # Unique ID of the session.
        &quot;activities&quot;: [ # Represents a detailed view into each of the activity in this session.
          { # An Activity represents data for an activity of a user. Note that an Activity is different from a hit. A hit might result in multiple Activity&#x27;s. For example, if a hit includes a transaction and a goal completion, there will be two Activity protos for this hit, one for ECOMMERCE and one for GOAL. Conversely, multiple hits can also construct one Activity. In classic e-commerce, data for one transaction might be sent through multiple hits. These hits will be merged into one ECOMMERCE Activity.
            &quot;pageview&quot;: { # Represents details collected when the visitor views a page. # This will be set if `activity_type` equals `PAGEVIEW`. This field contains all the details about the visitor and the page that was visited.
              &quot;pagePath&quot;: &quot;A String&quot;, # The URL of the page that the visitor viewed.
              &quot;pageTitle&quot;: &quot;A String&quot;, # The title of the page that the visitor viewed.
            },
            &quot;ecommerce&quot;: { # E-commerce details associated with the user activity. # This will be set if `activity_type` equals `ECOMMERCE`.
              &quot;products&quot;: [ # Details of the products in this transaction.
                { # Details of the products in an e-commerce transaction.
                  &quot;productQuantity&quot;: &quot;A String&quot;, # Total number of this product units in the transaction.
                  &quot;itemRevenue&quot;: 3.14, # The total revenue from purchased product items.
                  &quot;productSku&quot;: &quot;A String&quot;, # Unique code that represents the product.
                  &quot;productName&quot;: &quot;A String&quot;, # The product name, supplied by the e-commerce tracking application, for the purchased items.
                },
              ],
              &quot;ecommerceType&quot;: &quot;A String&quot;, # The type of this e-commerce activity.
              &quot;transaction&quot;: { # Represents details collected when the visitor performs a transaction on the page. # Transaction details of this e-commerce action.
                &quot;transactionRevenue&quot;: 3.14, # The total sale revenue (excluding shipping and tax) of the transaction.
                &quot;transactionShipping&quot;: 3.14, # Total cost of shipping.
                &quot;transactionTax&quot;: 3.14, # Total tax for the transaction.
                &quot;transactionId&quot;: &quot;A String&quot;, # The transaction ID, supplied by the e-commerce tracking method, for the purchase in the shopping cart.
              },
              &quot;actionType&quot;: &quot;A String&quot;, # Action associated with this e-commerce action.
            },
            &quot;appview&quot;: { # This will be set if `activity_type` equals `SCREEN_VIEW`.
              &quot;screenName&quot;: &quot;A String&quot;, # The name of the screen.
              &quot;mobileDeviceBranding&quot;: &quot;A String&quot;, # Mobile manufacturer or branded name. Eg: &quot;Google&quot;, &quot;Apple&quot; etc.
              &quot;mobileDeviceModel&quot;: &quot;A String&quot;, # Mobile device model. Eg: &quot;Pixel&quot;, &quot;iPhone&quot; etc.
              &quot;appName&quot;: &quot;A String&quot;, # The application name.
            },
            &quot;event&quot;: { # Represents all the details pertaining to an event. # This field contains all the details pertaining to an event and will be set if `activity_type` equals `EVENT`.
              &quot;eventCategory&quot;: &quot;A String&quot;, # The object on the page that was interacted with. Eg: &#x27;Video&#x27;.
              &quot;eventValue&quot;: &quot;A String&quot;, # Numeric value associated with the event.
              &quot;eventAction&quot;: &quot;A String&quot;, # Type of interaction with the object. Eg: &#x27;play&#x27;.
              &quot;eventCount&quot;: &quot;A String&quot;, # Number of such events in this activity.
              &quot;eventLabel&quot;: &quot;A String&quot;, # Label attached with the event.
            },
            &quot;campaign&quot;: &quot;A String&quot;, # For manual campaign tracking, it is the value of the utm_campaign campaign tracking parameter. For AdWords autotagging, it is the name(s) of the online ad campaign(s) you use for the property. If you use neither, its value is (not set).
            &quot;landingPagePath&quot;: &quot;A String&quot;, # The first page in users&#x27; sessions, or the landing page.
            &quot;activityTime&quot;: &quot;A String&quot;, # Timestamp of the activity. If activities for a visit cross midnight and occur in two separate dates, then two sessions (one per date) share the session identifier. For example, say session ID 113472 has activity within 2019-08-20, and session ID 243742 has activity within 2019-08-25 and 2019-08-26. Session ID 113472 is one session, and session ID 243742 is two sessions.
            &quot;medium&quot;: &quot;A String&quot;, # The type of referrals. For manual campaign tracking, it is the value of the utm_medium campaign tracking parameter. For AdWords autotagging, it is cpc. If users came from a search engine detected by Google Analytics, it is organic. If the referrer is not a search engine, it is referral. If users came directly to the property and document.referrer is empty, its value is (none).
            &quot;channelGrouping&quot;: &quot;A String&quot;, # The Channel Group associated with an end user&#x27;s session for this View (defined by the View&#x27;s Channel Groupings).
            &quot;hostname&quot;: &quot;A String&quot;, # The hostname from which the tracking request was made.
            &quot;source&quot;: &quot;A String&quot;, # The source of referrals. For manual campaign tracking, it is the value of the utm_source campaign tracking parameter. For AdWords autotagging, it is google. If you use neither, it is the domain of the source (e.g., document.referrer) referring the users. It may also contain a port address. If users arrived without a referrer, its value is (direct).
            &quot;activityType&quot;: &quot;A String&quot;, # Type of this activity.
            &quot;customDimension&quot;: [ # A list of all custom dimensions associated with this activity.
              { # Custom dimension.
                &quot;index&quot;: 42, # Slot number of custom dimension.
                &quot;value&quot;: &quot;A String&quot;, # Value of the custom dimension. Default value (i.e. empty string) indicates clearing sesion/visitor scope custom dimension value.
              },
            ],
            &quot;goals&quot;: { # Represents a set of goals that were reached in an activity. # This field contains a list of all the goals that were reached in this activity when `activity_type` equals `GOAL`.
              &quot;goals&quot;: [ # All the goals that were reached in the current activity.
                { # Represents all the details pertaining to a goal.
                  &quot;goalPreviousStep3&quot;: &quot;A String&quot;, # URL of the page three steps prior to the goal completion.
                  &quot;goalValue&quot;: 3.14, # Value in this goal.
                  &quot;goalCompletionLocation&quot;: &quot;A String&quot;, # URL of the page where this goal was completed.
                  &quot;goalPreviousStep1&quot;: &quot;A String&quot;, # URL of the page one step prior to the goal completion.
                  &quot;goalPreviousStep2&quot;: &quot;A String&quot;, # URL of the page two steps prior to the goal completion.
                  &quot;goalName&quot;: &quot;A String&quot;, # Name of the goal.
                  &quot;goalCompletions&quot;: &quot;A String&quot;, # Total number of goal completions in this activity.
                  &quot;goalIndex&quot;: 42, # This identifies the goal as configured for the profile.
                },
              ],
            },
            &quot;keyword&quot;: &quot;A String&quot;, # For manual campaign tracking, it is the value of the utm_term campaign tracking parameter. For AdWords traffic, it contains the best matching targeting criteria. For the display network, where multiple targeting criteria could have caused the ad to show up, it returns the best matching targeting criteria as selected by Ads. This could be display_keyword, site placement, boomuserlist, user_interest, age, or gender. Otherwise its value is (not set).
          },
        ],
        &quot;dataSource&quot;: &quot;A String&quot;, # The data source of a hit. By default, hits sent from analytics.js are reported as &quot;web&quot; and hits sent from the mobile SDKs are reported as &quot;app&quot;. These values can be overridden in the Measurement Protocol.
        &quot;platform&quot;: &quot;A String&quot;, # Platform on which the activity happened: &quot;android&quot;, &quot;ios&quot; etc.
        &quot;deviceCategory&quot;: &quot;A String&quot;, # The type of device used: &quot;mobile&quot;, &quot;tablet&quot; etc.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # This token should be passed to [SearchUserActivityRequest](#SearchUserActivityRequest) to retrieve the next page.
  }</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>