@google/events
Version:
Client library for CloudEvents issued by Google.
325 lines (324 loc) • 8.04 kB
TypeScript
/**
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* The data within Firebase Analytics log events.
*/
export interface AnalyticsLogData {
/**
* A repeated record of event related dimensions.
*/
eventDim?: EventDimensions[];
/**
* User related dimensions.
*/
userDim?: UserDim;
}
/**
* Message containing information pertaining to the event.
*/
export interface EventDimensions {
/**
* The date on which this event was logged.
* (YYYYMMDD format in the registered timezone of your app.)
*/
date?: string;
/**
* The name of this event.
*/
name?: string;
/**
* A repeated record of the parameters associated with this event.
*/
params?: {
[key: string]: AnalyticsValue;
};
/**
* UTC client time when the previous event happened.
*/
previousTimestampMicros?: number;
/**
* UTC client time when the event happened.
*/
timestampMicros?: number;
/**
* Value param in USD.
*/
valueInUsd?: number;
}
/**
* Value for Event Params and UserProperty can be of type string or int or
* float or double.
*/
export interface AnalyticsValue {
doubleValue?: number;
floatValue?: number;
intValue?: number;
stringValue?: string;
}
/**
* User related dimensions.
*
* Message containing information about the user associated with the event.
*/
export interface UserDim {
/**
* App information.
*/
appInfo?: AppInfo;
/**
* Information regarding the bundle in which these events were uploaded.
*/
bundleInfo?: BundleInfo;
/**
* Device information.
*/
deviceInfo?: DeviceInfo;
/**
* The time (in microseconds) at which the user first opened the app.
*/
firstOpenTimestampMicros?: number;
/**
* User's geographic information.
*/
geoInfo?: GeoInfo;
/**
* Lifetime Value information about this user.
*/
ltvInfo?: LtvInfo;
/**
* Information about marketing campaign which acquired the user.
*/
trafficSource?: TrafficSource;
/**
* The user ID set via the setUserId API.
*/
userId?: string;
/**
* A repeated record of user properties set with the setUserProperty API.
* https://firebase.google.com/docs/analytics/android/properties
*/
userProperties?: {
[key: string]: UserPropertyValue;
};
}
/**
* App information.
*
* Message which contains App Information.
*/
export interface AppInfo {
/**
* Unique application identifier within an app store.
*/
appId?: string;
/**
* Unique id for this instance of the app.
* Example: "71683BF9FA3B4B0D9535A1F05188BAF3"
*/
appInstanceId?: string;
/**
* The app platform.
* Eg "ANDROID", "IOS".
*/
appPlatform?: string;
/**
* The identifier of the store that installed the app.
* Eg. "com.sec.android.app.samsungapps", "com.amazon.venezia",
* "com.nokia.nstore"
*/
appStore?: string;
/**
* The app's version name
* Examples: "1.0", "4.3.1.1.213361", "2.3 (1824253)", "v1.8b22p6"
*/
appVersion?: string;
}
/**
* Information regarding the bundle in which these events were uploaded.
*
* Message containing information regarding the bundle in which these
* events were uploaded.
*/
export interface BundleInfo {
/**
* Monotonically increasing index for each bundle set by SDK.
*/
bundleSequenceId?: number;
/**
* Timestamp offset between collection time and upload time.
*/
serverTimestampOffsetMicros?: number;
}
/**
* Device information.
*
* Message containing device informations.
*/
export interface DeviceInfo {
/**
* Device category.
* Eg. tablet or mobile.
*/
deviceCategory?: string;
/**
* Vendor specific device identifier. This is IDFV on iOS. Not used for
* Android.
* Example: "599F9C00-92DC-4B5C-9464-7971F01F8370"
*/
deviceId?: string;
/**
* Device model.
* Eg. GT-I9192
*/
deviceModel?: string;
/**
* The timezone of the device when data was uploaded as seconds skew from UTC.
*/
deviceTimeZoneOffsetSeconds?: number;
/**
* The device's Limit Ad Tracking setting.
* When true, we cannot use device_id for remarketing, demographics or
* influencing ads serving behaviour. However, we can use device_id for
* conversion tracking and campaign attribution.
*/
limitedAdTracking?: boolean;
/**
* Device brand name.
* Eg. Samsung, HTC, etc.
*/
mobileBrandName?: string;
/**
* Device marketing name.
* Eg. Galaxy S4 Mini
*/
mobileMarketingName?: string;
/**
* Device model name.
* Eg. GT-I9192
*/
mobileModelName?: string;
/**
* Device OS version when data capture ended.
* Eg. 4.4.2
*/
platformVersion?: string;
/**
* The type of the resettable_device_id is always IDFA on iOS and AdId
* on Android.
* Example: "71683BF9-FA3B-4B0D-9535-A1F05188BAF3"
*/
resettableDeviceId?: string;
/**
* The user language.
* Eg. "en-us", "en-za", "zh-tw", "jp"
*/
userDefaultLanguage?: string;
}
/**
* User's geographic information.
*
* User's geographic informaiton.
*/
export interface GeoInfo {
/**
* The geographic city.
* Eg. Sao Paulo
*/
city?: string;
/**
* The geographic continent.
* Eg. Americas
*/
continent?: string;
/**
* The geographic country.
* Eg. Brazil
*/
country?: string;
/**
* The geographic region.
* Eg. State of Sao Paulo
*/
region?: string;
}
/**
* Lifetime Value information about this user.
*/
export interface LtvInfo {
/**
* The currency corresponding to the revenue.
*/
currency?: string;
/**
* The Lifetime Value revenue of this user.
*/
revenue?: number;
}
/**
* Information about marketing campaign which acquired the user.
*
* Mesage containing marketing campaign information which acquired the user.
*/
export interface TrafficSource {
/**
* The name of the campaign which acquired the user.
*/
userAcquiredCampaign?: string;
/**
* The name of the medium which acquired the user.
*/
userAcquiredMedium?: string;
/**
* The name of the network which acquired the user.
*/
userAcquiredSource?: string;
}
/**
* Predefined (eg: LTV) or custom properties (eg: birthday) stored on client
* side and associated with subsequent HitBundles.
*/
export interface UserPropertyValue {
/**
* Index for user property (one-based).
*/
index?: number;
/**
* UTC client time when user property was last set.
*/
setTimestampUsec?: number;
/**
* Last set value of user property.
*/
value?: Value;
}
/**
* Last set value of user property.
*
* Value for Event Params and UserProperty can be of type string or int or
* float or double.
*/
export interface Value {
doubleValue?: number;
floatValue?: number;
intValue?: number;
stringValue?: string;
}
/**
* Cast a raw JSON object to a typed event (useful for IDE autocompletion).
* @param {object} json The JSON object
* @return {AnalyticsLogData} The object with type annotations
*/
export declare const toAnalyticsLogData: (json: object) => AnalyticsLogData;