<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.managedShortLinks.html">managedShortLinks</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="#create">create(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a managed short Dynamic Link given either a valid long Dynamic Link or details such as Dynamic Link domain, Android and iOS app information. The created short Dynamic Link will not expire. This differs from CreateShortDynamicLink in the following ways: - The request will also contain a name for the link (non unique name for the front end). - The response must be authenticated with an auth token (generated with the admin service account). - The link will appear in the FDL list of links in the console front end. The Dynamic Link domain in the request must be owned by requester's Firebase project.</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="create">create(body=None, x__xgafv=None)</code>
  <pre>Creates a managed short Dynamic Link given either a valid long Dynamic Link or details such as Dynamic Link domain, Android and iOS app information. The created short Dynamic Link will not expire. This differs from CreateShortDynamicLink in the following ways: - The request will also contain a name for the link (non unique name for the front end). - The response must be authenticated with an auth token (generated with the admin service account). - The link will appear in the FDL list of links in the console front end. The Dynamic Link domain in the request must be owned by requester&#x27;s Firebase project.

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

{ # Request to create a managed Short Dynamic Link.
  &quot;dynamicLinkInfo&quot;: { # Information about a Dynamic Link. # Information about the Dynamic Link to be shortened. [Learn more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
    &quot;analyticsInfo&quot;: { # Tracking parameters supported by Dynamic Link. # Parameters used for tracking. See all tracking parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
      &quot;googlePlayAnalytics&quot;: { # Parameters for Google Play Campaign Measurements. [Learn more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params) # Google Play Campaign Measurements.
        &quot;gclid&quot;: &quot;A String&quot;, # [AdWords autotagging parameter](https://support.google.com/analytics/answer/1033981?hl=en); used to measure Google AdWords ads. This value is generated dynamically and should never be modified.
        &quot;utmCampaign&quot;: &quot;A String&quot;, # Campaign name; used for keyword analysis to identify a specific product promotion or strategic campaign.
        &quot;utmContent&quot;: &quot;A String&quot;, # Campaign content; used for A/B testing and content-targeted ads to differentiate ads or links that point to the same URL.
        &quot;utmMedium&quot;: &quot;A String&quot;, # Campaign medium; used to identify a medium such as email or cost-per-click.
        &quot;utmSource&quot;: &quot;A String&quot;, # Campaign source; used to identify a search engine, newsletter, or other source.
        &quot;utmTerm&quot;: &quot;A String&quot;, # Campaign term; used with paid search to supply the keywords for ads.
      },
      &quot;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
        &quot;at&quot;: &quot;A String&quot;, # Affiliate token used to create affiliate-coded links.
        &quot;ct&quot;: &quot;A String&quot;, # Campaign text that developers can optionally add to any link in order to track sales from a specific marketing campaign.
        &quot;mt&quot;: &quot;A String&quot;, # iTune media types, including music, podcasts, audiobooks and so on.
        &quot;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes Connect.
      },
    },
    &quot;androidInfo&quot;: { # Android related attributes to the Dynamic Link. # Android related information. See Android related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
      &quot;androidFallbackLink&quot;: &quot;A String&quot;, # Link to open on Android if the app is not installed.
      &quot;androidLink&quot;: &quot;A String&quot;, # If specified, this overrides the ‘link’ parameter on Android.
      &quot;androidMinPackageVersionCode&quot;: &quot;A String&quot;, # Minimum version code for the Android app. If the installed app’s version code is lower, then the user is taken to the Play Store.
      &quot;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
    },
    &quot;desktopInfo&quot;: { # Desktop related attributes to the Dynamic Link. # Desktop related information. See desktop related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
      &quot;desktopFallbackLink&quot;: &quot;A String&quot;, # Link to open on desktop.
    },
    &quot;domainUriPrefix&quot;: &quot;A String&quot;, # E.g. https://maps.app.goo.gl, https://maps.page.link, https://g.co/maps More examples can be found in description of getNormalizedUriPrefix in j/c/g/firebase/dynamiclinks/uri/DdlDomain.java Will fallback to dynamic_link_domain is this field is missing
    &quot;dynamicLinkDomain&quot;: &quot;A String&quot;, # Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl [Learn more](https://firebase.google.com/docs/dynamic-links/android/receive) on how to set up Dynamic Link domain associated with your Firebase project. Required if missing domain_uri_prefix.
    &quot;iosInfo&quot;: { # iOS related attributes to the Dynamic Link.. # iOS related information. See iOS related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
      &quot;iosAppStoreId&quot;: &quot;A String&quot;, # iOS App Store ID.
      &quot;iosBundleId&quot;: &quot;A String&quot;, # iOS bundle ID of the app.
      &quot;iosCustomScheme&quot;: &quot;A String&quot;, # Custom (destination) scheme to use for iOS. By default, we’ll use the bundle ID as the custom scheme. Developer can override this behavior using this param.
      &quot;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
      &quot;iosIpadBundleId&quot;: &quot;A String&quot;, # iPad bundle ID of the app.
      &quot;iosIpadFallbackLink&quot;: &quot;A String&quot;, # If specified, this overrides the ios_fallback_link value on iPads.
      &quot;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
    },
    &quot;link&quot;: &quot;A String&quot;, # The link your app will open, You can specify any URL your app can handle. This link must be a well-formatted URL, be properly URL-encoded, and use the HTTP or HTTPS scheme. See &#x27;link&#x27; parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually). Required.
    &quot;navigationInfo&quot;: { # Information of navigation behavior. # Information of navigation behavior of a Firebase Dynamic Links.
      &quot;enableForcedRedirect&quot;: True or False, # If this option is on, FDL click will be forced to redirect rather than show an interstitial page.
    },
    &quot;socialMetaTagInfo&quot;: { # Parameters for social meta tag params. Used to set meta tag data for link previews on social sites. # Parameters for social meta tag params. Used to set meta tag data for link previews on social sites.
      &quot;socialDescription&quot;: &quot;A String&quot;, # A short description of the link. Optional.
      &quot;socialImageLink&quot;: &quot;A String&quot;, # An image url string. Optional.
      &quot;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
    },
  },
  &quot;longDynamicLink&quot;: &quot;A String&quot;, # Full long Dynamic Link URL with desired query parameters specified. For example, &quot;https://sample.app.goo.gl/?link=http://www.google.com&amp;apn=com.sample&quot;, [Learn more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
  &quot;name&quot;: &quot;A String&quot;, # Link name to associate with the link. It&#x27;s used for marketer to identify manually-created links in the Firebase console (https://console.firebase.google.com/). Links must be named to be tracked.
  &quot;sdkVersion&quot;: &quot;A String&quot;, # Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
  &quot;suffix&quot;: { # Short Dynamic Link suffix. # Short Dynamic Link suffix. Optional.
    &quot;customSuffix&quot;: &quot;A String&quot;, # Only applies to Option.CUSTOM.
    &quot;option&quot;: &quot;A String&quot;, # Suffix option.
  },
}

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

Returns:
  An object of the form:

    { # Response to create a short Dynamic Link.
  &quot;managedShortLink&quot;: { # Managed Short Link. # Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz
    &quot;creationTime&quot;: &quot;A String&quot;, # Creation timestamp of the short link.
    &quot;flaggedAttribute&quot;: [ # Attributes that have been flagged about this short url.
      &quot;A String&quot;,
    ],
    &quot;info&quot;: { # Information about a Dynamic Link. # Full Dyamic Link info
      &quot;analyticsInfo&quot;: { # Tracking parameters supported by Dynamic Link. # Parameters used for tracking. See all tracking parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
        &quot;googlePlayAnalytics&quot;: { # Parameters for Google Play Campaign Measurements. [Learn more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params) # Google Play Campaign Measurements.
          &quot;gclid&quot;: &quot;A String&quot;, # [AdWords autotagging parameter](https://support.google.com/analytics/answer/1033981?hl=en); used to measure Google AdWords ads. This value is generated dynamically and should never be modified.
          &quot;utmCampaign&quot;: &quot;A String&quot;, # Campaign name; used for keyword analysis to identify a specific product promotion or strategic campaign.
          &quot;utmContent&quot;: &quot;A String&quot;, # Campaign content; used for A/B testing and content-targeted ads to differentiate ads or links that point to the same URL.
          &quot;utmMedium&quot;: &quot;A String&quot;, # Campaign medium; used to identify a medium such as email or cost-per-click.
          &quot;utmSource&quot;: &quot;A String&quot;, # Campaign source; used to identify a search engine, newsletter, or other source.
          &quot;utmTerm&quot;: &quot;A String&quot;, # Campaign term; used with paid search to supply the keywords for ads.
        },
        &quot;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
          &quot;at&quot;: &quot;A String&quot;, # Affiliate token used to create affiliate-coded links.
          &quot;ct&quot;: &quot;A String&quot;, # Campaign text that developers can optionally add to any link in order to track sales from a specific marketing campaign.
          &quot;mt&quot;: &quot;A String&quot;, # iTune media types, including music, podcasts, audiobooks and so on.
          &quot;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes Connect.
        },
      },
      &quot;androidInfo&quot;: { # Android related attributes to the Dynamic Link. # Android related information. See Android related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
        &quot;androidFallbackLink&quot;: &quot;A String&quot;, # Link to open on Android if the app is not installed.
        &quot;androidLink&quot;: &quot;A String&quot;, # If specified, this overrides the ‘link’ parameter on Android.
        &quot;androidMinPackageVersionCode&quot;: &quot;A String&quot;, # Minimum version code for the Android app. If the installed app’s version code is lower, then the user is taken to the Play Store.
        &quot;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
      },
      &quot;desktopInfo&quot;: { # Desktop related attributes to the Dynamic Link. # Desktop related information. See desktop related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
        &quot;desktopFallbackLink&quot;: &quot;A String&quot;, # Link to open on desktop.
      },
      &quot;domainUriPrefix&quot;: &quot;A String&quot;, # E.g. https://maps.app.goo.gl, https://maps.page.link, https://g.co/maps More examples can be found in description of getNormalizedUriPrefix in j/c/g/firebase/dynamiclinks/uri/DdlDomain.java Will fallback to dynamic_link_domain is this field is missing
      &quot;dynamicLinkDomain&quot;: &quot;A String&quot;, # Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl [Learn more](https://firebase.google.com/docs/dynamic-links/android/receive) on how to set up Dynamic Link domain associated with your Firebase project. Required if missing domain_uri_prefix.
      &quot;iosInfo&quot;: { # iOS related attributes to the Dynamic Link.. # iOS related information. See iOS related parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
        &quot;iosAppStoreId&quot;: &quot;A String&quot;, # iOS App Store ID.
        &quot;iosBundleId&quot;: &quot;A String&quot;, # iOS bundle ID of the app.
        &quot;iosCustomScheme&quot;: &quot;A String&quot;, # Custom (destination) scheme to use for iOS. By default, we’ll use the bundle ID as the custom scheme. Developer can override this behavior using this param.
        &quot;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
        &quot;iosIpadBundleId&quot;: &quot;A String&quot;, # iPad bundle ID of the app.
        &quot;iosIpadFallbackLink&quot;: &quot;A String&quot;, # If specified, this overrides the ios_fallback_link value on iPads.
        &quot;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
      },
      &quot;link&quot;: &quot;A String&quot;, # The link your app will open, You can specify any URL your app can handle. This link must be a well-formatted URL, be properly URL-encoded, and use the HTTP or HTTPS scheme. See &#x27;link&#x27; parameters in the [documentation](https://firebase.google.com/docs/dynamic-links/create-manually). Required.
      &quot;navigationInfo&quot;: { # Information of navigation behavior. # Information of navigation behavior of a Firebase Dynamic Links.
        &quot;enableForcedRedirect&quot;: True or False, # If this option is on, FDL click will be forced to redirect rather than show an interstitial page.
      },
      &quot;socialMetaTagInfo&quot;: { # Parameters for social meta tag params. Used to set meta tag data for link previews on social sites. # Parameters for social meta tag params. Used to set meta tag data for link previews on social sites.
        &quot;socialDescription&quot;: &quot;A String&quot;, # A short description of the link. Optional.
        &quot;socialImageLink&quot;: &quot;A String&quot;, # An image url string. Optional.
        &quot;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
      },
    },
    &quot;link&quot;: &quot;A String&quot;, # Short durable link url, for example, &quot;https://sample.app.goo.gl/xyz123&quot;. Required.
    &quot;linkName&quot;: &quot;A String&quot;, # Link name defined by the creator. Required.
    &quot;visibility&quot;: &quot;A String&quot;, # Visibility status of link.
  },
  &quot;previewLink&quot;: &quot;A String&quot;, # Preview link to show the link flow chart. (debug info.)
  &quot;warning&quot;: [ # Information about potential warnings on link creation.
    { # Dynamic Links warning messages.
      &quot;warningCode&quot;: &quot;A String&quot;, # The warning code.
      &quot;warningDocumentLink&quot;: &quot;A String&quot;, # The document describing the warning, and helps resolve.
      &quot;warningMessage&quot;: &quot;A String&quot;, # The warning message to help developers improve their requests.
    },
  ],
}</pre>
</div>

</body></html>