@onairos/react-native 3.6.8 → 3.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +423 -423
- package/lib/commonjs/api/index.js +1 -1
- package/lib/commonjs/assets/images/Checkbox.svg +3 -3
- package/lib/commonjs/assets/images/EnochE.svg +19 -19
- package/lib/commonjs/assets/images/Personalityprofile.svg +3 -3
- package/lib/commonjs/assets/images/Personalitytraits.svg +3 -3
- package/lib/commonjs/assets/images/Userpreferences.svg +3 -3
- package/lib/commonjs/assets/images/arrow.svg +20 -20
- package/lib/commonjs/assets/images/basicproficon.svg +43 -43
- package/lib/commonjs/assets/images/basicprofile.svg +3 -3
- package/lib/commonjs/assets/images/checkmark.svg +4 -4
- package/lib/commonjs/assets/images/contentanalysis.svg +3 -3
- package/lib/commonjs/assets/images/contenticon.svg +23 -23
- package/lib/commonjs/assets/images/personalityicon.svg +18 -18
- package/lib/commonjs/assets/images/x-close.svg +3 -3
- package/lib/commonjs/components/BodyText.js +1 -1
- package/lib/commonjs/components/BrandMark.js +1 -1
- package/lib/commonjs/components/CodeInput.js +1 -1
- package/lib/commonjs/components/EmailInput.js +1 -1
- package/lib/commonjs/components/GoogleButton.js +1 -1
- package/lib/commonjs/components/HeadingGroup.js +1 -1
- package/lib/commonjs/components/LLMDataInputModal.js +1 -1
- package/lib/commonjs/components/ModalHeader.js +1 -1
- package/lib/commonjs/components/ModalSheet.js +1 -1
- package/lib/commonjs/components/Onairos.js +1 -1
- package/lib/commonjs/components/OnairosButton.js +1 -1
- package/lib/commonjs/components/OnairosSignInButton.js +1 -1
- package/lib/commonjs/components/Overlay.js +1 -1
- package/lib/commonjs/components/PersonaImage.js +1 -1
- package/lib/commonjs/components/PersonaLoadingScreen.js +1 -1
- package/lib/commonjs/components/PersonalizationConsentScreen.js +1 -1
- package/lib/commonjs/components/PinCreationScreen.js +1 -1
- package/lib/commonjs/components/PinInput.js +1 -1
- package/lib/commonjs/components/PlatformConnectorsStep.js +1 -1
- package/lib/commonjs/components/PlatformList.js +1 -1
- package/lib/commonjs/components/PlatformToggle.js +1 -1
- package/lib/commonjs/components/PrimaryButton.js +1 -1
- package/lib/commonjs/components/SignInMatchAnimation.js +1 -1
- package/lib/commonjs/components/SignInStep.js +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +1 -1
- package/lib/commonjs/components/VerificationStep.js +1 -1
- package/lib/commonjs/components/WelcomeScreen.js +1 -1
- package/lib/commonjs/components/icons/Basicproficon.js +1 -1
- package/lib/commonjs/components/icons/Basicprofile.js +1 -1
- package/lib/commonjs/components/icons/Checkbox.js +1 -1
- package/lib/commonjs/components/icons/Checkmark.js +1 -1
- package/lib/commonjs/components/icons/Contentanalysis.js +1 -1
- package/lib/commonjs/components/icons/Contenticon.js +1 -1
- package/lib/commonjs/components/icons/EnochE.js +1 -1
- package/lib/commonjs/components/icons/Personalityicon.js +1 -1
- package/lib/commonjs/components/icons/Personalityprofile.js +1 -1
- package/lib/commonjs/components/icons/Personalitytraits.js +1 -1
- package/lib/commonjs/components/icons/Userpreferences.js +1 -1
- package/lib/commonjs/components/icons/index.js +1 -1
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1 -1
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/commonjs/components/onboarding/PinInput.js +1 -1
- package/lib/commonjs/components/onboarding/PlatformConnector.js +1 -1
- package/lib/commonjs/config/PLATFORM_APIS.md +559 -0
- package/lib/commonjs/config/api.js +1 -1
- package/lib/commonjs/config/telegramConfig.js +8 -0
- package/lib/commonjs/config/webchangelog/md +607 -0
- package/lib/commonjs/constants/index.js +1 -1
- package/lib/commonjs/context/AuthContext.js +1 -1
- package/lib/commonjs/hooks/useConnectedAccounts.js +1 -1
- package/lib/commonjs/hooks/useConnections.js +1 -1
- package/lib/commonjs/hooks/useCredentials.js +1 -1
- package/lib/commonjs/hooks/useUserConnections.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/services/SDK_API_KEY_VALIDATION.md +421 -421
- package/lib/commonjs/services/apiClient.js +1 -1
- package/lib/commonjs/services/apiKeyService.js +99 -99
- package/lib/commonjs/services/authService.js +72 -72
- package/lib/commonjs/services/biometricPinService.js +1 -1
- package/lib/commonjs/services/chatGPTConversationExtractor.js +1 -1
- package/lib/commonjs/services/chatGPTConversationService.js +1 -1
- package/lib/commonjs/services/claudeConversationExtractor.js +1 -1
- package/lib/commonjs/services/claudeConversationService.js +1 -1
- package/lib/commonjs/services/connectedAccountsService.js +1 -1
- package/lib/commonjs/services/googleAuthService.js +1 -1
- package/lib/commonjs/services/hingeDataExtractor.js +1 -1
- package/lib/commonjs/services/hingeDataService.js +1 -1
- package/lib/commonjs/services/imageCompressionService.js +1 -1
- package/lib/commonjs/services/instagramDataExtractor.js +1 -1
- package/lib/commonjs/services/instagramDataService.js +1 -1
- package/lib/commonjs/services/jwtStorageService.js +1 -1
- package/lib/commonjs/services/linkedinDOMExtractor.js +1 -1
- package/lib/commonjs/services/linkedinProfileService.js +1 -1
- package/lib/commonjs/services/linkedinScrapingService.js +1 -1
- package/lib/commonjs/services/llmDataStorage.js +1 -1
- package/lib/commonjs/services/mobileTrainingService.js +1 -1
- package/lib/commonjs/services/oauthService.js +20 -20
- package/lib/commonjs/services/pinEncryptionService.js +1 -1
- package/lib/commonjs/services/pinStorageUtils.js +1 -1
- package/lib/commonjs/services/platformAuthService.js +1 -1
- package/lib/commonjs/services/sephoraDataExtractor.js +1 -1
- package/lib/commonjs/services/sephoraDataService.js +1 -1
- package/lib/commonjs/services/storageService.js +1 -1
- package/lib/commonjs/services/telegramDataExtractor.js +1 -1
- package/lib/commonjs/services/telegramDataService.js +1 -1
- package/lib/commonjs/services/trainingApiHelpers.js +1 -1
- package/lib/commonjs/services/userConnectionsService.js +1 -1
- package/lib/commonjs/services/youtubeMigrationService.js +1 -1
- package/lib/commonjs/theme/index.js +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/utils/Portal.js +1 -1
- package/lib/commonjs/utils/api.js +1 -1
- package/lib/commonjs/utils/assetRegistry.js +1 -1
- package/lib/commonjs/utils/auth.js +1 -1
- package/lib/commonjs/utils/connectorTests.js +1 -1
- package/lib/commonjs/utils/crypto.js +1 -1
- package/lib/commonjs/utils/debugHelper.js +1 -1
- package/lib/commonjs/utils/encryption.js +1 -1
- package/lib/commonjs/utils/eventUtils.js +1 -1
- package/lib/commonjs/utils/haptics.js +1 -1
- package/lib/commonjs/utils/imagePreloader.js +1 -1
- package/lib/commonjs/utils/networkDiagnostics.js +1 -1
- package/lib/commonjs/utils/onairosApi.js +1 -1
- package/lib/commonjs/utils/programmaticFlow.js +1 -1
- package/lib/commonjs/utils/retryHelper.js +1 -1
- package/lib/commonjs/utils/secureStorage.js +1 -1
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +1 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +1 -1
- package/lib/commonjs/utils/webviewScripts/index.js +1 -1
- package/lib/commonjs/utils/webviewScripts/instagram.js +1 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +1 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +1 -1
- package/lib/module/api/index.js +1 -1
- package/lib/module/assets/images/Checkbox.svg +3 -3
- package/lib/module/assets/images/EnochE.svg +19 -19
- package/lib/module/assets/images/Personalityprofile.svg +3 -3
- package/lib/module/assets/images/Personalitytraits.svg +3 -3
- package/lib/module/assets/images/Userpreferences.svg +3 -3
- package/lib/module/assets/images/arrow.svg +20 -20
- package/lib/module/assets/images/basicproficon.svg +43 -43
- package/lib/module/assets/images/basicprofile.svg +3 -3
- package/lib/module/assets/images/checkmark.svg +4 -4
- package/lib/module/assets/images/contentanalysis.svg +3 -3
- package/lib/module/assets/images/contenticon.svg +23 -23
- package/lib/module/assets/images/personalityicon.svg +18 -18
- package/lib/module/assets/images/x-close.svg +3 -3
- package/lib/module/components/BodyText.js +1 -1
- package/lib/module/components/BrandMark.js +1 -1
- package/lib/module/components/CodeInput.js +1 -1
- package/lib/module/components/EmailInput.js +1 -1
- package/lib/module/components/GoogleButton.js +1 -1
- package/lib/module/components/HeadingGroup.js +1 -1
- package/lib/module/components/LLMDataInputModal.js +1 -1
- package/lib/module/components/ModalHeader.js +1 -1
- package/lib/module/components/ModalSheet.js +1 -1
- package/lib/module/components/Onairos.js +1 -1
- package/lib/module/components/OnairosButton.js +1 -1
- package/lib/module/components/OnairosSignInButton.js +1 -1
- package/lib/module/components/Overlay.js +1 -1
- package/lib/module/components/PersonaImage.js +1 -1
- package/lib/module/components/PersonaLoadingScreen.js +1 -1
- package/lib/module/components/PersonalizationConsentScreen.js +1 -1
- package/lib/module/components/PinCreationScreen.js +1 -1
- package/lib/module/components/PinInput.js +1 -1
- package/lib/module/components/PlatformConnectorsStep.js +1 -1
- package/lib/module/components/PlatformList.js +1 -1
- package/lib/module/components/PlatformToggle.js +1 -1
- package/lib/module/components/PrimaryButton.js +1 -1
- package/lib/module/components/SignInMatchAnimation.js +1 -1
- package/lib/module/components/SignInStep.js +1 -1
- package/lib/module/components/UniversalOnboarding.js +1 -1
- package/lib/module/components/VerificationStep.js +1 -1
- package/lib/module/components/WelcomeScreen.js +1 -1
- package/lib/module/components/icons/Basicproficon.js +1 -1
- package/lib/module/components/icons/Basicprofile.js +1 -1
- package/lib/module/components/icons/Checkbox.js +1 -1
- package/lib/module/components/icons/Checkmark.js +1 -1
- package/lib/module/components/icons/Contentanalysis.js +1 -1
- package/lib/module/components/icons/Contenticon.js +1 -1
- package/lib/module/components/icons/EnochE.js +1 -1
- package/lib/module/components/icons/Personalityicon.js +1 -1
- package/lib/module/components/icons/Personalityprofile.js +1 -1
- package/lib/module/components/icons/Personalitytraits.js +1 -1
- package/lib/module/components/icons/Userpreferences.js +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/module/components/onboarding/PinInput.js +1 -1
- package/lib/module/components/onboarding/PlatformConnector.js +1 -1
- package/lib/module/config/PLATFORM_APIS.md +559 -0
- package/lib/module/config/api.js +1 -1
- package/lib/module/config/telegramConfig.js +8 -0
- package/lib/module/config/webchangelog/md +607 -0
- package/lib/module/constants/index.js +1 -1
- package/lib/module/context/AuthContext.js +1 -1
- package/lib/module/hooks/useConnectedAccounts.js +1 -1
- package/lib/module/hooks/useConnections.js +1 -1
- package/lib/module/hooks/useCredentials.js +1 -1
- package/lib/module/hooks/useUserConnections.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/SDK_API_KEY_VALIDATION.md +421 -421
- package/lib/module/services/apiClient.js +1 -1
- package/lib/module/services/apiKeyService.js +99 -99
- package/lib/module/services/authService.js +72 -72
- package/lib/module/services/biometricPinService.js +1 -1
- package/lib/module/services/chatGPTConversationExtractor.js +1 -1
- package/lib/module/services/chatGPTConversationService.js +1 -1
- package/lib/module/services/claudeConversationExtractor.js +1 -1
- package/lib/module/services/claudeConversationService.js +1 -1
- package/lib/module/services/connectedAccountsService.js +1 -1
- package/lib/module/services/googleAuthService.js +1 -1
- package/lib/module/services/hingeDataExtractor.js +1 -1
- package/lib/module/services/hingeDataService.js +1 -1
- package/lib/module/services/imageCompressionService.js +1 -1
- package/lib/module/services/instagramDataExtractor.js +1 -1
- package/lib/module/services/instagramDataService.js +1 -1
- package/lib/module/services/jwtStorageService.js +1 -1
- package/lib/module/services/linkedinDOMExtractor.js +1 -1
- package/lib/module/services/linkedinProfileService.js +1 -1
- package/lib/module/services/linkedinScrapingService.js +1 -1
- package/lib/module/services/llmDataStorage.js +1 -1
- package/lib/module/services/mobileTrainingService.js +1 -1
- package/lib/module/services/oauthService.js +20 -20
- package/lib/module/services/pinEncryptionService.js +1 -1
- package/lib/module/services/pinStorageUtils.js +1 -1
- package/lib/module/services/platformAuthService.js +1 -1
- package/lib/module/services/sephoraDataExtractor.js +1 -1
- package/lib/module/services/sephoraDataService.js +1 -1
- package/lib/module/services/storageService.js +1 -1
- package/lib/module/services/telegramDataExtractor.js +1 -1
- package/lib/module/services/telegramDataService.js +1 -1
- package/lib/module/services/trainingApiHelpers.js +1 -1
- package/lib/module/services/userConnectionsService.js +1 -1
- package/lib/module/services/youtubeMigrationService.js +1 -1
- package/lib/module/theme/index.js +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/utils/Portal.js +1 -1
- package/lib/module/utils/api.js +1 -1
- package/lib/module/utils/assetRegistry.js +1 -1
- package/lib/module/utils/auth.js +1 -1
- package/lib/module/utils/connectorTests.js +1 -1
- package/lib/module/utils/crypto.js +1 -1
- package/lib/module/utils/debugHelper.js +1 -1
- package/lib/module/utils/encryption.js +1 -1
- package/lib/module/utils/eventUtils.js +1 -1
- package/lib/module/utils/haptics.js +1 -1
- package/lib/module/utils/networkDiagnostics.js +1 -1
- package/lib/module/utils/onairosApi.js +1 -1
- package/lib/module/utils/programmaticFlow.js +1 -1
- package/lib/module/utils/retryHelper.js +1 -1
- package/lib/module/utils/secureStorage.js +1 -1
- package/lib/module/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/module/utils/webviewScripts/claude.js +1 -1
- package/lib/module/utils/webviewScripts/hinge.js +1 -1
- package/lib/module/utils/webviewScripts/index.js +1 -1
- package/lib/module/utils/webviewScripts/instagram.js +1 -1
- package/lib/module/utils/webviewScripts/linkedin.js +1 -1
- package/lib/module/utils/webviewScripts/sephora.js +1 -1
- package/lib/module/utils/webviewScripts/telegram.js +1 -1
- package/package.json +172 -172
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
# Platform Connector APIs Reference
|
|
2
|
+
|
|
3
|
+
Quick reference for all platform data sources, APIs, authentication, and token management.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Sephora
|
|
8
|
+
|
|
9
|
+
**Platform ID:** `mobile-sephora`
|
|
10
|
+
**Data Type:** E-commerce / Beauty
|
|
11
|
+
|
|
12
|
+
### Authentication
|
|
13
|
+
|
|
14
|
+
| Key | Storage | Format |
|
|
15
|
+
|-----|---------|--------|
|
|
16
|
+
| `seph-access-token` | localStorage | JSON: `{ data: "JWT...", expiry: "timestamp" }` |
|
|
17
|
+
| `x-api-key` | Header | `nQc7BFt78yJBvfYDKtle9APd5RrX984i` |
|
|
18
|
+
|
|
19
|
+
**Token Expiry:** ~150 days (expiry is Unix timestamp in seconds)
|
|
20
|
+
|
|
21
|
+
### APIs
|
|
22
|
+
|
|
23
|
+
| API | Endpoint | Method | Data Retrieved |
|
|
24
|
+
|-----|----------|--------|----------------|
|
|
25
|
+
| **Profile** | `/gapi/users/profiles/{profileId}/current/full` | GET | Name, email, VIB status, Beauty Insider points, skin/hair/makeup preferences, preferred store |
|
|
26
|
+
| **Basket** | `/api/shopping-cart/basket` | GET | Cart items, subtotal, BI points, shipping info |
|
|
27
|
+
| **Loves** | `/gway/v1/dotcom/users/profiles/{profileId}/lists/skus/all` | GET | Wishlist products with ratings, categories, prices, images |
|
|
28
|
+
| **Purchases** | `/api/bi/profiles/{profileId}/purchases` | GET | Purchase history with products, dates, order IDs |
|
|
29
|
+
|
|
30
|
+
### Profile API Params
|
|
31
|
+
```
|
|
32
|
+
?skipApis=targetersResult
|
|
33
|
+
&includeApis=profile,basket,loves,shoppingList,segments
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Loves API Params
|
|
37
|
+
```
|
|
38
|
+
?itemsPerPage=100
|
|
39
|
+
¤tPage=1
|
|
40
|
+
&listShortNameLength=20
|
|
41
|
+
&skipProductDetails=false
|
|
42
|
+
&includeInactiveSkus=true
|
|
43
|
+
&fetchAllLovesList=true
|
|
44
|
+
&sortBy=recently
|
|
45
|
+
&includeCategories=true
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Purchases API Params
|
|
49
|
+
```
|
|
50
|
+
?sortBy=recently
|
|
51
|
+
&itemsPerPage=100
|
|
52
|
+
&groupBy=none
|
|
53
|
+
&excludeSamples=true
|
|
54
|
+
&excludeRewards=true
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Data Extracted
|
|
58
|
+
|
|
59
|
+
**Profile:**
|
|
60
|
+
- `profileId`, `firstName`, `lastName`, `email`
|
|
61
|
+
- `vibStatus` (BI, VIB, Rouge)
|
|
62
|
+
- Beauty Insider: points, segment, spending, birthday gift eligibility
|
|
63
|
+
- Preferences: skin concerns, hair concerns, makeup preferences
|
|
64
|
+
- Preferred store info
|
|
65
|
+
|
|
66
|
+
**Basket:**
|
|
67
|
+
- Items with SKU ID, product ID, name, brand, price, quantity, size, image
|
|
68
|
+
|
|
69
|
+
**Loves:**
|
|
70
|
+
- Products with ratings, reviews, categories, stock status, sale info
|
|
71
|
+
|
|
72
|
+
**Purchases:**
|
|
73
|
+
- Order history with product details, dates, quantities
|
|
74
|
+
|
|
75
|
+
### Token Extraction
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
function getSephoraToken() {
|
|
79
|
+
var tokenKeys = ['seph-access-token', 'sephoraAccessToken', 'accessToken'];
|
|
80
|
+
|
|
81
|
+
// Try localStorage
|
|
82
|
+
for (var i = 0; i < tokenKeys.length; i++) {
|
|
83
|
+
var token = localStorage.getItem(tokenKeys[i]);
|
|
84
|
+
if (token) {
|
|
85
|
+
try {
|
|
86
|
+
var parsed = JSON.parse(token);
|
|
87
|
+
if (parsed && parsed.data) return parsed.data;
|
|
88
|
+
} catch (e) {
|
|
89
|
+
return token; // Not JSON, use as-is
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Try cookies
|
|
95
|
+
var cookieMatch = document.cookie.match(/seph-access-token=([^;]+)/);
|
|
96
|
+
if (cookieMatch) return cookieMatch[1];
|
|
97
|
+
|
|
98
|
+
// Try window state
|
|
99
|
+
if (window.__PRELOADED_STATE__ && window.__PRELOADED_STATE__.user) {
|
|
100
|
+
return window.__PRELOADED_STATE__.user.accessToken;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Profile ID Extraction
|
|
108
|
+
|
|
109
|
+
The `profileId` is needed for most Sephora APIs. Extract from:
|
|
110
|
+
|
|
111
|
+
```javascript
|
|
112
|
+
function getProfileId() {
|
|
113
|
+
// Method 1: From token (JWT payload)
|
|
114
|
+
var token = getSephoraToken();
|
|
115
|
+
if (token) {
|
|
116
|
+
try {
|
|
117
|
+
var payload = JSON.parse(atob(token.split('.')[1]));
|
|
118
|
+
if (payload.sub) return payload.sub;
|
|
119
|
+
} catch (e) {}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Method 2: From localStorage
|
|
123
|
+
var profileId = localStorage.getItem('biAccountId') ||
|
|
124
|
+
localStorage.getItem('profileId');
|
|
125
|
+
if (profileId) return profileId;
|
|
126
|
+
|
|
127
|
+
// Method 3: From window state
|
|
128
|
+
if (window.__PRELOADED_STATE__ && window.__PRELOADED_STATE__.user) {
|
|
129
|
+
return window.__PRELOADED_STATE__.user.profileId;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Method 4: From basket API (doesn't require profileId)
|
|
133
|
+
// Call /api/shopping-cart/basket first, extract profileId from response
|
|
134
|
+
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Token Expiry Check
|
|
140
|
+
|
|
141
|
+
```javascript
|
|
142
|
+
function isTokenExpired() {
|
|
143
|
+
var tokenData = localStorage.getItem('seph-access-token');
|
|
144
|
+
if (!tokenData) return true;
|
|
145
|
+
|
|
146
|
+
try {
|
|
147
|
+
var parsed = JSON.parse(tokenData);
|
|
148
|
+
var expiry = parseInt(parsed.expiry, 10);
|
|
149
|
+
var now = Math.floor(Date.now() / 1000);
|
|
150
|
+
return now >= expiry;
|
|
151
|
+
} catch (e) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Instagram
|
|
160
|
+
|
|
161
|
+
**Platform ID:** `mobile-instagram` (data connector) / `instagram` (OAuth)
|
|
162
|
+
**Data Type:** Social
|
|
163
|
+
|
|
164
|
+
### Authentication
|
|
165
|
+
|
|
166
|
+
| Key | Storage | Notes |
|
|
167
|
+
|-----|---------|-------|
|
|
168
|
+
| `csrftoken` | Cookie | CSRF token for POST requests |
|
|
169
|
+
| `sessionid` | Cookie | Session authentication |
|
|
170
|
+
| `X-IG-App-ID` | Header | `936619743392459` |
|
|
171
|
+
| `__bkv` | URL param | Bloks version: `cc4d2103131ee3bbc02c20a86f633b7fb7a031cbf515d12d81e0c8ae7af305dd` |
|
|
172
|
+
|
|
173
|
+
**Token Expiry:** Session-based (tied to browser session cookie)
|
|
174
|
+
|
|
175
|
+
### APIs
|
|
176
|
+
|
|
177
|
+
| API | Endpoint | Method | Data Retrieved |
|
|
178
|
+
|-----|----------|--------|----------------|
|
|
179
|
+
| **Liked Media (Bloks)** | `/async/wbloks/fetch/` | POST | Liked posts via Bloks framework |
|
|
180
|
+
| **Saved Posts** | `/api/v1/feed/saved/posts/` | GET | Saved posts with media, captions, owner info |
|
|
181
|
+
| **Timeline (GraphQL)** | `/graphql/query` | POST | Feed timeline with media, captions, engagement |
|
|
182
|
+
|
|
183
|
+
### Bloks API (Liked Media)
|
|
184
|
+
|
|
185
|
+
**Endpoint:**
|
|
186
|
+
```
|
|
187
|
+
POST https://www.instagram.com/async/wbloks/fetch/?appid=com.instagram.privacy.activity_center.liked_media_screen&type=app&__bkv={bloksVersionId}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Request Body:** `application/x-www-form-urlencoded`
|
|
191
|
+
```
|
|
192
|
+
params=%7B%7D
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Response Format:**
|
|
196
|
+
```javascript
|
|
197
|
+
for (;;);{"__ar":1,"rid":"...","payload":{"layout":{"bloks_payload":{"data":[
|
|
198
|
+
{"id":"440463611_0","type":"gs","data":{...}},
|
|
199
|
+
...
|
|
200
|
+
]}}}}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Note:** Response has `for (;;);` prefix (anti-JSON hijacking) that must be stripped before JSON.parse()
|
|
204
|
+
|
|
205
|
+
**Parsing the Bloks payload:**
|
|
206
|
+
```javascript
|
|
207
|
+
function parseLikedMedia(data) {
|
|
208
|
+
var likes = [];
|
|
209
|
+
if (data && data.payload && data.payload.layout && data.payload.layout.bloks_payload) {
|
|
210
|
+
var bloksData = data.payload.layout.bloks_payload.data || [];
|
|
211
|
+
bloksData.forEach(function(item, idx) {
|
|
212
|
+
// Bloks items have varying structures
|
|
213
|
+
if (item.type === 'media' || item.type === 'ig' || item.data) {
|
|
214
|
+
likes.push({
|
|
215
|
+
id: item.id || 'like_' + idx,
|
|
216
|
+
type: 'like',
|
|
217
|
+
rawData: item.data,
|
|
218
|
+
bloksType: item.type
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
return likes;
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**⚠️ Bloks Caveat:** The Bloks payload structure is complex and may vary. The `data` array contains UI component definitions, not clean media objects. You may need to recursively parse to extract actual media IDs.
|
|
228
|
+
|
|
229
|
+
### Saved Posts API
|
|
230
|
+
|
|
231
|
+
**Endpoint:**
|
|
232
|
+
```
|
|
233
|
+
GET https://www.instagram.com/api/v1/feed/saved/posts/
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Response Format:**
|
|
237
|
+
```javascript
|
|
238
|
+
{
|
|
239
|
+
"items": [
|
|
240
|
+
{
|
|
241
|
+
"media": {
|
|
242
|
+
"id": "...",
|
|
243
|
+
"pk": "...",
|
|
244
|
+
"code": "...",
|
|
245
|
+
"media_type": 1,
|
|
246
|
+
"caption": { "text": "..." },
|
|
247
|
+
"user": { "pk": "...", "username": "..." },
|
|
248
|
+
"like_count": 123,
|
|
249
|
+
"comment_count": 45,
|
|
250
|
+
"taken_at": 1706123456,
|
|
251
|
+
"image_versions2": { "candidates": [{ "url": "..." }] }
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"more_available": true,
|
|
256
|
+
"next_max_id": "..."
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### GraphQL API (Timeline)
|
|
261
|
+
|
|
262
|
+
**Endpoint:**
|
|
263
|
+
```
|
|
264
|
+
POST https://www.instagram.com/graphql/query
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Request Body:** `application/x-www-form-urlencoded`
|
|
268
|
+
```
|
|
269
|
+
doc_id=8845758582119845&variables={"first":12,"after":null}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Response Format:**
|
|
273
|
+
```javascript
|
|
274
|
+
{
|
|
275
|
+
"data": {
|
|
276
|
+
"xdt_api__v1__feed__timeline__connection": {
|
|
277
|
+
"pagination_source": null,
|
|
278
|
+
"edges": [
|
|
279
|
+
{
|
|
280
|
+
"node": {
|
|
281
|
+
"media": {
|
|
282
|
+
"id": "3820598654428293407_10139962",
|
|
283
|
+
"pk": "3820598654428293407",
|
|
284
|
+
"code": "...",
|
|
285
|
+
"media_type": 1,
|
|
286
|
+
"caption": { "text": "..." },
|
|
287
|
+
"user": { "pk": "...", "username": "..." },
|
|
288
|
+
"like_count": 123,
|
|
289
|
+
"comment_count": 45,
|
|
290
|
+
"taken_at": 1706123456,
|
|
291
|
+
"image_versions2": { "candidates": [{ "url": "..." }] }
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Required Headers
|
|
302
|
+
|
|
303
|
+
```javascript
|
|
304
|
+
{
|
|
305
|
+
'Accept': '*/*',
|
|
306
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
307
|
+
'X-CSRFToken': csrfToken,
|
|
308
|
+
'X-IG-App-ID': '936619743392459',
|
|
309
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
310
|
+
'X-ASBD-ID': '129477',
|
|
311
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Data Extracted
|
|
316
|
+
|
|
317
|
+
**Liked Media:**
|
|
318
|
+
- Post IDs
|
|
319
|
+
- Bloks payload data (varies by content type)
|
|
320
|
+
|
|
321
|
+
**Saved Posts:**
|
|
322
|
+
- `id`, `pk`, `code` (shortcode for URL)
|
|
323
|
+
- `mediaType` (1=image, 2=video, 8=carousel)
|
|
324
|
+
- `caption` text
|
|
325
|
+
- `owner` (user info: id, username, full name)
|
|
326
|
+
- `likeCount`, `commentCount`
|
|
327
|
+
- `takenAt` (Unix timestamp)
|
|
328
|
+
- `imageUrl` (best quality candidate)
|
|
329
|
+
|
|
330
|
+
**Timeline:**
|
|
331
|
+
- `id`, `pk`, `code` (shortcode for URL)
|
|
332
|
+
- `mediaType` (1=image, 2=video, 8=carousel)
|
|
333
|
+
- `caption` text
|
|
334
|
+
- `owner` (user info: id, username, full name)
|
|
335
|
+
- `likeCount`, `commentCount`
|
|
336
|
+
- `takenAt` (Unix timestamp)
|
|
337
|
+
- `imageUrl` (best quality candidate)
|
|
338
|
+
|
|
339
|
+
### User ID Extraction
|
|
340
|
+
|
|
341
|
+
Instagram requires the user's ID for some operations. Extract from page state:
|
|
342
|
+
|
|
343
|
+
```javascript
|
|
344
|
+
function getUserId() {
|
|
345
|
+
// Method 1: window._sharedData (older pages)
|
|
346
|
+
if (window._sharedData && window._sharedData.config) {
|
|
347
|
+
return window._sharedData.config.viewerId;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Method 2: window.__initialData (newer pages)
|
|
351
|
+
if (window.__initialData && window.__initialData.data && window.__initialData.data.user) {
|
|
352
|
+
return window.__initialData.data.user.id;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Method 3: Script tag parsing (fallback)
|
|
356
|
+
var scripts = document.querySelectorAll('script');
|
|
357
|
+
for (var i = 0; i < scripts.length; i++) {
|
|
358
|
+
var text = scripts[i].textContent || '';
|
|
359
|
+
var match = text.match(/"userId":"(\d+)"/);
|
|
360
|
+
if (match) return match[1];
|
|
361
|
+
match = text.match(/"viewerId":"(\d+)"/);
|
|
362
|
+
if (match) return match[1];
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Bloks Version ID
|
|
370
|
+
|
|
371
|
+
The `__bkv` parameter is a hash that may change with Instagram updates.
|
|
372
|
+
|
|
373
|
+
**Current value:** `cc4d2103131ee3bbc02c20a86f633b7fb7a031cbf515d12d81e0c8ae7af305dd`
|
|
374
|
+
|
|
375
|
+
**To find current value:**
|
|
376
|
+
1. Open Instagram DevTools → Network tab
|
|
377
|
+
2. Navigate to Your Activity → Likes
|
|
378
|
+
3. Look for requests to `/async/wbloks/fetch/`
|
|
379
|
+
4. Copy `__bkv` value from URL
|
|
380
|
+
|
|
381
|
+
### Pagination
|
|
382
|
+
|
|
383
|
+
**Saved Posts:**
|
|
384
|
+
```javascript
|
|
385
|
+
// First request
|
|
386
|
+
GET /api/v1/feed/saved/posts/
|
|
387
|
+
|
|
388
|
+
// Subsequent requests (if more_available: true)
|
|
389
|
+
GET /api/v1/feed/saved/posts/?max_id={next_max_id}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**GraphQL Timeline:**
|
|
393
|
+
```javascript
|
|
394
|
+
// First request
|
|
395
|
+
doc_id=8845758582119845&variables={"first":12,"after":null}
|
|
396
|
+
|
|
397
|
+
// Subsequent requests
|
|
398
|
+
doc_id=8845758582119845&variables={"first":12,"after":"{end_cursor}"}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
The `end_cursor` comes from `pageInfo.end_cursor` in the response.
|
|
402
|
+
|
|
403
|
+
### Cookie Extraction Helper
|
|
404
|
+
|
|
405
|
+
```javascript
|
|
406
|
+
function getCookie(name) {
|
|
407
|
+
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
|
408
|
+
return match ? match[2] : null;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Usage
|
|
412
|
+
var csrfToken = getCookie('csrftoken');
|
|
413
|
+
var sessionId = getCookie('sessionid');
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## Hinge
|
|
419
|
+
|
|
420
|
+
**Platform ID:** `mobile-hinge`
|
|
421
|
+
**Data Type:** Dating
|
|
422
|
+
|
|
423
|
+
### Authentication
|
|
424
|
+
|
|
425
|
+
| Key | Storage | Notes |
|
|
426
|
+
|-----|---------|-------|
|
|
427
|
+
| `auth_token` | Cookie/localStorage | TBD - need to confirm |
|
|
428
|
+
| `hinge_auth_token` | Cookie | Fallback |
|
|
429
|
+
|
|
430
|
+
### APIs
|
|
431
|
+
|
|
432
|
+
| API | Endpoint | Data Retrieved |
|
|
433
|
+
|-----|----------|----------------|
|
|
434
|
+
| TBD | TBD | Matches, messages |
|
|
435
|
+
|
|
436
|
+
### Data Extracted
|
|
437
|
+
- Matches (profiles)
|
|
438
|
+
- Messages/chat history
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## Token Expiry Reference
|
|
443
|
+
|
|
444
|
+
| Platform | Token Lifetime | Refresh Mechanism |
|
|
445
|
+
|----------|---------------|-------------------|
|
|
446
|
+
| **Sephora** | ~150 days | Auto-refresh on site visit, `refreshToken` in localStorage |
|
|
447
|
+
| **Instagram** | Session-based | Tied to browser `sessionid` cookie, refreshes on site activity |
|
|
448
|
+
| **Hinge** | TBD | TBD |
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Common Request Headers
|
|
453
|
+
|
|
454
|
+
All platforms require:
|
|
455
|
+
```javascript
|
|
456
|
+
{
|
|
457
|
+
'Accept': 'application/json',
|
|
458
|
+
'Content-Type': 'application/json',
|
|
459
|
+
'credentials': 'include' // for cookies
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Platform-specific headers are added per connector.
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Onairos Backend Endpoint
|
|
468
|
+
|
|
469
|
+
All extracted data is sent to:
|
|
470
|
+
```
|
|
471
|
+
POST https://api2.onairos.uk/platform-data/store
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
With headers:
|
|
475
|
+
```javascript
|
|
476
|
+
{
|
|
477
|
+
'Content-Type': 'application/json',
|
|
478
|
+
'Authorization': 'Bearer <onairos_user_token>'
|
|
479
|
+
}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
Payload structure:
|
|
483
|
+
```javascript
|
|
484
|
+
{
|
|
485
|
+
platform: 'mobile-sephora', // platform ID
|
|
486
|
+
dataType: 'ecommerce', // data category
|
|
487
|
+
data: { ... }, // extracted data
|
|
488
|
+
summary: { ... }, // quick stats
|
|
489
|
+
mobileMetadata: {
|
|
490
|
+
platform: 'web',
|
|
491
|
+
source: 'bookmarklet-api',
|
|
492
|
+
extractedAt: 'ISO timestamp',
|
|
493
|
+
tokenExpiry: { ... } // token expiry info
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## Rate Limits & Best Practices
|
|
501
|
+
|
|
502
|
+
### General Guidelines
|
|
503
|
+
|
|
504
|
+
| Platform | Rate Limit | Recommendation |
|
|
505
|
+
|----------|------------|----------------|
|
|
506
|
+
| **Sephora** | Unknown (generous) | Max 10 requests per extraction |
|
|
507
|
+
| **Instagram** | Strict (anti-bot) | Max 3-5 requests, add delays |
|
|
508
|
+
| **Hinge** | TBD | TBD |
|
|
509
|
+
|
|
510
|
+
### Implementation Tips
|
|
511
|
+
|
|
512
|
+
1. **Parallel requests** - Use `Promise.all()` for independent API calls
|
|
513
|
+
2. **Error handling** - Gracefully handle 401/403 (re-auth needed), 429 (rate limited)
|
|
514
|
+
3. **Credentials** - Always include `credentials: 'include'` for cookie-based auth
|
|
515
|
+
4. **CORS** - These APIs work from same-origin (bookmarklet on the site), not cross-origin
|
|
516
|
+
|
|
517
|
+
### Response Parsing
|
|
518
|
+
|
|
519
|
+
**Instagram Bloks (strip prefix):**
|
|
520
|
+
```javascript
|
|
521
|
+
function parseBloksResponse(text) {
|
|
522
|
+
if (text.startsWith('for (;;);')) {
|
|
523
|
+
text = text.substring(9);
|
|
524
|
+
}
|
|
525
|
+
return JSON.parse(text);
|
|
526
|
+
}
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
**Sephora (standard JSON):**
|
|
530
|
+
```javascript
|
|
531
|
+
var data = await response.json();
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
### Error Codes
|
|
535
|
+
|
|
536
|
+
| Code | Meaning | Action |
|
|
537
|
+
|------|---------|--------|
|
|
538
|
+
| 200 | Success | Parse response |
|
|
539
|
+
| 401 | Unauthorized | Token expired, prompt re-login |
|
|
540
|
+
| 403 | Forbidden | Blocked/banned, try later |
|
|
541
|
+
| 429 | Rate Limited | Wait and retry |
|
|
542
|
+
| 500+ | Server Error | Retry with backoff |
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## Quick Implementation Checklist
|
|
547
|
+
|
|
548
|
+
For each platform connector:
|
|
549
|
+
|
|
550
|
+
- [ ] Verify user is on correct domain
|
|
551
|
+
- [ ] Show consent popup
|
|
552
|
+
- [ ] Extract auth token(s)
|
|
553
|
+
- [ ] Check token validity/expiry
|
|
554
|
+
- [ ] Call APIs with proper headers
|
|
555
|
+
- [ ] Parse responses
|
|
556
|
+
- [ ] Build normalized payload
|
|
557
|
+
- [ ] Send to Onairos backend
|
|
558
|
+
- [ ] Show success/error message
|
|
559
|
+
|
package/lib/module/config/api.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{getAuthToken}from'../services/authService';export const API_CONFIG={'BASE_URL':'https://api2.onairos.uk','ENDPOINTS':{'AUTH':_0x2cef(0x0),'USER':_0x2cef(0x1),'CONNECTIONS':'/connections','TRAINING':_0x2cef(0x2),'OAUTH':_0x2cef(0x3)},'TIMEOUT':0x7530};export const getApiHeaders=()=>({'Content-Type':'application/json','Accept':'application/json'});function _0x2cef(_0x351cfc,_0x2cef4e){_0x351cfc=_0x351cfc-0x0;const _0x5b2062=_0x351c();let _0x35c162=_0x5b2062[_0x351cfc];return _0x35c162;}export const getAuthHeaders=_0x147359=>({...getApiHeaders(),..._0x147359&&{'Authorization':_0x2cef(0x4)+_0x147359}});export const getUserAuthHeaders=async()=>{const _0xb2ba4c={'ViVfO':'User\x20not\x20authenticated\x20-\x20no\x20JWT\x20token\x20found','iHOca':function(_0x198691){return _0x198691();}},_0x217447=await getAuthToken();if(!_0x217447)throw new Error(_0xb2ba4c[_0x2cef(0x5)]);return{..._0xb2ba4c[_0x2cef(0x6)](getApiHeaders),'Authorization':_0x2cef(0x4)+_0x217447};};function _0x351c(){const _0x469b0d=['/auth','/user','/training','/oauth','Bearer\x20','ViVfO','iHOca'];_0x351c=function(){return _0x469b0d;};return _0x351c();}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
// Onairos SDK - Asset Registry (auto-generated)
|
|
3
|
+
var __ONAIROS_REQ_REGISTRY__ = [
|
|
4
|
+
require('telegram'),
|
|
5
|
+
require('telegram/sessions')
|
|
6
|
+
];
|
|
7
|
+
function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
|
|
8
|
+
export const TELEGRAM_API_CONFIG={'API_ID':0x1fb8026,'API_HASH':'4b76b3a34aa0f56d8a8971db097a2ae3','APP_TITLE':_0x152c(0x0),'SHORT_NAME':_0x152c(0x0)};export const TELEGRAM_SERVERS={'production':{'host':_0x152c(0x1),'port':0x1bb,'dc':0x2},'test':{'host':'149.154.167.40','port':0x1bb,'dc':0x2}};function _0x47de(){const _0x5437a8=['Onairos','149.154.167.50','-----BEGIN\x20RSA\x20PUBLIC\x20KEY-----\x0aMIIBCgKCAQEA6LszBcC1LGzyr992NzE0ieY+BSaOW622Aa9Bd4ZHLl+TuFQ4lo4g\x0a5nKaMBwK/BIb9xUfg0Q29/2mgIR6Zr9krM7HjuIcCzFvDtr+L0GQjae9H0pRB2OO\x0a62cECs5HKhT5DZ98K33vmWiLowc621dQuwKWSQKjWf50XYFw42h21P2KXUGyp2y/\x0a+aEyZ+uVgLLQbRA1dEjSDZ2iGRy12Mk5gpYc397aYp438fsJoHIgJ2lgMv5h7WY9\x0at6N/byY9Nw9p21Og3AoXSL2q/2IJ1WRUhebgAdGVMlV1fkuOQoEzR7EdpqtQD9Cs\x0a5+bfo3Nhmcyvk5ftB0WkJ9z6bNZ7yxrP8wIDAQAB\x0a-----END\x20RSA\x20PUBLIC\x20KEY-----','-----BEGIN\x20RSA\x20PUBLIC\x20KEY-----\x0aMIIBCgKCAQEAyMEdY1aR+sCR3ZSJrtztKTKqigvO/vBfqACJLZtS7QMgCGXJ6XIR\x0ayy7mx66W0/sOFa7/1mAZtEoIokDP3ShoqF4fVNb6XeqgQfaUHd8wJpDWHcR2OFwv\x0aplUUI1PLTktZ9uW2WE23b+ixNwJjJGwBDJPQEQFBE+vfmH0JP503wr5INS1poWg/\x0aj25sIWeYPHYeOrFp/eXaqhISP6G+q2IeTaWTXpwZj4LzXq5YOpk4bYEQ6mvRq7D1\x0aaHWfYmlEGepfaYR8Q0YqvvhYtMte3ITnuSJs171+GDqpdKcSwHnd6FudwGO4pcCO\x0aj4WcDuXc2CTHgH8gFTNhp/Y8/SpDOhvn9QIDAQAB\x0a-----END\x20RSA\x20PUBLIC\x20KEY-----','full_access_after_auth','messages.getDialogs','See\x20comment\x20above'];_0x47de=function(){return _0x5437a8;};return _0x47de();}export const TELEGRAM_PUBLIC_KEY_PRODUCTION=_0x152c(0x2);export const TELEGRAM_PUBLIC_KEY_TEST=_0x152c(0x3);export const TELEGRAM_ACCESS_INFO={'hasOAuthScopes':![],'accessModel':_0x152c(0x4),'dataExtracted':{'dialogs':!![],'userMessages':!![],'otherMessages':![],'secretChats':![],'media':![],'contacts':![]},'apiMethods':[_0x152c(0x5),'messages.getHistory']};function _0x152c(_0x47de24,_0x152c92){_0x47de24=_0x47de24-0x0;const _0x1e5c67=_0x47de();let _0x5f2d4d=_0x1e5c67[_0x47de24];return _0x5f2d4d;}export const PYTHON_EXAMPLE=_0x152c(0x6);export const NODEJS_EXAMPLE=_0x152c(0x6);
|