react-native-gigya-sdk
Version:
SAP CDC/Gigya SDK for your React Native applications
427 lines (426 loc) • 14.4 kB
TypeScript
export declare enum GigyaSdkDataCenters {
/**
* Australian data center.
* @console https://console.gigya.com
*/
AU1 = "au1.gigya.com",
/**
* Chinese data center.
* @console https://console.cn1.sapcdm.cn
*/
CN1 = "cn1.sapcdm.cn",
/**
* European data center (excluding Russia).
* @console https://console.gigya.com
*/
EU1 = "eu1.gigya.com",
/**
* European Azure data center.
* @console https://console.gigya.com
*/
EU2 = "eu2.gigya.com",
/**
* United States data center.
* @console https://console.gigya.com
*/
US1 = "us1.gigya.com",
/**
* Must be used with Global site groups.
* @console Not Applicable
*/
GLOBAL = "global.gigya.com"
}
/**
* Determines which Link Accounts API version should the library use.
* Both SAP native SDKs are using the v2 by default (since `gigya-swift-sdk@1.7.2` & `gigya-android-sdk@7.1.4`).
* @default `V1'`
* @see https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/a8653abdc4594c0e94d38809db1b93d7.html?locale=en-US
*/
export declare enum GigyaSdkLinkAccountVersions {
/**
* SAP CDC Link Account v1 API.
* Both SAP CDC native SDKs use the `v1` by default up until `gigya-swift-sdk@1.7.1` & `gigya-android-sdk@7.1.3`.
* @see https://github.com/SAP/gigya-swift-sdk/releases/tag/1.7.2
* @see https://github.com/SAP/gigya-android-sdk/releases/tag/core-v7.1.4
*/
V1 = "v1",
/**
* SAP CDC latest Link Account v2 API.
* Both SAP CDC native SDKs are now using the `v2` by default since `gigya-swift-sdk@1.7.2` & `gigya-android-sdk@7.1.4`.
* @see https://github.com/SAP/gigya-swift-sdk/releases/tag/1.7.2
* @see https://github.com/SAP/gigya-android-sdk/releases/tag/core-v7.1.4
*/
V2 = "v2"
}
/**
* Internal state of the library.
*/
export interface GigyaSdkStateType {
UID: string;
lang: string;
apiKey: string;
storageKey: string;
error?: GigyaSdkErrorType;
dataCenter: GigyaSdkDataCenters;
linkAccountVersion?: GigyaSdkLinkAccountVersions;
sessionInfo?: GigyaSdkLoginErrorPayloadType['sessionInfo'];
regToken?: {
expirationDate?: Date;
isStillValid?: boolean;
value?: GigyaSdkLoginErrorPayloadType['regToken'];
};
authenticationAttempt?: {
type?: GigyaSdkLoginProvidersType | GigyaSdkSocialProvidersType;
};
storage?: {
setItem: (key: string, value: string) => any;
getItem: (key: string) => string | null | Promise<string | null>;
};
}
/**
* All login providers supported by the library.
* @see [Supported Social networks](https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/4172d0a670b21014bbc5a10ce4041860.html?locale=en-US&q=social%20login#capabilities-by-network).
*/
export declare type GigyaSdkLoginProvidersType = 'site' | 'apple' | 'facebook' | 'googleplus' | 'line' | 'wechat';
/**
* Social login providers supported by the library.
* @see [Supported Social networks](https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/4172d0a670b21014bbc5a10ce4041860.html?locale=en-US&q=social%20login#capabilities-by-network).
*/
export declare type GigyaSdkSocialProvidersType = Exclude<GigyaSdkLoginProvidersType, 'googleplus' | 'site'> | 'google';
/**
* Common error codes returned by Gigya's servers.
* @see [Response Codes and Errors](https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/416d41b170b21014bbc5a10ce4041860.html?locale=en-US)
*/
export declare enum GigyaSdkErrorCodes {
NetworkError = 500026,
ValidationError = 400009,
UnauthorizedUser = 403005,
PermissionDenied = 403007,
InvalidParameter = 400006,
ConflictingAccount = 403043,
PendingVerification = 206002,
LoginIdDoesNotExist = 403047,
PendingRegistration = 206001,
ConflictingAccountV2 = 409003,
NotConnectedToNetwork = 400106,
MaxRequestLimitReached = 403000,
InvalidApiKeyParameter = 400093,
UniqueIdentifierExists = 400003,
InvalidRequestSignature = 403003,
InvalidLoginIdOrPassword = 403042,
AccountTemporarilyLockedOut = 403120,
ConsecutiveRequestLimitReached = 400125,
ConflictingAccountV1 = 403043
}
/**
* Common error reasons returned by Gigya's servers.
* @see [Response Codes and Errors](https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/416d41b170b21014bbc5a10ce4041860.html?locale=en-US)
*/
export declare enum GigyaSdkErrors {
NetworkError = "networkError",
SendApiError = "sendApiError",
EmptyResponse = "emptyResponse",
UserCancelled = "userCancelled",
UndefinedError = "undefinedError",
JsonParseError = "jsonParseError",
ValidationError = "validationError",
SetAccountError = "setAccountError",
InvalidParameter = "invalidParameter",
PermissionDenied = "permissionDenied",
ConflictingAccount = "conflictingAccount",
LoginIdDoesNotExist = "loginIdDoesNotExist",
PendingRegistration = "pendingRegistration",
PendingVerification = "pendingVerification",
NotConnectedToNetwork = "notConnectedToNetwork",
PendingPasswordChange = "pendingPasswordChange",
CreateURLRequestFailed = "createURLRequestFailed",
MaxRequestLimitReached = "maxRequestLimitReached",
InvalidApiKeyParameter = "invalidApiKeyParameter",
UniqueIdentifierExists = "uniqueIdentifierExists",
InvalidLoginIdOrPassword = "invalidLoginIdOrPassword",
AccountTemporarilyLockedOut = "accountTemporarilyLockedOut",
ConsecutiveRequestLimitReached = "consecutiveRequestLimitReached"
}
export interface GigyaSdkApiResponseType {
time: string;
callId: string;
statusCode: number;
apiVersion?: number;
statusReason: string;
errorMessage?: string;
errorDetails?: string;
fullEventName?: string;
errorCode: GigyaSdkErrorCodes;
}
export interface GigyaSdkValidationErrorType {
message: string;
errorCode: number;
fieldName: 'username' | 'password' | 'secretQuestion' | 'secretAnswer' | 'email';
}
export interface GigyaSdkLoginErrorPayloadAccountInfoType extends GigyaSdkApiResponseType {
UID: string;
email: string;
UIDSig: string;
gender: string;
nickname: string;
photoURL: string;
lastName: string;
firstName: string;
providers: string;
timestamp: string;
isSiteUID: boolean;
isSiteUser: boolean;
isTempUser: boolean;
isLoggedIn: boolean;
UIDSignature: string;
isConnected: boolean;
thumbnailURL: string;
capabilities: string;
loginProvider: string;
oldestDataAge: number;
loginProviderUID: string;
signatureTimestamp: string;
oldestDataUpdatedTimestamp: number;
identities: Record<string, unknown>[];
}
export interface GigyaSdkLoginErrorPayloadType extends GigyaSdkApiResponseType {
UID?: string;
error?: string;
isActive?: true;
newUser: boolean;
id_token: string;
regToken: string;
loginID?: string;
created?: string;
apiVersion: number;
isVerified?: false;
lastLogin?: string;
errorDetails: string;
accessToken?: string;
errorMessage: string;
isRegistered?: false;
lastUpdated?: string;
UIDSignature?: string;
isDefaultApp?: boolean;
createdTimestamp?: number;
unverifiedEmail?: string[];
oldestDataUpdated?: string;
signatureTimestamp?: string;
lastLoginTimestamp?: number;
profile?: {
email?: string;
};
lastUpdatedTimestamp?: number;
oldestDataUpdatedTimestamp?: number;
loginProvider?: GigyaSdkLoginProvidersType;
socialProviders?: GigyaSdkLoginProvidersType;
loginProviders?: GigyaSdkLoginProvidersType[];
validationErrors?: GigyaSdkValidationErrorType[];
accountInfo: GigyaSdkLoginErrorPayloadAccountInfoType;
provider?: Exclude<GigyaSdkLoginProvidersType, 'site'>;
provider_uid?: Exclude<GigyaSdkLoginProvidersType, 'site'>;
sessionInfo?: {
expires_in?: string;
access_token?: string;
provider?: Exclude<GigyaSdkLoginProvidersType, 'site'>;
provider_uid?: Exclude<GigyaSdkLoginProvidersType, 'site'>;
};
}
export interface GigyaSdkErrorType {
code?: string;
name?: string;
stack?: string;
message?: string;
type: GigyaSdkErrors;
payload: GigyaSdkLoginErrorPayloadType | null;
}
export declare type GigyaSdkConsentsStatementsType<ConsentIds extends string = string, Lang extends string = string> = GigyaSdkApiResponseType & {
preferences: GigyaSdkConsentPreferencesType<ConsentIds, Lang>;
};
export declare type GigyaSdkConsentPreferencesType<ConsentIds extends string = string, Lang extends string = string> = {
terms: Record<ConsentIds, GigyaSdkConsentStatementType<Lang>>;
privacy: Record<ConsentIds, GigyaSdkConsentStatementType<Lang>>;
} & Record<ConsentIds, GigyaSdkConsentStatementType<Lang>>;
export declare type GigyaSdkConsentWriteAccessType = 'clientCreate' | 'clientModify' | 'serverOnly';
export interface GigyaSdkConsentStatementType<Lang extends string = string> {
/**
* Gigya Preferences Object - Old Consents.
* @see: https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/4169054f70b21014bbc5a10ce4041860.html
*/
tags: unknown[];
isActive: boolean;
defaultLang?: Lang;
langs: Array<Lang>;
isMandatory: boolean;
customData: unknown[];
entitlements: unknown[];
enforceLocaleReconsent: boolean;
consentVaultRetentionPeriod: number;
writeAccess: GigyaSdkConsentWriteAccessType;
/**
* Gigya Preferences Object - New Consents.
* @see: https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD/8b8d6fffe113457094a17701f63e3d6a/1f1f6159d48a42bf9168c3d5567f1acd.html
*/
lang?: Lang;
docVersion?: number;
isConsentGranted?: true;
actionTimestamp?: string;
lastConsentModified?: string;
locales?: Record<Lang, Record<'docVersion', number>>;
}
export interface GigyaSdkConsentSchemaType {
key: string;
type: string;
format: string;
required: boolean;
writeAccess: string;
customData: unknown[];
minDocVersion: number;
currentDocVersion: number;
legalStatements: Record<string, {
documentUrl: string;
purpose: string;
}>;
}
export declare type GigyaSdkRequiredConsentsKeysType = {
acceptanceRequired: string[];
instantiationRequired: string[];
};
export declare type GigyaSdkRequiredConsentsSchemasType = {
acceptanceRequired: GigyaSdkConsentSchemaType[];
instantiationRequired: GigyaSdkConsentSchemaType[];
};
export declare type GigyaSdkLegalStatementsStatusType = 'Historic' | 'Published';
export interface GigyaSdkLegalStatementsType {
minDocDate?: string;
minDocVersion: number;
currentDocVersion: number;
publishedDocVersion: number;
versions: Record<GigyaSdkLegalStatementsType['minDocVersion'] | GigyaSdkLegalStatementsType['publishedDocVersion'], GigyaSdkLegalStatementsVersionType>;
}
export interface GigyaSdkLegalStatementsVersionType {
purpose?: string;
documentUrl: string;
LegalStatementStatus: GigyaSdkLegalStatementsStatusType;
}
export interface GigyaSdkProfileType {
age?: number;
bio?: string;
zip?: string;
email: string;
city?: string;
name?: string;
iRank?: number;
state?: string;
work?: unknown;
gender?: string;
honors?: string;
likes?: unknown;
locale?: string;
lastName: string;
address?: string;
country?: string;
skills?: unknown;
firstName: string;
nickName?: string;
birthDay?: number;
hometown?: string;
industry?: string;
patents?: unknown;
photoURL?: string;
religion?: string;
timezone?: string;
username?: string;
verified?: string;
birthYear?: number;
interests?: string;
languages?: string;
samlData?: unknown;
birthMonth?: number;
education?: unknown;
favorites?: unknown;
isSiteUID?: boolean;
identities?: unknown;
isSiteUser?: boolean;
providers?: string[];
isVerified?: boolean;
capabilities?: string;
interestedIn?: string;
isConnected?: boolean;
specialities?: string;
thumbnailURL?: string;
oldestDataAge?: number;
publications?: unknown;
educationLevel?: string;
followersCount?: number;
followingCount?: number;
certifications?: unknown;
verifiedTimestamp?: number;
relationshipStatus?: string;
oldestDataUpdatedTimestamp?: number;
phones?: GigyaSdkProfilePhoneType | GigyaSdkProfilePhoneType[];
}
export declare type GigyaSdkProfilePhoneType = {
type: string;
number: string;
};
export interface GigyaSdkLoginType {
UID: string;
created: Date;
verified: Date;
lastLogin: Date;
isActive: boolean;
lastUpdated: Date;
registered: string;
apiVersion: number;
isVerified: boolean;
UIDSignature: string;
isRegistered: boolean;
socialProviders: string;
oldestDataUpdated: Date;
createdTimestamp: number;
verifiedTimestamp: number;
lastLoginTimestamp: number;
signatureTimestamp: string;
registeredTimestamp: number;
profile: GigyaSdkProfileType;
lastUpdatedTimestamp: number;
oldestDataUpdatedTimestamp: number;
loginProvider: GigyaSdkLoginProvidersType;
}
export interface GigyaSdkAccountInfoType extends GigyaSdkLoginType {
lastLoginLocation?: {
country: string;
coordinates: {
lat: number;
lon: number;
};
};
data?: unknown;
id_token?: string;
preferences?: unknown;
isLockedOut?: boolean;
subscriptions?: unknown;
identities: Record<string, unknown>[];
emails?: {
verified: string[];
unverified: string[];
};
loginIDs?: {
username: string;
emails: string[];
unverifiedEmails: string[];
};
}
export interface GigyaSdkRegisteredAccountType extends GigyaSdkAccountInfoType {
sessionInfo: Omit<GigyaSdkSessionType, 'sessionExpirationTimestamp'>;
}
export interface GigyaSdkConflictingAccountType {
loginID: string;
loginProviders: GigyaSdkLoginProvidersType[];
}
export interface GigyaSdkSessionType {
sessionToken: string;
sessionSecret: string;
sessionExpirationTimestamp: number;
}