<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, sdkVersion=None, durationDays=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, 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, 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, sdkVersion=None, durationDays=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)
  sdkVersion: string, Google SDK version. Version takes the form "$major.$minor.$patch"
  durationDays: string, The span of time requested in days.
  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.
    "linkEventStats": [ # Dynamic Link event stats.
      { # Dynamic Link event stat.
        "count": "A String", # The number of times this event occurred.
        "platform": "A String", # Requested platform.
        "event": "A String", # Link event.
      },
    ],
  }</pre>
</div>

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

Args:
  body: object, The request body. (required)
    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.
    "visualStyle": "A String", # Strong match page information. Disambiguates between default UI and
        # custom page to present when strong match succeeds/fails to find cookie.
    "sdkVersion": "A String", # Google SDK version. Version takes the form "$major.$minor.$patch"
    "appInstallationTime": "A String", # App installation epoch time (https://en.wikipedia.org/wiki/Unix_time).
        # This is a client signal for a more accurate weak match.
    "uniqueMatchLinkToCheck": "A String", # 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.
    "device": { # Signals associated with the device making the request. # Device information.
      "languageCode": "A String", # Device language code setting.
      "languageCodeRaw": "A String", # 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.
      "deviceModelName": "A String", # Device model name.
      "languageCodeFromWebview": "A String", # Device language code setting obtained by executing JavaScript code in
          # WebView.
      "screenResolutionHeight": "A String", # Device display resolution height.
      "timezone": "A String", # Device timezone setting.
      "screenResolutionWidth": "A String", # Device display resolution width.
    },
    "retrievalMethod": "A String", # App post install attribution retrieval information. Disambiguates
        # mechanism (iSDK or developer invoked) to retrieve payload from
        # clicked link.
    "iosVersion": "A String", # iOS version, ie: 9.3.5.
        # Consider adding "build".
    "bundleId": "A String", # APP bundle ID.
  }

  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.
    "utmMedium": "A String", # Scion medium value to be propagated by iSDK to Scion at post-install.
    "utmSource": "A String", # Scion source value to be propagated by iSDK to Scion at post-install.
    "matchMessage": "A String", # Describes why match failed, ie: "discarded due to low confidence".
        # This message will be publicly visible.
    "attributionConfidence": "A String", # The confidence of the returned attribution.
    "externalBrowserDestinationLink": "A String", # 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
    "isStrongMatchExecutable": 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.
    "requestIpVersion": "A String", # Which IP version the request was made from.
    "utmTerm": "A String", # Scion term value to be propagated by iSDK to Scion at app-reopen.
    "utmContent": "A String", # Scion content value to be propagated by iSDK to Scion at app-reopen.
    "invitationId": "A String", # Invitation ID attributed post-install via one of several techniques
        # (fingerprint, copy unique).
    "appMinimumVersion": "A String", # The minimum version for app, specified by dev through ?imv= parameter.
        # Return to iSDK to allow app to evaluate if current version meets this.
    "resolvedLink": "A String", # 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 >1 fallback links).
    "requestedLink": "A String", # Entire FDL (short or long) attributed post-install via one of several
        # techniques (fingerprint, copy unique).
    "fallbackLink": "A String", # 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).
    "utmCampaign": "A String", # Scion campaign value to be propagated by iSDK to Scion at post-install.
    "deepLink": "A String", # The deep-link attributed post-install via one of several techniques
        # (fingerprint, copy unique).
  }</pre>
</div>

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

Args:
  body: object, The request body. (required)
    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.
    "sdkVersion": "A String", # Google SDK version. Version takes the form "$major.$minor.$patch"
    "requestedLink": "A String", # FDL link to be verified from an app universal link open.
        # The FDL link can be one of:
        # 1) short FDL.
        # e.g. <app_code>.page.link/<ddl_id>, or
        # 2) long FDL.
        # e.g. <app_code>.page.link/?{query params}, or
        # 3) Invite FDL.
        # e.g. <app_code>.page.link/i/<invite_id_or_alias>
    "bundleId": "A String", # APP bundle ID.
  }

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

</body></html>