<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="#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</p>
<h3>Method Details</h3>
<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;socialMetaTagInfo&quot;: { # Parameters for social meta tag params. # Parameters for social meta tag params.
          # Used to set meta tag data for link previews on social sites.
          # Used to set meta tag data for link previews on social sites.
        &quot;socialImageLink&quot;: &quot;A String&quot;, # An image url string. Optional.
        &quot;socialDescription&quot;: &quot;A String&quot;, # A short description of the link. Optional.
        &quot;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
      },
      &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. # Google Play Campaign Measurements.
            # [Learn
            # more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params)
          &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;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;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;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
          &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;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes
              # Connect.
          &quot;mt&quot;: &quot;A String&quot;, # iTune media types, including music, podcasts, audiobooks and so on.
          &quot;at&quot;: &quot;A String&quot;, # Affiliate token used to create affiliate-coded links.
        },
      },
      &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;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;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;iosIpadFallbackLink&quot;: &quot;A String&quot;, # If specified, this overrides the ios_fallback_link value on iPads.
        &quot;iosIpadBundleId&quot;: &quot;A String&quot;, # iPad 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;iosBundleId&quot;: &quot;A String&quot;, # iOS bundle ID of the app.
        &quot;iosAppStoreId&quot;: &quot;A String&quot;, # iOS App Store ID.
        &quot;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
        &quot;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
      },
      &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;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;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;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
        &quot;androidLink&quot;: &quot;A String&quot;, # If specified, this overrides the ‘link’ parameter on Android.
        &quot;androidFallbackLink&quot;: &quot;A String&quot;, # Link to open on Android if the app is not installed.
        &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;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.
    },
    &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;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).
  }

  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;warning&quot;: [ # Information about potential warnings on link creation.
      { # Dynamic Links warning messages.
        &quot;warningMessage&quot;: &quot;A String&quot;, # The warning message to help developers improve their requests.
        &quot;warningDocumentLink&quot;: &quot;A String&quot;, # The document describing the warning, and helps resolve.
        &quot;warningCode&quot;: &quot;A String&quot;, # The warning code.
      },
    ],
    &quot;previewLink&quot;: &quot;A String&quot;, # Preview link to show the link flow chart. (debug info.)
    &quot;managedShortLink&quot;: { # Managed Short Link. # Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz
      &quot;link&quot;: &quot;A String&quot;, # Short durable link url, for example, &quot;https://sample.app.goo.gl/xyz123&quot;.
          #
          # Required.
      &quot;creationTime&quot;: &quot;A String&quot;, # Creation timestamp of the short link.
      &quot;visibility&quot;: &quot;A String&quot;, # Visibility status of link.
      &quot;flaggedAttribute&quot;: [ # Attributes that have been flagged about this short url.
        &quot;A String&quot;,
      ],
      &quot;linkName&quot;: &quot;A String&quot;, # Link name defined by the creator.
          #
          # Required.
      &quot;info&quot;: { # Information about a Dynamic Link. # Full Dyamic Link info
        &quot;socialMetaTagInfo&quot;: { # Parameters for social meta tag params. # Parameters for social meta tag params.
            # Used to set meta tag data for link previews on social sites.
            # Used to set meta tag data for link previews on social sites.
          &quot;socialImageLink&quot;: &quot;A String&quot;, # An image url string. Optional.
          &quot;socialDescription&quot;: &quot;A String&quot;, # A short description of the link. Optional.
          &quot;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
        },
        &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. # Google Play Campaign Measurements.
              # [Learn
              # more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params)
            &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;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;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;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
            &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;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes
                # Connect.
            &quot;mt&quot;: &quot;A String&quot;, # iTune media types, including music, podcasts, audiobooks and so on.
            &quot;at&quot;: &quot;A String&quot;, # Affiliate token used to create affiliate-coded links.
          },
        },
        &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;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;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;iosIpadFallbackLink&quot;: &quot;A String&quot;, # If specified, this overrides the ios_fallback_link value on iPads.
          &quot;iosIpadBundleId&quot;: &quot;A String&quot;, # iPad 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;iosBundleId&quot;: &quot;A String&quot;, # iOS bundle ID of the app.
          &quot;iosAppStoreId&quot;: &quot;A String&quot;, # iOS App Store ID.
          &quot;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
          &quot;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
        },
        &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;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;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;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
          &quot;androidLink&quot;: &quot;A String&quot;, # If specified, this overrides the ‘link’ parameter on Android.
          &quot;androidFallbackLink&quot;: &quot;A String&quot;, # Link to open on Android if the app is not installed.
          &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.
        },
      },
    },
  }</pre>
</div>

</body></html>