<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="#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</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="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;platform&quot;: &quot;A String&quot;, # Requested platform.
        &quot;count&quot;: &quot;A String&quot;, # The number of times this event occurred.
        &quot;event&quot;: &quot;A String&quot;, # Link event.
      },
    ],
  }</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;bundleId&quot;: &quot;A String&quot;, # APP bundle ID.
    &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;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;iosVersion&quot;: &quot;A String&quot;, # iOS version, ie: 9.3.5.
        # Consider adding &quot;build&quot;.
    &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.
    &quot;device&quot;: { # Signals associated with the device making the request. # Device information.
      &quot;timezone&quot;: &quot;A String&quot;, # Device timezone setting.
      &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;languageCodeFromWebview&quot;: &quot;A String&quot;, # Device language code setting obtained by executing JavaScript code in
          # WebView.
      &quot;languageCode&quot;: &quot;A String&quot;, # Device language code setting.
      &quot;deviceModelName&quot;: &quot;A String&quot;, # Device model name.
      &quot;screenResolutionWidth&quot;: &quot;A String&quot;, # Device display resolution width.
      &quot;screenResolutionHeight&quot;: &quot;A String&quot;, # Device display resolution height.
    },
    &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.
  }

  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;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;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;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;utmMedium&quot;: &quot;A String&quot;, # Scion medium value to be propagated by iSDK to Scion at post-install.
    &quot;utmCampaign&quot;: &quot;A String&quot;, # Scion campaign 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.
    &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;utmSource&quot;: &quot;A String&quot;, # Scion source value to be propagated by iSDK to Scion at post-install.
    &quot;invitationId&quot;: &quot;A String&quot;, # Invitation ID attributed post-install via one of several techniques
        # (fingerprint, copy unique).
    &quot;deepLink&quot;: &quot;A String&quot;, # The deep-link attributed post-install via one of several techniques
        # (fingerprint, copy unique).
    &quot;utmContent&quot;: &quot;A String&quot;, # Scion content value to be propagated by iSDK to Scion at app-reopen.
    &quot;attributionConfidence&quot;: &quot;A String&quot;, # The confidence of the returned attribution.
    &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;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;requestedLink&quot;: &quot;A String&quot;, # Entire FDL (short or long) attributed post-install via one of several
        # techniques (fingerprint, copy unique).
  }</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;sdkVersion&quot;: &quot;A String&quot;, # Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
    &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. &lt;app_code&gt;.page.link/&lt;ddl_id&gt;, or
        # 2) long FDL.
        # e.g. &lt;app_code&gt;.page.link/?{query params}, or
        # 3) Invite FDL.
        # e.g. &lt;app_code&gt;.page.link/i/&lt;invite_id_or_alias&gt;
  }

  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;utmCampaign&quot;: &quot;A String&quot;, # Scion campaign value to be propagated by iSDK to Scion at app-reopen.
    &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;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;utmMedium&quot;: &quot;A String&quot;, # Scion medium 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.
    &quot;utmContent&quot;: &quot;A String&quot;, # Scion content value to be propagated by iSDK to Scion at app-reopen.
    &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;utmSource&quot;: &quot;A String&quot;, # Scion source value to be propagated by iSDK to Scion at app-reopen.
    &quot;invitationId&quot;: &quot;A String&quot;, # Optional invitation ID, for only invite typed requested FDL links.
  }</pre>
</div>

</body></html>