<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="firebasedynamiclinks_v1.html">Firebase Dynamic Links API</a> . <a href="firebasedynamiclinks_v1.v1.html">v1</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="#getLinkStats">getLinkStats(dynamicLink, durationDays=None, sdkVersion=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches analytics stats of a short Dynamic Link for a given duration. Metrics include number of clicks, redirects, installs, app first opens, and app reopens.</p>
<p class="toc_element">
  <code><a href="#installAttribution">installAttribution(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get iOS strong/weak-match info for post-install attribution.</p>
<p class="toc_element">
  <code><a href="#reopenAttribution">reopenAttribution(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get iOS reopen attribution for app universal link open deeplinking.</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="getLinkStats">getLinkStats(dynamicLink, durationDays=None, sdkVersion=None, x__xgafv=None)</code>
  <pre>Fetches analytics stats of a short Dynamic Link for a given duration. Metrics include number of clicks, redirects, installs, app first opens, and app reopens.

Args:
  dynamicLink: string, Dynamic Link URL. e.g. https://abcd.app.goo.gl/wxyz (required)
  durationDays: string, The span of time requested in days.
  sdkVersion: string, Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Analytics stats of a Dynamic Link for a given timeframe.
  &quot;linkEventStats&quot;: [ # Dynamic Link event stats.
    { # Dynamic Link event stat.
      &quot;count&quot;: &quot;A String&quot;, # The number of times this event occurred.
      &quot;event&quot;: &quot;A String&quot;, # Link event.
      &quot;platform&quot;: &quot;A String&quot;, # Requested platform.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="installAttribution">installAttribution(body=None, x__xgafv=None)</code>
  <pre>Get iOS strong/weak-match info for post-install attribution.

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

{ # Request for iSDK to execute strong match flow for post-install attribution. This is meant for iOS requests only. Requests from other platforms will not be honored.
  &quot;appInstallationTime&quot;: &quot;A String&quot;, # App installation epoch time (https://en.wikipedia.org/wiki/Unix_time). This is a client signal for a more accurate weak match.
  &quot;bundleId&quot;: &quot;A String&quot;, # APP bundle ID.
  &quot;device&quot;: { # Signals associated with the device making the request. # Device information.
    &quot;deviceModelName&quot;: &quot;A String&quot;, # Device model name.
    &quot;languageCode&quot;: &quot;A String&quot;, # Device language code setting.
    &quot;languageCodeFromWebview&quot;: &quot;A String&quot;, # Device language code setting obtained by executing JavaScript code in WebView.
    &quot;languageCodeRaw&quot;: &quot;A String&quot;, # Device language code raw setting. iOS does returns language code in different format than iOS WebView. For example WebView returns en_US, but iOS returns en-US. Field below will return raw value returned by iOS.
    &quot;screenResolutionHeight&quot;: &quot;A String&quot;, # Device display resolution height.
    &quot;screenResolutionWidth&quot;: &quot;A String&quot;, # Device display resolution width.
    &quot;timezone&quot;: &quot;A String&quot;, # Device timezone setting.
  },
  &quot;iosVersion&quot;: &quot;A String&quot;, # iOS version, ie: 9.3.5. Consider adding &quot;build&quot;.
  &quot;retrievalMethod&quot;: &quot;A String&quot;, # App post install attribution retrieval information. Disambiguates mechanism (iSDK or developer invoked) to retrieve payload from clicked link.
  &quot;sdkVersion&quot;: &quot;A String&quot;, # Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
  &quot;uniqueMatchLinkToCheck&quot;: &quot;A String&quot;, # Possible unique matched link that server need to check before performing fingerprint match. If passed link is short server need to expand the link. If link is long server need to vslidate the link.
  &quot;visualStyle&quot;: &quot;A String&quot;, # Strong match page information. Disambiguates between default UI and custom page to present when strong match succeeds/fails to find cookie.
}

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

Returns:
  An object of the form:

    { # Response for iSDK to execute strong match flow for post-install attribution.
  &quot;appMinimumVersion&quot;: &quot;A String&quot;, # The minimum version for app, specified by dev through ?imv= parameter. Return to iSDK to allow app to evaluate if current version meets this.
  &quot;attributionConfidence&quot;: &quot;A String&quot;, # The confidence of the returned attribution.
  &quot;deepLink&quot;: &quot;A String&quot;, # The deep-link attributed post-install via one of several techniques (fingerprint, copy unique).
  &quot;externalBrowserDestinationLink&quot;: &quot;A String&quot;, # User-agent specific custom-scheme URIs for iSDK to open. This will be set according to the user-agent tha the click was originally made in. There is no Safari-equivalent custom-scheme open URLs. ie: googlechrome://www.example.com ie: firefox://open-url?url=http://www.example.com ie: opera-http://example.com
  &quot;fallbackLink&quot;: &quot;A String&quot;, # The link to navigate to update the app if min version is not met. This is either (in order): 1) fallback link (from ?ifl= parameter, if specified by developer) or 2) AppStore URL (from ?isi= parameter, if specified), or 3) the payload link (from required link= parameter).
  &quot;invitationId&quot;: &quot;A String&quot;, # Invitation ID attributed post-install via one of several techniques (fingerprint, copy unique).
  &quot;isStrongMatchExecutable&quot;: True or False, # Instruction for iSDK to attemmpt to perform strong match. For instance, if browser does not support/allow cookie or outside of support browsers, this will be false.
  &quot;matchMessage&quot;: &quot;A String&quot;, # Describes why match failed, ie: &quot;discarded due to low confidence&quot;. This message will be publicly visible.
  &quot;requestIpVersion&quot;: &quot;A String&quot;, # Which IP version the request was made from.
  &quot;requestedLink&quot;: &quot;A String&quot;, # Entire FDL (short or long) attributed post-install via one of several techniques (fingerprint, copy unique).
  &quot;resolvedLink&quot;: &quot;A String&quot;, # The entire FDL, expanded from a short link. It is the same as the requested_link, if it is long. Parameters from this should not be used directly (ie: server can default utm_[campaign|medium|source] to a value when requested_link lack them, server determine the best fallback_link when requested_link specifies &gt;1 fallback links).
  &quot;utmCampaign&quot;: &quot;A String&quot;, # Scion campaign value to be propagated by iSDK to Scion at post-install.
  &quot;utmContent&quot;: &quot;A String&quot;, # Scion content value to be propagated by iSDK to Scion at app-reopen.
  &quot;utmMedium&quot;: &quot;A String&quot;, # Scion medium value to be propagated by iSDK to Scion at post-install.
  &quot;utmSource&quot;: &quot;A String&quot;, # Scion source value to be propagated by iSDK to Scion at post-install.
  &quot;utmTerm&quot;: &quot;A String&quot;, # Scion term value to be propagated by iSDK to Scion at app-reopen.
}</pre>
</div>

<div class="method">
    <code class="details" id="reopenAttribution">reopenAttribution(body=None, x__xgafv=None)</code>
  <pre>Get iOS reopen attribution for app universal link open deeplinking.

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

{ # Request for iSDK to get reopen attribution for app universal link open deeplinking. This endpoint is meant for only iOS requests.
  &quot;bundleId&quot;: &quot;A String&quot;, # APP bundle ID.
  &quot;requestedLink&quot;: &quot;A String&quot;, # FDL link to be verified from an app universal link open. The FDL link can be one of: 1) short FDL. e.g. .page.link/, or 2) long FDL. e.g. .page.link/?{query params}, or 3) Invite FDL. e.g. .page.link/i/
  &quot;sdkVersion&quot;: &quot;A String&quot;, # Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
}

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

Returns:
  An object of the form:

    { # Response for iSDK to get reopen attribution for app universal link open deeplinking. This endpoint is meant for only iOS requests.
  &quot;deepLink&quot;: &quot;A String&quot;, # The deep-link attributed the app universal link open. For both regular FDL links and invite FDL links.
  &quot;invitationId&quot;: &quot;A String&quot;, # Optional invitation ID, for only invite typed requested FDL links.
  &quot;iosMinAppVersion&quot;: &quot;A String&quot;, # FDL input value of the &quot;&amp;imv=&quot; parameter, minimum app version to be returned to Google Firebase SDK running on iOS-9.
  &quot;resolvedLink&quot;: &quot;A String&quot;, # The entire FDL, expanded from a short link. It is the same as the requested_link, if it is long.
  &quot;utmCampaign&quot;: &quot;A String&quot;, # Scion campaign value to be propagated by iSDK to Scion at app-reopen.
  &quot;utmContent&quot;: &quot;A String&quot;, # Scion content value to be propagated by iSDK to Scion at app-reopen.
  &quot;utmMedium&quot;: &quot;A String&quot;, # Scion medium value to be propagated by iSDK to Scion at app-reopen.
  &quot;utmSource&quot;: &quot;A String&quot;, # Scion source value to be propagated by iSDK to Scion at app-reopen.
  &quot;utmTerm&quot;: &quot;A String&quot;, # Scion term value to be propagated by iSDK to Scion at app-reopen.
}</pre>
</div>

</body></html>