<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;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;suffix&quot;: { # Short Dynamic Link suffix. # Short Dynamic Link suffix. Optional.
      &quot;option&quot;: &quot;A String&quot;, # Suffix option.
      &quot;customSuffix&quot;: &quot;A String&quot;, # Only applies to Option.CUSTOM.
    },
    &quot;sdkVersion&quot;: &quot;A String&quot;, # Google SDK version. Version takes the form &quot;$major.$minor.$patch&quot;
    &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;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;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;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
        &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;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;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
        &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;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
        &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;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;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;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;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;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;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
          &quot;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes
              # Connect.
          &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;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;utmCampaign&quot;: &quot;A String&quot;, # Campaign name; used for keyword analysis to identify a specific product
              # promotion or strategic campaign.
          &quot;utmSource&quot;: &quot;A String&quot;, # Campaign source; used to identify a search engine, newsletter, or other
              # source.
          &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;utmTerm&quot;: &quot;A String&quot;, # Campaign term; used with paid search to supply the keywords for ads.
          &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;utmMedium&quot;: &quot;A String&quot;, # Campaign medium; used to identify a medium such as email or cost-per-click.
        },
      },
      &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;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
        &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;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;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;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;flaggedAttribute&quot;: [ # Attributes that have been flagged about this short url.
        &quot;A String&quot;,
      ],
      &quot;creationTime&quot;: &quot;A String&quot;, # Creation timestamp of the short link.
      &quot;link&quot;: &quot;A String&quot;, # Short durable link url, for example, &quot;https://sample.app.goo.gl/xyz123&quot;.
          #
          # Required.
      &quot;info&quot;: { # Information about a Dynamic Link. # Full Dyamic Link info
        &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;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;androidPackageName&quot;: &quot;A String&quot;, # Android package name of the app.
          &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;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;iosFallbackLink&quot;: &quot;A String&quot;, # Link to open on iOS if the app is not installed.
          &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;iosMinimumVersion&quot;: &quot;A String&quot;, # iOS minimum version.
          &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;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;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;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;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;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;itunesConnectAnalytics&quot;: { # Parameters for iTunes Connect App Analytics. # iTunes Connect App Analytics.
            &quot;pt&quot;: &quot;A String&quot;, # Provider token that enables analytics for Dynamic Links from within iTunes
                # Connect.
            &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;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;utmCampaign&quot;: &quot;A String&quot;, # Campaign name; used for keyword analysis to identify a specific product
                # promotion or strategic campaign.
            &quot;utmSource&quot;: &quot;A String&quot;, # Campaign source; used to identify a search engine, newsletter, or other
                # source.
            &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;utmTerm&quot;: &quot;A String&quot;, # Campaign term; used with paid search to supply the keywords for ads.
            &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;utmMedium&quot;: &quot;A String&quot;, # Campaign medium; used to identify a medium such as email or cost-per-click.
          },
        },
        &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;socialTitle&quot;: &quot;A String&quot;, # Title to be displayed. Optional.
          &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;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.
      },
    ],
  }</pre>
</div>

</body></html>