blob: d1c4b458c260b2fcd65b01cdc3d5ec0b03b907ce [file] [log] [blame]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: directives_ordering
// ignore_for_file: file_names
// ignore_for_file: library_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_expression_function_bodies
// ignore_for_file: prefer_final_locals
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_cast
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_parenthesis
// ignore_for_file: unnecessary_string_interpolations
library googleapis.firebasedynamiclinks.v1;
import 'dart:core' as core;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
const userAgent = 'dart-api-client firebasedynamiclinks/v1';
/// Programmatically creates and manages Firebase Dynamic Links.
class FirebasedynamiclinksApi {
/// View and administer all your Firebase data and settings
static const firebaseScope = 'https://www.googleapis.com/auth/firebase';
final commons.ApiRequester _requester;
ManagedShortLinksResourceApi get managedShortLinks =>
ManagedShortLinksResourceApi(_requester);
ShortLinksResourceApi get shortLinks => ShortLinksResourceApi(_requester);
V1ResourceApi get v1 => V1ResourceApi(_requester);
FirebasedynamiclinksApi(http.Client client,
{core.String rootUrl = 'https://firebasedynamiclinks.googleapis.com/',
core.String servicePath = ''})
: _requester =
commons.ApiRequester(client, rootUrl, servicePath, userAgent);
}
class ManagedShortLinksResourceApi {
final commons.ApiRequester _requester;
ManagedShortLinksResourceApi(commons.ApiRequester client)
: _requester = client;
/// 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [CreateManagedShortLinkResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<CreateManagedShortLinkResponse> create(
CreateManagedShortLinkRequest request, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/managedShortLinks:create';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response
.then((data) => CreateManagedShortLinkResponse.fromJson(data));
}
}
class ShortLinksResourceApi {
final commons.ApiRequester _requester;
ShortLinksResourceApi(commons.ApiRequester client) : _requester = client;
/// Creates a 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. Repeated calls with the same
/// long Dynamic Link or Dynamic Link information will produce the same short
/// Dynamic Link. The Dynamic Link domain in the request must be owned by
/// requester's Firebase project.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [CreateShortDynamicLinkResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<CreateShortDynamicLinkResponse> create(
CreateShortDynamicLinkRequest request, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/shortLinks';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response
.then((data) => CreateShortDynamicLinkResponse.fromJson(data));
}
}
class V1ResourceApi {
final commons.ApiRequester _requester;
V1ResourceApi(commons.ApiRequester client) : _requester = client;
/// 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.
///
/// Request parameters:
///
/// [dynamicLink] - Dynamic Link URL. e.g. https://abcd.app.goo.gl/wxyz
///
/// [durationDays] - The span of time requested in days.
///
/// [sdkVersion] - Google SDK version. Version takes the form
/// "$major.$minor.$patch"
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [DynamicLinkStats].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<DynamicLinkStats> getLinkStats(
core.String dynamicLink, {
core.String durationDays,
core.String sdkVersion,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (dynamicLink == null) {
throw core.ArgumentError('Parameter dynamicLink is required.');
}
if (durationDays != null) {
_queryParams['durationDays'] = [durationDays];
}
if (sdkVersion != null) {
_queryParams['sdkVersion'] = [sdkVersion];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariable('$dynamicLink') + '/linkStats';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => DynamicLinkStats.fromJson(data));
}
/// Get iOS strong/weak-match info for post-install attribution.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GetIosPostInstallAttributionResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GetIosPostInstallAttributionResponse> installAttribution(
GetIosPostInstallAttributionRequest request, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/installAttribution';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response
.then((data) => GetIosPostInstallAttributionResponse.fromJson(data));
}
/// Get iOS reopen attribution for app universal link open deeplinking.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GetIosReopenAttributionResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GetIosReopenAttributionResponse> reopenAttribution(
GetIosReopenAttributionRequest request, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/reopenAttribution';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response
.then((data) => GetIosReopenAttributionResponse.fromJson(data));
}
}
/// Tracking parameters supported by Dynamic Link.
class AnalyticsInfo {
/// Google Play Campaign Measurements.
GooglePlayAnalytics googlePlayAnalytics;
/// iTunes Connect App Analytics.
ITunesConnectAnalytics itunesConnectAnalytics;
AnalyticsInfo();
AnalyticsInfo.fromJson(core.Map _json) {
if (_json.containsKey('googlePlayAnalytics')) {
googlePlayAnalytics =
GooglePlayAnalytics.fromJson(_json['googlePlayAnalytics']);
}
if (_json.containsKey('itunesConnectAnalytics')) {
itunesConnectAnalytics =
ITunesConnectAnalytics.fromJson(_json['itunesConnectAnalytics']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (googlePlayAnalytics != null) {
_json['googlePlayAnalytics'] = googlePlayAnalytics.toJson();
}
if (itunesConnectAnalytics != null) {
_json['itunesConnectAnalytics'] = itunesConnectAnalytics.toJson();
}
return _json;
}
}
/// Android related attributes to the Dynamic Link.
class AndroidInfo {
/// Link to open on Android if the app is not installed.
core.String androidFallbackLink;
/// If specified, this overrides the ‘link’ parameter on Android.
core.String androidLink;
/// 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.
core.String androidMinPackageVersionCode;
/// Android package name of the app.
core.String androidPackageName;
AndroidInfo();
AndroidInfo.fromJson(core.Map _json) {
if (_json.containsKey('androidFallbackLink')) {
androidFallbackLink = _json['androidFallbackLink'] as core.String;
}
if (_json.containsKey('androidLink')) {
androidLink = _json['androidLink'] as core.String;
}
if (_json.containsKey('androidMinPackageVersionCode')) {
androidMinPackageVersionCode =
_json['androidMinPackageVersionCode'] as core.String;
}
if (_json.containsKey('androidPackageName')) {
androidPackageName = _json['androidPackageName'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (androidFallbackLink != null) {
_json['androidFallbackLink'] = androidFallbackLink;
}
if (androidLink != null) {
_json['androidLink'] = androidLink;
}
if (androidMinPackageVersionCode != null) {
_json['androidMinPackageVersionCode'] = androidMinPackageVersionCode;
}
if (androidPackageName != null) {
_json['androidPackageName'] = androidPackageName;
}
return _json;
}
}
/// Request to create a managed Short Dynamic Link.
class CreateManagedShortLinkRequest {
/// Information about the Dynamic Link to be shortened. [Learn
/// more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
DynamicLinkInfo dynamicLinkInfo;
/// Full long Dynamic Link URL with desired query parameters specified. For
/// example,
/// "https://sample.app.goo.gl/?link=http://www.google.com&apn=com.sample",
/// [Learn
/// more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
core.String longDynamicLink;
/// Link name to associate with the link. It'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.
core.String name;
/// Google SDK version. Version takes the form "$major.$minor.$patch"
core.String sdkVersion;
/// Short Dynamic Link suffix. Optional.
Suffix suffix;
CreateManagedShortLinkRequest();
CreateManagedShortLinkRequest.fromJson(core.Map _json) {
if (_json.containsKey('dynamicLinkInfo')) {
dynamicLinkInfo = DynamicLinkInfo.fromJson(_json['dynamicLinkInfo']);
}
if (_json.containsKey('longDynamicLink')) {
longDynamicLink = _json['longDynamicLink'] as core.String;
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('sdkVersion')) {
sdkVersion = _json['sdkVersion'] as core.String;
}
if (_json.containsKey('suffix')) {
suffix = Suffix.fromJson(_json['suffix']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (dynamicLinkInfo != null) {
_json['dynamicLinkInfo'] = dynamicLinkInfo.toJson();
}
if (longDynamicLink != null) {
_json['longDynamicLink'] = longDynamicLink;
}
if (name != null) {
_json['name'] = name;
}
if (sdkVersion != null) {
_json['sdkVersion'] = sdkVersion;
}
if (suffix != null) {
_json['suffix'] = suffix.toJson();
}
return _json;
}
}
/// Response to create a short Dynamic Link.
class CreateManagedShortLinkResponse {
/// Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz
ManagedShortLink managedShortLink;
/// Preview link to show the link flow chart. (debug info.)
core.String previewLink;
/// Information about potential warnings on link creation.
core.List<DynamicLinkWarning> warning;
CreateManagedShortLinkResponse();
CreateManagedShortLinkResponse.fromJson(core.Map _json) {
if (_json.containsKey('managedShortLink')) {
managedShortLink = ManagedShortLink.fromJson(_json['managedShortLink']);
}
if (_json.containsKey('previewLink')) {
previewLink = _json['previewLink'] as core.String;
}
if (_json.containsKey('warning')) {
warning = (_json['warning'] as core.List)
.map<DynamicLinkWarning>(
(value) => DynamicLinkWarning.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (managedShortLink != null) {
_json['managedShortLink'] = managedShortLink.toJson();
}
if (previewLink != null) {
_json['previewLink'] = previewLink;
}
if (warning != null) {
_json['warning'] = warning.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Request to create a short Dynamic Link.
class CreateShortDynamicLinkRequest {
/// Information about the Dynamic Link to be shortened. [Learn
/// more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
DynamicLinkInfo dynamicLinkInfo;
/// Full long Dynamic Link URL with desired query parameters specified. For
/// example,
/// "https://sample.app.goo.gl/?link=http://www.google.com&apn=com.sample",
/// [Learn
/// more](https://firebase.google.com/docs/reference/dynamic-links/link-shortener).
core.String longDynamicLink;
/// Google SDK version. Version takes the form "$major.$minor.$patch"
core.String sdkVersion;
/// Short Dynamic Link suffix. Optional.
Suffix suffix;
CreateShortDynamicLinkRequest();
CreateShortDynamicLinkRequest.fromJson(core.Map _json) {
if (_json.containsKey('dynamicLinkInfo')) {
dynamicLinkInfo = DynamicLinkInfo.fromJson(_json['dynamicLinkInfo']);
}
if (_json.containsKey('longDynamicLink')) {
longDynamicLink = _json['longDynamicLink'] as core.String;
}
if (_json.containsKey('sdkVersion')) {
sdkVersion = _json['sdkVersion'] as core.String;
}
if (_json.containsKey('suffix')) {
suffix = Suffix.fromJson(_json['suffix']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (dynamicLinkInfo != null) {
_json['dynamicLinkInfo'] = dynamicLinkInfo.toJson();
}
if (longDynamicLink != null) {
_json['longDynamicLink'] = longDynamicLink;
}
if (sdkVersion != null) {
_json['sdkVersion'] = sdkVersion;
}
if (suffix != null) {
_json['suffix'] = suffix.toJson();
}
return _json;
}
}
/// Response to create a short Dynamic Link.
class CreateShortDynamicLinkResponse {
/// Preview link to show the link flow chart. (debug info.)
core.String previewLink;
/// Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz
core.String shortLink;
/// Information about potential warnings on link creation.
core.List<DynamicLinkWarning> warning;
CreateShortDynamicLinkResponse();
CreateShortDynamicLinkResponse.fromJson(core.Map _json) {
if (_json.containsKey('previewLink')) {
previewLink = _json['previewLink'] as core.String;
}
if (_json.containsKey('shortLink')) {
shortLink = _json['shortLink'] as core.String;
}
if (_json.containsKey('warning')) {
warning = (_json['warning'] as core.List)
.map<DynamicLinkWarning>(
(value) => DynamicLinkWarning.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (previewLink != null) {
_json['previewLink'] = previewLink;
}
if (shortLink != null) {
_json['shortLink'] = shortLink;
}
if (warning != null) {
_json['warning'] = warning.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Desktop related attributes to the Dynamic Link.
class DesktopInfo {
/// Link to open on desktop.
core.String desktopFallbackLink;
DesktopInfo();
DesktopInfo.fromJson(core.Map _json) {
if (_json.containsKey('desktopFallbackLink')) {
desktopFallbackLink = _json['desktopFallbackLink'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (desktopFallbackLink != null) {
_json['desktopFallbackLink'] = desktopFallbackLink;
}
return _json;
}
}
/// Signals associated with the device making the request.
class DeviceInfo {
/// Device model name.
core.String deviceModelName;
/// Device language code setting.
core.String languageCode;
/// Device language code setting obtained by executing JavaScript code in
/// WebView.
core.String languageCodeFromWebview;
/// 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.
core.String languageCodeRaw;
/// Device display resolution height.
core.String screenResolutionHeight;
/// Device display resolution width.
core.String screenResolutionWidth;
/// Device timezone setting.
core.String timezone;
DeviceInfo();
DeviceInfo.fromJson(core.Map _json) {
if (_json.containsKey('deviceModelName')) {
deviceModelName = _json['deviceModelName'] as core.String;
}
if (_json.containsKey('languageCode')) {
languageCode = _json['languageCode'] as core.String;
}
if (_json.containsKey('languageCodeFromWebview')) {
languageCodeFromWebview = _json['languageCodeFromWebview'] as core.String;
}
if (_json.containsKey('languageCodeRaw')) {
languageCodeRaw = _json['languageCodeRaw'] as core.String;
}
if (_json.containsKey('screenResolutionHeight')) {
screenResolutionHeight = _json['screenResolutionHeight'] as core.String;
}
if (_json.containsKey('screenResolutionWidth')) {
screenResolutionWidth = _json['screenResolutionWidth'] as core.String;
}
if (_json.containsKey('timezone')) {
timezone = _json['timezone'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (deviceModelName != null) {
_json['deviceModelName'] = deviceModelName;
}
if (languageCode != null) {
_json['languageCode'] = languageCode;
}
if (languageCodeFromWebview != null) {
_json['languageCodeFromWebview'] = languageCodeFromWebview;
}
if (languageCodeRaw != null) {
_json['languageCodeRaw'] = languageCodeRaw;
}
if (screenResolutionHeight != null) {
_json['screenResolutionHeight'] = screenResolutionHeight;
}
if (screenResolutionWidth != null) {
_json['screenResolutionWidth'] = screenResolutionWidth;
}
if (timezone != null) {
_json['timezone'] = timezone;
}
return _json;
}
}
/// Dynamic Link event stat.
class DynamicLinkEventStat {
/// The number of times this event occurred.
core.String count;
/// Link event.
/// Possible string values are:
/// - "DYNAMIC_LINK_EVENT_UNSPECIFIED" : Unspecified type.
/// - "CLICK" : Indicates that an FDL is clicked by users.
/// - "REDIRECT" : Indicates that an FDL redirects users to fallback link.
/// - "APP_INSTALL" : Indicates that an FDL triggers an app install from Play
/// store, currently it's impossible to get stats from App store.
/// - "APP_FIRST_OPEN" : Indicates that the app is opened for the first time
/// after an install triggered by FDLs
/// - "APP_RE_OPEN" : Indicates that the app is opened via an FDL for
/// non-first time.
core.String event;
/// Requested platform.
/// Possible string values are:
/// - "DYNAMIC_LINK_PLATFORM_UNSPECIFIED" : Unspecified platform.
/// - "ANDROID" : Represents Android platform. All apps and browsers on
/// Android are classfied in this category.
/// - "IOS" : Represents iOS platform. All apps and browsers on iOS are
/// classfied in this category.
/// - "DESKTOP" : Represents desktop.
/// - "OTHER" : Platforms are not categorized as Android/iOS/Destop fall into
/// here.
core.String platform;
DynamicLinkEventStat();
DynamicLinkEventStat.fromJson(core.Map _json) {
if (_json.containsKey('count')) {
count = _json['count'] as core.String;
}
if (_json.containsKey('event')) {
event = _json['event'] as core.String;
}
if (_json.containsKey('platform')) {
platform = _json['platform'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (count != null) {
_json['count'] = count;
}
if (event != null) {
_json['event'] = event;
}
if (platform != null) {
_json['platform'] = platform;
}
return _json;
}
}
/// Information about a Dynamic Link.
class DynamicLinkInfo {
/// Parameters used for tracking. See all tracking parameters in the
/// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
AnalyticsInfo analyticsInfo;
/// Android related information. See Android related parameters in the
/// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
AndroidInfo androidInfo;
/// Desktop related information. See desktop related parameters in the
/// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
DesktopInfo desktopInfo;
/// 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
core.String domainUriPrefix;
/// 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.
core.String dynamicLinkDomain;
/// iOS related information. See iOS related parameters in the
/// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
IosInfo iosInfo;
/// 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 'link' parameters in the
/// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
/// Required.
core.String link;
/// Information of navigation behavior of a Firebase Dynamic Links.
NavigationInfo navigationInfo;
/// Parameters for social meta tag params. Used to set meta tag data for link
/// previews on social sites.
SocialMetaTagInfo socialMetaTagInfo;
DynamicLinkInfo();
DynamicLinkInfo.fromJson(core.Map _json) {
if (_json.containsKey('analyticsInfo')) {
analyticsInfo = AnalyticsInfo.fromJson(_json['analyticsInfo']);
}
if (_json.containsKey('androidInfo')) {
androidInfo = AndroidInfo.fromJson(_json['androidInfo']);
}
if (_json.containsKey('desktopInfo')) {
desktopInfo = DesktopInfo.fromJson(_json['desktopInfo']);
}
if (_json.containsKey('domainUriPrefix')) {
domainUriPrefix = _json['domainUriPrefix'] as core.String;
}
if (_json.containsKey('dynamicLinkDomain')) {
dynamicLinkDomain = _json['dynamicLinkDomain'] as core.String;
}
if (_json.containsKey('iosInfo')) {
iosInfo = IosInfo.fromJson(_json['iosInfo']);
}
if (_json.containsKey('link')) {
link = _json['link'] as core.String;
}
if (_json.containsKey('navigationInfo')) {
navigationInfo = NavigationInfo.fromJson(_json['navigationInfo']);
}
if (_json.containsKey('socialMetaTagInfo')) {
socialMetaTagInfo =
SocialMetaTagInfo.fromJson(_json['socialMetaTagInfo']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (analyticsInfo != null) {
_json['analyticsInfo'] = analyticsInfo.toJson();
}
if (androidInfo != null) {
_json['androidInfo'] = androidInfo.toJson();
}
if (desktopInfo != null) {
_json['desktopInfo'] = desktopInfo.toJson();
}
if (domainUriPrefix != null) {
_json['domainUriPrefix'] = domainUriPrefix;
}
if (dynamicLinkDomain != null) {
_json['dynamicLinkDomain'] = dynamicLinkDomain;
}
if (iosInfo != null) {
_json['iosInfo'] = iosInfo.toJson();
}
if (link != null) {
_json['link'] = link;
}
if (navigationInfo != null) {
_json['navigationInfo'] = navigationInfo.toJson();
}
if (socialMetaTagInfo != null) {
_json['socialMetaTagInfo'] = socialMetaTagInfo.toJson();
}
return _json;
}
}
/// Analytics stats of a Dynamic Link for a given timeframe.
class DynamicLinkStats {
/// Dynamic Link event stats.
core.List<DynamicLinkEventStat> linkEventStats;
DynamicLinkStats();
DynamicLinkStats.fromJson(core.Map _json) {
if (_json.containsKey('linkEventStats')) {
linkEventStats = (_json['linkEventStats'] as core.List)
.map<DynamicLinkEventStat>(
(value) => DynamicLinkEventStat.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (linkEventStats != null) {
_json['linkEventStats'] =
linkEventStats.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Dynamic Links warning messages.
class DynamicLinkWarning {
/// The warning code.
/// Possible string values are:
/// - "CODE_UNSPECIFIED" : Unknown code.
/// - "NOT_IN_PROJECT_ANDROID_PACKAGE_NAME" : The Android package does not
/// match any in developer's DevConsole project.
/// - "NOT_INTEGER_ANDROID_PACKAGE_MIN_VERSION" : The Android minimum version
/// code has to be a valid integer.
/// - "UNNECESSARY_ANDROID_PACKAGE_MIN_VERSION" : Android package min version
/// param is not needed, e.g. when 'apn' is missing.
/// - "NOT_URI_ANDROID_LINK" : Android link is not a valid URI.
/// - "UNNECESSARY_ANDROID_LINK" : Android link param is not needed, e.g. when
/// param 'al' and 'link' have the same value..
/// - "NOT_URI_ANDROID_FALLBACK_LINK" : Android fallback link is not a valid
/// URI.
/// - "BAD_URI_SCHEME_ANDROID_FALLBACK_LINK" : Android fallback link has an
/// invalid (non http/https) URI scheme.
/// - "NOT_IN_PROJECT_IOS_BUNDLE_ID" : The iOS bundle ID does not match any in
/// developer's DevConsole project.
/// - "NOT_IN_PROJECT_IPAD_BUNDLE_ID" : The iPad bundle ID does not match any
/// in developer's DevConsole project.
/// - "UNNECESSARY_IOS_URL_SCHEME" : iOS URL scheme is not needed, e.g. when
/// 'ibi' are 'ipbi' are all missing.
/// - "NOT_NUMERIC_IOS_APP_STORE_ID" : iOS app store ID format is incorrect,
/// e.g. not numeric.
/// - "UNNECESSARY_IOS_APP_STORE_ID" : iOS app store ID is not needed.
/// - "NOT_URI_IOS_FALLBACK_LINK" : iOS fallback link is not a valid URI.
/// - "BAD_URI_SCHEME_IOS_FALLBACK_LINK" : iOS fallback link has an invalid
/// (non http/https) URI scheme.
/// - "NOT_URI_IPAD_FALLBACK_LINK" : iPad fallback link is not a valid URI.
/// - "BAD_URI_SCHEME_IPAD_FALLBACK_LINK" : iPad fallback link has an invalid
/// (non http/https) URI scheme.
/// - "BAD_DEBUG_PARAM" : Debug param format is incorrect.
/// - "BAD_AD_PARAM" : isAd param format is incorrect.
/// - "DEPRECATED_PARAM" : Indicates a certain param is deprecated.
/// - "UNRECOGNIZED_PARAM" : Indicates certain paramater is not recognized.
/// - "TOO_LONG_PARAM" : Indicates certain paramater is too long.
/// - "NOT_URI_SOCIAL_IMAGE_LINK" : Social meta tag image link is not a valid
/// URI.
/// - "BAD_URI_SCHEME_SOCIAL_IMAGE_LINK" : Social meta tag image link has an
/// invalid (non http/https) URI scheme.
/// - "NOT_URI_SOCIAL_URL"
/// - "BAD_URI_SCHEME_SOCIAL_URL"
/// - "LINK_LENGTH_TOO_LONG" : Dynamic Link URL length is too long.
/// - "LINK_WITH_FRAGMENTS" : Dynamic Link URL contains fragments.
/// - "NOT_MATCHING_IOS_BUNDLE_ID_AND_STORE_ID" : The iOS bundle ID does not
/// match with the given iOS store ID.
core.String warningCode;
/// The document describing the warning, and helps resolve.
core.String warningDocumentLink;
/// The warning message to help developers improve their requests.
core.String warningMessage;
DynamicLinkWarning();
DynamicLinkWarning.fromJson(core.Map _json) {
if (_json.containsKey('warningCode')) {
warningCode = _json['warningCode'] as core.String;
}
if (_json.containsKey('warningDocumentLink')) {
warningDocumentLink = _json['warningDocumentLink'] as core.String;
}
if (_json.containsKey('warningMessage')) {
warningMessage = _json['warningMessage'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (warningCode != null) {
_json['warningCode'] = warningCode;
}
if (warningDocumentLink != null) {
_json['warningDocumentLink'] = warningDocumentLink;
}
if (warningMessage != null) {
_json['warningMessage'] = warningMessage;
}
return _json;
}
}
/// 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.
class GetIosPostInstallAttributionRequest {
/// App installation epoch time (https://en.wikipedia.org/wiki/Unix_time).
/// This is a client signal for a more accurate weak match.
core.String appInstallationTime;
/// APP bundle ID.
core.String bundleId;
/// Device information.
DeviceInfo device;
/// iOS version, ie: 9.3.5. Consider adding "build".
core.String iosVersion;
/// App post install attribution retrieval information. Disambiguates
/// mechanism (iSDK or developer invoked) to retrieve payload from clicked
/// link.
/// Possible string values are:
/// - "UNKNOWN_PAYLOAD_RETRIEVAL_METHOD" : Unknown method.
/// - "IMPLICIT_WEAK_MATCH" : iSDK performs a server lookup by device
/// fingerprint in the background when app is first-opened; no API called by
/// developer.
/// - "EXPLICIT_WEAK_MATCH" : iSDK performs a server lookup by device
/// fingerprint upon a dev API call.
/// - "EXPLICIT_STRONG_AFTER_WEAK_MATCH" : iSDK performs a strong match only
/// if weak match is found upon a dev API call.
core.String retrievalMethod;
/// Google SDK version. Version takes the form "$major.$minor.$patch"
core.String sdkVersion;
/// 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.
core.String uniqueMatchLinkToCheck;
/// Strong match page information. Disambiguates between default UI and custom
/// page to present when strong match succeeds/fails to find cookie.
/// Possible string values are:
/// - "UNKNOWN_VISUAL_STYLE" : Unknown style.
/// - "DEFAULT_STYLE" : Default style.
/// - "CUSTOM_STYLE" : Custom style.
core.String visualStyle;
GetIosPostInstallAttributionRequest();
GetIosPostInstallAttributionRequest.fromJson(core.Map _json) {
if (_json.containsKey('appInstallationTime')) {
appInstallationTime = _json['appInstallationTime'] as core.String;
}
if (_json.containsKey('bundleId')) {
bundleId = _json['bundleId'] as core.String;
}
if (_json.containsKey('device')) {
device = DeviceInfo.fromJson(_json['device']);
}
if (_json.containsKey('iosVersion')) {
iosVersion = _json['iosVersion'] as core.String;
}
if (_json.containsKey('retrievalMethod')) {
retrievalMethod = _json['retrievalMethod'] as core.String;
}
if (_json.containsKey('sdkVersion')) {
sdkVersion = _json['sdkVersion'] as core.String;
}
if (_json.containsKey('uniqueMatchLinkToCheck')) {
uniqueMatchLinkToCheck = _json['uniqueMatchLinkToCheck'] as core.String;
}
if (_json.containsKey('visualStyle')) {
visualStyle = _json['visualStyle'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (appInstallationTime != null) {
_json['appInstallationTime'] = appInstallationTime;
}
if (bundleId != null) {
_json['bundleId'] = bundleId;
}
if (device != null) {
_json['device'] = device.toJson();
}
if (iosVersion != null) {
_json['iosVersion'] = iosVersion;
}
if (retrievalMethod != null) {
_json['retrievalMethod'] = retrievalMethod;
}
if (sdkVersion != null) {
_json['sdkVersion'] = sdkVersion;
}
if (uniqueMatchLinkToCheck != null) {
_json['uniqueMatchLinkToCheck'] = uniqueMatchLinkToCheck;
}
if (visualStyle != null) {
_json['visualStyle'] = visualStyle;
}
return _json;
}
}
/// Response for iSDK to execute strong match flow for post-install attribution.
class GetIosPostInstallAttributionResponse {
/// The minimum version for app, specified by dev through ?imv= parameter.
/// Return to iSDK to allow app to evaluate if current version meets this.
core.String appMinimumVersion;
/// The confidence of the returned attribution.
/// Possible string values are:
/// - "UNKNOWN_ATTRIBUTION_CONFIDENCE" : Unset.
/// - "WEAK" : Weak confidence, more than one matching link found or link
/// suspected to be false positive
/// - "DEFAULT" : Default confidence, match based on fingerprint
/// - "UNIQUE" : Unique confidence, match based on "unique match link to
/// check" or other means
core.String attributionConfidence;
/// The deep-link attributed post-install via one of several techniques
/// (fingerprint, copy unique).
core.String deepLink;
/// 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
core.String externalBrowserDestinationLink;
/// 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).
core.String fallbackLink;
/// Invitation ID attributed post-install via one of several techniques
/// (fingerprint, copy unique).
core.String invitationId;
/// 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.
core.bool isStrongMatchExecutable;
/// Describes why match failed, ie: "discarded due to low confidence". This
/// message will be publicly visible.
core.String matchMessage;
/// Which IP version the request was made from.
/// Possible string values are:
/// - "UNKNOWN_IP_VERSION" : Unset.
/// - "IP_V4" : Request made from an IPv4 IP address.
/// - "IP_V6" : Request made from an IPv6 IP address.
core.String requestIpVersion;
/// Entire FDL (short or long) attributed post-install via one of several
/// techniques (fingerprint, copy unique).
core.String requestedLink;
/// 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).
core.String resolvedLink;
/// Scion campaign value to be propagated by iSDK to Scion at post-install.
core.String utmCampaign;
/// Scion content value to be propagated by iSDK to Scion at app-reopen.
core.String utmContent;
/// Scion medium value to be propagated by iSDK to Scion at post-install.
core.String utmMedium;
/// Scion source value to be propagated by iSDK to Scion at post-install.
core.String utmSource;
/// Scion term value to be propagated by iSDK to Scion at app-reopen.
core.String utmTerm;
GetIosPostInstallAttributionResponse();
GetIosPostInstallAttributionResponse.fromJson(core.Map _json) {
if (_json.containsKey('appMinimumVersion')) {
appMinimumVersion = _json['appMinimumVersion'] as core.String;
}
if (_json.containsKey('attributionConfidence')) {
attributionConfidence = _json['attributionConfidence'] as core.String;
}
if (_json.containsKey('deepLink')) {
deepLink = _json['deepLink'] as core.String;
}
if (_json.containsKey('externalBrowserDestinationLink')) {
externalBrowserDestinationLink =
_json['externalBrowserDestinationLink'] as core.String;
}
if (_json.containsKey('fallbackLink')) {
fallbackLink = _json['fallbackLink'] as core.String;
}
if (_json.containsKey('invitationId')) {
invitationId = _json['invitationId'] as core.String;
}
if (_json.containsKey('isStrongMatchExecutable')) {
isStrongMatchExecutable = _json['isStrongMatchExecutable'] as core.bool;
}
if (_json.containsKey('matchMessage')) {
matchMessage = _json['matchMessage'] as core.String;
}
if (_json.containsKey('requestIpVersion')) {
requestIpVersion = _json['requestIpVersion'] as core.String;
}
if (_json.containsKey('requestedLink')) {
requestedLink = _json['requestedLink'] as core.String;
}
if (_json.containsKey('resolvedLink')) {
resolvedLink = _json['resolvedLink'] as core.String;
}
if (_json.containsKey('utmCampaign')) {
utmCampaign = _json['utmCampaign'] as core.String;
}
if (_json.containsKey('utmContent')) {
utmContent = _json['utmContent'] as core.String;
}
if (_json.containsKey('utmMedium')) {
utmMedium = _json['utmMedium'] as core.String;
}
if (_json.containsKey('utmSource')) {
utmSource = _json['utmSource'] as core.String;
}
if (_json.containsKey('utmTerm')) {
utmTerm = _json['utmTerm'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (appMinimumVersion != null) {
_json['appMinimumVersion'] = appMinimumVersion;
}
if (attributionConfidence != null) {
_json['attributionConfidence'] = attributionConfidence;
}
if (deepLink != null) {
_json['deepLink'] = deepLink;
}
if (externalBrowserDestinationLink != null) {
_json['externalBrowserDestinationLink'] = externalBrowserDestinationLink;
}
if (fallbackLink != null) {
_json['fallbackLink'] = fallbackLink;
}
if (invitationId != null) {
_json['invitationId'] = invitationId;
}
if (isStrongMatchExecutable != null) {
_json['isStrongMatchExecutable'] = isStrongMatchExecutable;
}
if (matchMessage != null) {
_json['matchMessage'] = matchMessage;
}
if (requestIpVersion != null) {
_json['requestIpVersion'] = requestIpVersion;
}
if (requestedLink != null) {
_json['requestedLink'] = requestedLink;
}
if (resolvedLink != null) {
_json['resolvedLink'] = resolvedLink;
}
if (utmCampaign != null) {
_json['utmCampaign'] = utmCampaign;
}
if (utmContent != null) {
_json['utmContent'] = utmContent;
}
if (utmMedium != null) {
_json['utmMedium'] = utmMedium;
}
if (utmSource != null) {
_json['utmSource'] = utmSource;
}
if (utmTerm != null) {
_json['utmTerm'] = utmTerm;
}
return _json;
}
}
/// Request for iSDK to get reopen attribution for app universal link open
/// deeplinking. This endpoint is meant for only iOS requests.
class GetIosReopenAttributionRequest {
/// APP bundle ID.
core.String bundleId;
/// FDL link to be verified from an app universal link open. The FDL link can
/// be one of: 1) short FDL. e.g. .page.link/, or 2) long FDL. e.g.
/// .page.link/?{query params}, or 3) Invite FDL. e.g. .page.link/i/
core.String requestedLink;
/// Google SDK version. Version takes the form "$major.$minor.$patch"
core.String sdkVersion;
GetIosReopenAttributionRequest();
GetIosReopenAttributionRequest.fromJson(core.Map _json) {
if (_json.containsKey('bundleId')) {
bundleId = _json['bundleId'] as core.String;
}
if (_json.containsKey('requestedLink')) {
requestedLink = _json['requestedLink'] as core.String;
}
if (_json.containsKey('sdkVersion')) {
sdkVersion = _json['sdkVersion'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (bundleId != null) {
_json['bundleId'] = bundleId;
}
if (requestedLink != null) {
_json['requestedLink'] = requestedLink;
}
if (sdkVersion != null) {
_json['sdkVersion'] = sdkVersion;
}
return _json;
}
}
/// Response for iSDK to get reopen attribution for app universal link open
/// deeplinking. This endpoint is meant for only iOS requests.
class GetIosReopenAttributionResponse {
/// The deep-link attributed the app universal link open. For both regular FDL
/// links and invite FDL links.
core.String deepLink;
/// Optional invitation ID, for only invite typed requested FDL links.
core.String invitationId;
/// FDL input value of the "&imv=" parameter, minimum app version to be
/// returned to Google Firebase SDK running on iOS-9.
core.String iosMinAppVersion;
/// The entire FDL, expanded from a short link. It is the same as the
/// requested_link, if it is long.
core.String resolvedLink;
/// Scion campaign value to be propagated by iSDK to Scion at app-reopen.
core.String utmCampaign;
/// Scion content value to be propagated by iSDK to Scion at app-reopen.
core.String utmContent;
/// Scion medium value to be propagated by iSDK to Scion at app-reopen.
core.String utmMedium;
/// Scion source value to be propagated by iSDK to Scion at app-reopen.
core.String utmSource;
/// Scion term value to be propagated by iSDK to Scion at app-reopen.
core.String utmTerm;
GetIosReopenAttributionResponse();
GetIosReopenAttributionResponse.fromJson(core.Map _json) {
if (_json.containsKey('deepLink')) {
deepLink = _json['deepLink'] as core.String;
}
if (_json.containsKey('invitationId')) {
invitationId = _json['invitationId'] as core.String;
}
if (_json.containsKey('iosMinAppVersion')) {
iosMinAppVersion = _json['iosMinAppVersion'] as core.String;
}
if (_json.containsKey('resolvedLink')) {
resolvedLink = _json['resolvedLink'] as core.String;
}
if (_json.containsKey('utmCampaign')) {
utmCampaign = _json['utmCampaign'] as core.String;
}
if (_json.containsKey('utmContent')) {
utmContent = _json['utmContent'] as core.String;
}
if (_json.containsKey('utmMedium')) {
utmMedium = _json['utmMedium'] as core.String;
}
if (_json.containsKey('utmSource')) {
utmSource = _json['utmSource'] as core.String;
}
if (_json.containsKey('utmTerm')) {
utmTerm = _json['utmTerm'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (deepLink != null) {
_json['deepLink'] = deepLink;
}
if (invitationId != null) {
_json['invitationId'] = invitationId;
}
if (iosMinAppVersion != null) {
_json['iosMinAppVersion'] = iosMinAppVersion;
}
if (resolvedLink != null) {
_json['resolvedLink'] = resolvedLink;
}
if (utmCampaign != null) {
_json['utmCampaign'] = utmCampaign;
}
if (utmContent != null) {
_json['utmContent'] = utmContent;
}
if (utmMedium != null) {
_json['utmMedium'] = utmMedium;
}
if (utmSource != null) {
_json['utmSource'] = utmSource;
}
if (utmTerm != null) {
_json['utmTerm'] = utmTerm;
}
return _json;
}
}
/// Parameters for Google Play Campaign Measurements. [Learn
/// more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params)
class GooglePlayAnalytics {
/// [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.
core.String gclid;
/// Campaign name; used for keyword analysis to identify a specific product
/// promotion or strategic campaign.
core.String utmCampaign;
/// Campaign content; used for A/B testing and content-targeted ads to
/// differentiate ads or links that point to the same URL.
core.String utmContent;
/// Campaign medium; used to identify a medium such as email or
/// cost-per-click.
core.String utmMedium;
/// Campaign source; used to identify a search engine, newsletter, or other
/// source.
core.String utmSource;
/// Campaign term; used with paid search to supply the keywords for ads.
core.String utmTerm;
GooglePlayAnalytics();
GooglePlayAnalytics.fromJson(core.Map _json) {
if (_json.containsKey('gclid')) {
gclid = _json['gclid'] as core.String;
}
if (_json.containsKey('utmCampaign')) {
utmCampaign = _json['utmCampaign'] as core.String;
}
if (_json.containsKey('utmContent')) {
utmContent = _json['utmContent'] as core.String;
}
if (_json.containsKey('utmMedium')) {
utmMedium = _json['utmMedium'] as core.String;
}
if (_json.containsKey('utmSource')) {
utmSource = _json['utmSource'] as core.String;
}
if (_json.containsKey('utmTerm')) {
utmTerm = _json['utmTerm'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (gclid != null) {
_json['gclid'] = gclid;
}
if (utmCampaign != null) {
_json['utmCampaign'] = utmCampaign;
}
if (utmContent != null) {
_json['utmContent'] = utmContent;
}
if (utmMedium != null) {
_json['utmMedium'] = utmMedium;
}
if (utmSource != null) {
_json['utmSource'] = utmSource;
}
if (utmTerm != null) {
_json['utmTerm'] = utmTerm;
}
return _json;
}
}
/// Parameters for iTunes Connect App Analytics.
class ITunesConnectAnalytics {
/// Affiliate token used to create affiliate-coded links.
core.String at;
/// Campaign text that developers can optionally add to any link in order to
/// track sales from a specific marketing campaign.
core.String ct;
/// iTune media types, including music, podcasts, audiobooks and so on.
core.String mt;
/// Provider token that enables analytics for Dynamic Links from within iTunes
/// Connect.
core.String pt;
ITunesConnectAnalytics();
ITunesConnectAnalytics.fromJson(core.Map _json) {
if (_json.containsKey('at')) {
at = _json['at'] as core.String;
}
if (_json.containsKey('ct')) {
ct = _json['ct'] as core.String;
}
if (_json.containsKey('mt')) {
mt = _json['mt'] as core.String;
}
if (_json.containsKey('pt')) {
pt = _json['pt'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (at != null) {
_json['at'] = at;
}
if (ct != null) {
_json['ct'] = ct;
}
if (mt != null) {
_json['mt'] = mt;
}
if (pt != null) {
_json['pt'] = pt;
}
return _json;
}
}
/// iOS related attributes to the Dynamic Link..
class IosInfo {
/// iOS App Store ID.
core.String iosAppStoreId;
/// iOS bundle ID of the app.
core.String iosBundleId;
/// 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.
core.String iosCustomScheme;
/// Link to open on iOS if the app is not installed.
core.String iosFallbackLink;
/// iPad bundle ID of the app.
core.String iosIpadBundleId;
/// If specified, this overrides the ios_fallback_link value on iPads.
core.String iosIpadFallbackLink;
/// iOS minimum version.
core.String iosMinimumVersion;
IosInfo();
IosInfo.fromJson(core.Map _json) {
if (_json.containsKey('iosAppStoreId')) {
iosAppStoreId = _json['iosAppStoreId'] as core.String;
}
if (_json.containsKey('iosBundleId')) {
iosBundleId = _json['iosBundleId'] as core.String;
}
if (_json.containsKey('iosCustomScheme')) {
iosCustomScheme = _json['iosCustomScheme'] as core.String;
}
if (_json.containsKey('iosFallbackLink')) {
iosFallbackLink = _json['iosFallbackLink'] as core.String;
}
if (_json.containsKey('iosIpadBundleId')) {
iosIpadBundleId = _json['iosIpadBundleId'] as core.String;
}
if (_json.containsKey('iosIpadFallbackLink')) {
iosIpadFallbackLink = _json['iosIpadFallbackLink'] as core.String;
}
if (_json.containsKey('iosMinimumVersion')) {
iosMinimumVersion = _json['iosMinimumVersion'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (iosAppStoreId != null) {
_json['iosAppStoreId'] = iosAppStoreId;
}
if (iosBundleId != null) {
_json['iosBundleId'] = iosBundleId;
}
if (iosCustomScheme != null) {
_json['iosCustomScheme'] = iosCustomScheme;
}
if (iosFallbackLink != null) {
_json['iosFallbackLink'] = iosFallbackLink;
}
if (iosIpadBundleId != null) {
_json['iosIpadBundleId'] = iosIpadBundleId;
}
if (iosIpadFallbackLink != null) {
_json['iosIpadFallbackLink'] = iosIpadFallbackLink;
}
if (iosMinimumVersion != null) {
_json['iosMinimumVersion'] = iosMinimumVersion;
}
return _json;
}
}
/// Managed Short Link.
class ManagedShortLink {
/// Creation timestamp of the short link.
core.String creationTime;
/// Attributes that have been flagged about this short url.
core.List<core.String> flaggedAttribute;
/// Full Dyamic Link info
DynamicLinkInfo info;
/// Short durable link url, for example, "https://sample.app.goo.gl/xyz123".
/// Required.
core.String link;
/// Link name defined by the creator. Required.
core.String linkName;
/// Visibility status of link.
/// Possible string values are:
/// - "UNSPECIFIED_VISIBILITY" : Visibility of the link is not specified.
/// - "UNARCHIVED" : Link created in console and should be shown in console.
/// - "ARCHIVED" : Link created in console and should not be shown in console
/// (but can be shown in the console again if it is unarchived).
/// - "NEVER_SHOWN" : Link created outside of console and should never be
/// shown in console.
core.String visibility;
ManagedShortLink();
ManagedShortLink.fromJson(core.Map _json) {
if (_json.containsKey('creationTime')) {
creationTime = _json['creationTime'] as core.String;
}
if (_json.containsKey('flaggedAttribute')) {
flaggedAttribute = (_json['flaggedAttribute'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('info')) {
info = DynamicLinkInfo.fromJson(_json['info']);
}
if (_json.containsKey('link')) {
link = _json['link'] as core.String;
}
if (_json.containsKey('linkName')) {
linkName = _json['linkName'] as core.String;
}
if (_json.containsKey('visibility')) {
visibility = _json['visibility'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (creationTime != null) {
_json['creationTime'] = creationTime;
}
if (flaggedAttribute != null) {
_json['flaggedAttribute'] = flaggedAttribute;
}
if (info != null) {
_json['info'] = info.toJson();
}
if (link != null) {
_json['link'] = link;
}
if (linkName != null) {
_json['linkName'] = linkName;
}
if (visibility != null) {
_json['visibility'] = visibility;
}
return _json;
}
}
/// Information of navigation behavior.
class NavigationInfo {
/// If this option is on, FDL click will be forced to redirect rather than
/// show an interstitial page.
core.bool enableForcedRedirect;
NavigationInfo();
NavigationInfo.fromJson(core.Map _json) {
if (_json.containsKey('enableForcedRedirect')) {
enableForcedRedirect = _json['enableForcedRedirect'] as core.bool;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (enableForcedRedirect != null) {
_json['enableForcedRedirect'] = enableForcedRedirect;
}
return _json;
}
}
/// Parameters for social meta tag params. Used to set meta tag data for link
/// previews on social sites.
class SocialMetaTagInfo {
/// A short description of the link. Optional.
core.String socialDescription;
/// An image url string. Optional.
core.String socialImageLink;
/// Title to be displayed. Optional.
core.String socialTitle;
SocialMetaTagInfo();
SocialMetaTagInfo.fromJson(core.Map _json) {
if (_json.containsKey('socialDescription')) {
socialDescription = _json['socialDescription'] as core.String;
}
if (_json.containsKey('socialImageLink')) {
socialImageLink = _json['socialImageLink'] as core.String;
}
if (_json.containsKey('socialTitle')) {
socialTitle = _json['socialTitle'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (socialDescription != null) {
_json['socialDescription'] = socialDescription;
}
if (socialImageLink != null) {
_json['socialImageLink'] = socialImageLink;
}
if (socialTitle != null) {
_json['socialTitle'] = socialTitle;
}
return _json;
}
}
/// Short Dynamic Link suffix.
class Suffix {
/// Only applies to Option.CUSTOM.
core.String customSuffix;
/// Suffix option.
/// Possible string values are:
/// - "OPTION_UNSPECIFIED" : The suffix option is not specified, performs as
/// UNGUESSABLE .
/// - "UNGUESSABLE" : Short Dynamic Link suffix is a base62 [0-9A-Za-z]
/// encoded string of a random generated 96 bit random number, which has a
/// length of 17 chars. For example, "nlAR8U4SlKRZw1cb2". It prevents other
/// people from guessing and crawling short Dynamic Links that contain
/// personal identifiable information.
/// - "SHORT" : Short Dynamic Link suffix is a base62 [0-9A-Za-z] string
/// starting with a length of 4 chars. the length will increase when all the
/// space is occupied.
/// - "CUSTOM" : Custom DDL suffix is a client specified string, for example,
/// "buy2get1free". NOTE: custom suffix should only be available to managed
/// short link creation
core.String option;
Suffix();
Suffix.fromJson(core.Map _json) {
if (_json.containsKey('customSuffix')) {
customSuffix = _json['customSuffix'] as core.String;
}
if (_json.containsKey('option')) {
option = _json['option'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (customSuffix != null) {
_json['customSuffix'] = customSuffix;
}
if (option != null) {
_json['option'] = option;
}
return _json;
}
}